Millisecond Forums

dot probe

https://forums.millisecond.com/Topic15868.aspx

By jens - 3/29/2015

Hello,

a dot-probe experiment that I am programming does not run the way I intend it to run and I cannot find the error. I tried to use four list-elements to present the probe "F" and "J" equally often on the left side or the right side of the screen and equally often preceded by an emotion word or a non-emotion word. However, I do not get the wanted distribution. Given that sometimes "A" or "B" is presented as a probe indicates that the if-construction is sometimes not evaluated. But why?

Best regards Jens
By Dave - 3/29/2015

In your <trial> elements, you are constantly *inserting* items into the probe <text> elements:

<trial t.neg.word.left>
/ ontrialbegin = [if (list.posi.probe.neg.left.nextvalue == 1)      {text.probe.left.hposition = values.links; values.pos = values.links; text.probe.left.insertitem("F", 1)}
                  else if (list.posi.probe.neg.left.nextvalue == 2) {text.probe.left.hposition = values.rechts; values.pos = values.rechts; text.probe.left.insertitem("F", 1)}
                  else if (list.posi.probe.neg.left.nextvalue == 3) {text.probe.left.hposition = values.links; values.pos = values.links; text.probe.left.insertitem("J", 1)}
                  else if (list.posi.probe.neg.left.nextvalue == 4) {text.probe.left.hposition = values.rechts; values.pos = values.rechts; text.probe.left.insertitem("J", 1)}]

Inserting an item does *not* remove any items that are already there. Since the <text> elements sample randomly without replacement, the already existing items ("A", "B") may eventually be sampled.

You don't want to use insertitem(). What you want to use is the setitem() function.
By jens - 3/29/2015

Hello,

ok, when I use setitem the probe is displayed with "".

<trial t.neg.word.left>
/ontrialbegin = [if (list.posi.probe.neg.left.nextvalue == 1)      {text.probe.left.hposition = values.links; values.pos = values.links; text.probe.left.setitem("F", 1)}
                  else if (list.posi.probe.neg.left.nextvalue == 2) {text.probe.left.hposition = values.rechts; values.pos = values.rechts; text.probe.left.setitem("F", 1)}
                  else if (list.posi.probe.neg.left.nextvalue == 3) {text.probe.left.hposition = values.links; values.pos = values.links; text.probe.left.setitem("J", 1)}
                  else if (list.posi.probe.neg.left.nextvalue == 4) {text.probe.left.hposition = values.rechts; values.pos = values.rechts; text.probe.left.setitem("J", 1)}]
/stimulusframes = [ 1 = fixation; 30 = maske; 31 = neg.word.left.tar, neg.word.left.dis; 42 = maske; 43 = probe.left ]
/validresponse = ("F", "J")
/iscorrectresponse = [if (text.probe.left.currentitem == "F") {values.korrekt = 33} else {values.korrekt = 36}]
/timeout = 3000
</trial>

By Dave - 3/29/2015

Shouldn't happen if your Inquisit installation is up to date.
By jens - 3/29/2015

Hello,

I update to 4.0.7 from 4.0.2 and the quotes disappeared. Thanks a lot.

Jens
By Dave - 3/29/2015

Please note that the current release is 4.0.8.0, available (as always) via

https://www.millisecond.com/download
By jens - 3/29/2015

Hello Dave,

I will inform our IT about the new release.
By jens - 3/30/2015

Hello,

the evaluation no longer works.
<trial t.neg.word.right>
/ontrialbegin = [if (list.posi.probe.neg.right.nextvalue == 1)      {text.probe.right.hposition = values.links; values.pos = values.links; text.probe.right.setitem("F",1)}
                  else if (list.posi.probe.neg.right.nextvalue == 2) {text.probe.right.hposition = values.rechts; values.pos = values.rechts; text.probe.right.setitem("F",1)}
                  else if (list.posi.probe.neg.right.nextvalue == 3) {text.probe.right.hposition = values.links; values.pos = values.links; text.probe.right.setitem("J",1)}
                  else if (list.posi.probe.neg.right.nextvalue == 4) {text.probe.right.hposition = values.rechts; values.pos = values.rechts; text.probe.right.setitem("J",1)}]
/stimulusframes = [ 1 = fixation; 30 = maske; 31 = neg.word.right.tar, neg.word.right.dis; 42 = maske; 43 = probe.right ]
/validresponse = ("F", "J")
/iscorrectresponse = [if (text.probe.right.currentitem == "F"){values.korrekt = 36} else {values.korrekt = 33}]
/timeout = 3000
</trial>


/iscorrectresponse = [if (text.probe.right.currentitem == "F"){values.korrekt = 36} else {values.korrekt = 33}] always evaluates to 1 but it should evaluate to 0 in row 2 or row 4 of the data file (or the assignment of values.korrekt is incorrect).
subject    blockcode    trialnum    trialcode    latency    response    correct    values.korrekt    values.pos    stimulusitem1    stimulusitem2    stimulusitem3    stimulusitem4    stimulusitem5    stimulusitem6
1    block.pos    1    t.pos.word.right    512    33    1    33    60pct    *    maske    genial    Koran    maske    J
1    block.pos    2    t.pos.word.left    510    36    1    33    40pct    *    maske    Jubel    Metzger    maske    J
1    block.pos    3    t.pos.word.right    498    36    1    36    60pct    *    maske    Busen    heroisch    maske    F
1    block.pos    4    t.pos.word.left    484    33    1    36    60pct    *    maske    brilliant    Umbruch    maske    F
I
Best Jens
By Dave - 3/30/2015

Jens,

/iscorrectresponse = [if (text.probe.right.currentitem == "F"){values.korrekt = 36} else {values.korrekt = 33}]

cannot work because you never check values.korrekt against the trial's response property.
By Dave - 3/30/2015

c.f. https://www.millisecond.com/forums/FindPost15825.aspx
By jens - 3/30/2015

Well,

that was stupid. I somehow deleted the relevant part of the comparison from the code.

Best Jens
By jens - 3/30/2015

Hello,

I use the monkey to test run the attached experiment. As you can see I set the percentcorrect (of the monkey) to 90%. However, the monkey produces much more errors than 90%. So, I wonder whether I still have a programming error? Hints are welcome.

Best regards Jens
By Dave - 3/30/2015

If you have complex response validation logic in /iscorrectresponse, the monkey has trouble handling that and won't necessarily achieve whatever you configured in the <monkey> element.