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.
|