counterbalancing with lists


Author
Message
jm560@sussex.ac.uk
jm560@sussex.ac.uk
Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)Distinguished Member (2.8K reputation)
Group: Forum Members
Posts: 25, Visits: 208
Hi,

I have a counterbalancing problem on my visual search task I am not sure how to fix.

My task has 12 different types of trials in a block (two different target letters each in 6 possible positions). The trials must be randomly selected (which they are). The unselected other 5 locations are filled by filler letters - picked from 5 lists. Two of the filler letters are actual letters and three are small O's. The filler letters are counterbalanced with each other so there are 48 combinations each - this is done by randomly selecting the first letter and then the other lists select from list.1.currentindex.

But I made a mistake as the filler letter identity and positions are not connected to the position of the target letter (the trial). I need the filler letters to  be next to the target letter I.e if the target is in pos 1 then filler letter 1 will be in pos 2 and filler letter 2 will be in pos 3 (so they are both next to the target letter and not separated by small O filler letters). I also need the trial to be linked to the filler letter order.

So that on list s3filler1 below. Every 6th letter is presented on trial.set3X1 (also below) (so the 1st, 6th, 13th and so on) and this letter is always presented in position 2.

<list s3filler1>
/ items = (picture.H1, picture.Z1, picture.O1, picture.M1, picture.K1, picture.O1, picture.W1, picture.H1, picture.O1, picture.Z1, picture.K1, picture.O1, picture.M1, picture.W1, picture.O1, picture.H1, picture.Z1, picture.O1, picture.M1, picture.K1,
picture.O1, picture.W1, picture.H1, picture.O1, picture.Z1, picture.K1, picture.O1, picture.M1, picture.W1, picture.O1, picture.H1, picture.Z1, picture.O1, picture.M1, picture.K1, picture.O1, picture.W1, picture.H1, picture.O1, picture.Z1, picture.K1,
picture.O1, picture.M1, picture.W1, picture.O1, picture.Z1, picture.K1, picture.O1)
/ select = random
</list>

<trial set3X1>
/ ontrialbegin = [
values.valid = 0;
values.validcorrect = 0;
values.trialcount += 1]
/ ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler1.nextvalue,500);]
/ ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler2.nextvalue,500);]
/ ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler3.nextvalue,500);]
/ ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler4.nextvalue,500);]
/ ontrialbegin = [trial.set3X1.insertstimulustime(list.s3filler5.nextvalue,500);]
/ ontrialbegin = [values.fillerhpos1 = expressions.hp2]
/ ontrialbegin = [values.fillerhpos2 = expressions.hp3]
/ ontrialbegin = [values.fillerhpos3 = expressions.hp4]
/ ontrialbegin = [values.fillerhpos4 = expressions.hp5]
/ ontrialbegin = [values.fillerhpos5 = expressions.hp6]
/ ontrialbegin = [values.fillervpos1 = expressions.vp2]
/ ontrialbegin = [values.fillervpos2 = expressions.vp3]
/ ontrialbegin = [values.fillervpos3 = expressions.vp4]
/ ontrialbegin = [values.fillervpos4 = expressions.vp5]
/ ontrialbegin = [values.fillervpos5 = expressions.vp6]
/ ontrialbegin = [trial.set3X1.insertstimulustime(list.distractorX1.nextvalue,500);]
/ ontrialbegin = [values.distractor = list.distractorX1.currentvalue;]
/ ontrialbegin = [
if (contains(list.distractorX1.currentvalue, ".X")) expressions.category = "congruent"
  else if (contains(list.distractorX1.currentvalue, ".N")) expressions.category = "incongruent";
]
/ ontrialbegin = [
if (expressions.category== "congruent") values.count_congruent += 1;
  else if (expressions.category== "incongruent") values.count_incongruent += 1;
]
/ ontrialend = [trial.set3X1.resetstimulusframes(); ]
/ stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1); 600=sequence (eraser1, eraser2, eraser3, eraser4, eraser5, eraser6, eraserleft, eraserright)]
/ validresponse = ("J", "I")
/ correctresponse = ("J")
/ response = timeout(2000)
/ beginresponsetime = 500
/ ontrialend = [
if (trial.set3X1.latency >= parameters.minimum_latency)
values.valid = 1;
if (values.valid == 1) {
if (trial.set3X1.correct) {
values.validcorrect = 1;
values.sumcorrect += 1;
values.sumrt += trial.set3X1.latency
if (expressions.category == "congruent") {
values.sumcorrect_congruent += 1;
values.sumrt_congruent += trial.set3X1.latency;
list.latencies_congruent.insertitem(trial.set3X1.latency, 1);
list.latencies.insertitem(trial.set3X1.latency, 1);
} else {
values.sumcorrect_incongruent += 1;
values.sumrt_incongruent += trial.set3X1.latency;
list.latencies_incongruent.insertitem(trial.set3X1.latency, 1);
list.latencies.insertitem(trial.set3X1.latency, 1);
}
}
} ;
list.accuracy.insertitem(values.validcorrect, 1);
values.testeracc = list.accuracy.currentindex
if (expressions.category == "congruent") {
list.accuracy_congruent.insertitem(values.validcorrect, 1);
} else {
list.accuracy_incongruent.insertitem(values.validcorrect, 1);
};
]
</trial>

If there a way of using more lists to link these together?

I have attached the whole script too (with supporting files)

Thanks
Attachments
AbsoluteSizing.iqx (551 views, 8.00 KB)
SET 3.iqx (577 views, 75.00 KB)
example3.png (550 views, 1.00 KB)
H.png (576 views, 240 bytes)
K.png (570 views, 336 bytes)
M.png (563 views, 344 bytes)
M.png (550 views, 344 bytes)
N.png (507 views, 342 bytes)
Ndis.png (633 views, 384 bytes)
O.png (570 views, 331 bytes)
W.png (569 views, 355 bytes)
X.png (583 views, 339 bytes)
Xdis.png (556 views, 382 bytes)
Z.png (559 views, 254 bytes)
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...





Reading This Topic

Explore
Messages
Mentions
Search