Millisecond Forums

Equal Numbers of Conditions in Within-subjects Experiment

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

By ldb24 - 12/18/2013

I’m having trouble with something that I feel is probablyeasier than I’m making it out to be. I have an experiment with 4 differentconditions (within-subjects): number of stimuli to present (1 or 4), the typeof intervening stimuli (2 types), if one of the stimuli changes after a briefinterval (same or different), and the length of the post-trial pause (5 optionsin ms). So that is a 2 x 2 x 2 x 5, or 40 different combinations

I want 10 trials of each combination. I do have a workingversion of the script but I was only able to get it to run without having anequal number in each condition. To do that, I made a list of each condition andassigned the current value to the appropriate values variable, like this (justshorter):

<list numberofobjects>

/items = (1,1,1,1,1,4,4,4,4,4)

/replace = false

/selectionmode = random

</list>

 

<list sameordifferent>

/items = (1,1,1,1,1,2,2,2,2,2)

/replace = false

/selectionmode = random

</list>

 <list interveningstimulustype>

/items = (1,1,1,1,1,2,2,2,2,2)

/replace = false

/selectionmode = random

</list>

<list posttrialpauses>

/items = (10,20,30,40,50,10,20,30,40,50)

/replace = false

/selectionmode = random

</list>


<values>

/numobjects = 0

/sameordiff = 0

/stimtype = 0

/ptp = 0

</values>

<trial studystimuli>

/ontrialbegin = [values.numobjects =list.numberofobjects.nextvalue; values.sameordiff =list.sameordifferent.nextvalue; values.stimtype =list.interveningstimulustype.nextvalue; values.ptp =list.posttrialpause.nextvalue]

/ontrialbegin = [if (values.numberofobjects >= 1)trial.studyarray.insertstimulusframe(picture.object1, 1)]

/ontrialbegin = [if (values.numberofobjects >= 2)trial.studyarray.insertstimulusframe(picture.object2, 1)]

/ontrialbegin = [if (values.numberofobjects >= 3)trial.studyarray.insertstimulusframe(picture.object3, 1)]

/ontrialbegin = [if (values.numberofobjects >= 4)trial.studyarray.insertstimulusframe(picture.object4, 1)]

/ontrialend = [trial.studyarray.resetstimulusframes()]

/timeout = 1000

/posttrialpause = values.ptp

/branch = [if(values.stimtype == 1) trial.maskingstimuli1else trial.maskingstimuli2]

</trial>

<trial maskingstimuli1>

/stimulusframes = [1 = somestimulihere]

/branch = [if(values.sameordiff == 1) trial.sametrial elsetrial.different trial]

</trial>

 <trial maskingstimuli2>

/stimulusframes = [1 = somestimulihere]

/branch = [if(values.sameordiff == 1) trial.sametrial elsetrial.different trial]

</trial>

 I thought I could do something like this, where I have onelist where all the conditions are paired together and then select items withinthe items:

 <list conditionslist>

/items = (1,1,2,10; 1,1,2,20; 1,1,2,30; 1,1,2,40; 1,1,2,50)

/replace = false

/selectionmode = random

</list>

But I’m not sure how to do that. I’ve tried a few things,like taking an item from that list (item being a string like 1,1,2,10), puttingit into another list and trying to use the list.currentconditions.item(1)function:

<list conditionslist>

/items = (1,1,2,10; 1,1,2,20; 1,1,2,30; 1,1,2,40; 1,1,2,50)

/replace = false

/selectionmode = random

</list>

 <list currentconditions>

/replace = false

/selectionmode = random

</list>

<trial example>


/ontrialbegin = [list.currentconditions.items =list.conditionslist.nextvalue]

/ontrialbegin = [values.numobjects = list.currentconditions.item(1);values.sameordiff = list.currentconditions.item(2); values.stimtype = list.currentconditions.item(3);values.ptp = list.currentconditions.item4)]

</trial>

But when I do that, I either get no stimuli or get errorslike didn’t call the items function for list.currentconditions.

I am fairly new to Inquisit, so maybe there is anotherfunction I should be using here to ensure I get equal numbers of each combinationof conditions?

Thanks in advance.

Lisa

By Dave - 12/18/2013

You indeed need to properly pair your list elements. See the "How to display stimulus pairs" topic in the documentation. The example therein uses <text> elements, but pairing <list>s works exactly the same.
By ldb24 - 12/19/2013

Aha, just what I needed. Thanks for the direction.