Millisecond Forums

unevenly sized lists for stimulusitems

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

By jdb - 2/23/2017

I have a question about item selection!
I have two types of trials, call them "core" and "varying" trials:
<trial core>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivecore, negativecore)]
/ response = free
</trial>

<trial varying1>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivevarying1, negativevarying1)]
/ response = free
</trial>

<trial varying2>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivevarying2, negativevarying2)]
/ response = free
</trial>

The thing is that for each block, there should be 8 core trials for every 1 varying trial (there are 80 core items and 10 varying items). I tried using a list:
<list trials>
/items = (trial.core, trialvarying1)
/poolsize = 90
/selectionmode = random
</list>

Calling that list in a block doesn't wind up with the list doing anything – I end up with 45 core trials and 45 varying trials – not what I want. I thought about using /itemprobabilities = [.888888; .2222222] but that seems like it's not really what I mean to do. I could also potentially repeat the items in the list?
/items = (trial.core, trial.core, trial.core, trial.core, trial.core, trial.core,
     trial.core, trial.core, trialvarying1)

Anyway, I've re-ran the experiment so many times at this point that I figured I would ask for help. Anyone have a solution for this? I realize that maybe the simplest solution is to just make separate word lists (not have a core, and instead just put it in each of the other word lists) but that didn't occur to me until after I had spent a while debugging and at this point I'm feeling stubborn.
I guess I should add that I consulted this post, but haven't found it to help me find a solution.
By Dave - 2/23/2017

jdb - Thursday, February 23, 2017
I have a question about item selection!
I have two types of trials, call them "core" and "varying" trials:
<trial core>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivecore, negativecore)]
/ response = free
</trial>

<trial varying1>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivevarying1, negativevarying1)]
/ response = free
</trial>

<trial varying2>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivevarying2, negativevarying2)]
/ response = free
</trial>

The thing is that for each block, there should be 8 core trials for every 1 varying trial (there are 80 core items and 10 varying items). I tried using a list:
<list trials>
/items = (trial.core, trialvarying1)
/poolsize = 90
/selectionmode = random
</list>

Calling that list in a block doesn't wind up with the list doing anything – I end up with 45 core trials and 45 varying trials – not what I want. I thought about using /itemprobabilities = [.888888; .2222222] but that seems like it's not really what I mean to do. I could also potentially repeat the items in the list?
/items = (trial.core, trial.core, trial.core, trial.core, trial.core, trial.core,
     trial.core, trial.core, trialvarying1)

Anyway, I've re-ran the experiment so many times at this point that I figured I would ask for help. Anyone have a solution for this? I realize that maybe the simplest solution is to just make separate word lists (not have a core, and instead just put it in each of the other word lists) but that didn't occur to me until after I had spent a while debugging and at this point I'm feeling stubborn.
I guess I should add that I consulted this post, but haven't found it to help me find a solution.

A <list> with correctly specified /itemprobabilities is exactly what you should use:

<trial core>
/ trialduration = 50
</trial>

<trial varying>
/ trialduration = 50
</trial>

<block myblock>
/ trials = [1-90 = list.triallist]
</block>

<list triallist>
/ items = (trial.core, trial.varying)
/ poolsize = 90
/ itemprobabilities = [.88889; .11111]
</list>

will result in 80 "core" trials and 10 "varying" trials in the <block>.

Alternatively, you can achieve the same result without resorting to a <list>. Simply enter trials in the desired 8:1 ratio into a standard noreplace() selection pool:

<block myblock>
/ trials = [1-90 = noreplace(core, core, core, core, core, core, core, core, varying)]
</block>
By jdb - 2/24/2017

Dave - Thursday, February 23, 2017
jdb - Thursday, February 23, 2017
I have a question about item selection!
I have two types of trials, call them "core" and "varying" trials:
<trial core>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivecore, negativecore)]
/ response = free
</trial>

<trial varying1>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivevarying1, negativevarying1)]
/ response = free
</trial>

<trial varying2>
/ validresponse = ("1", "0")
/ correctresponse = ("1")
/ responseinterrupt = trial
/ stimulustimes = [0=noreplace(positivevarying2, negativevarying2)]
/ response = free
</trial>

The thing is that for each block, there should be 8 core trials for every 1 varying trial (there are 80 core items and 10 varying items). I tried using a list:
<list trials>
/items = (trial.core, trialvarying1)
/poolsize = 90
/selectionmode = random
</list>

Calling that list in a block doesn't wind up with the list doing anything – I end up with 45 core trials and 45 varying trials – not what I want. I thought about using /itemprobabilities = [.888888; .2222222] but that seems like it's not really what I mean to do. I could also potentially repeat the items in the list?
/items = (trial.core, trial.core, trial.core, trial.core, trial.core, trial.core,
     trial.core, trial.core, trialvarying1)

Anyway, I've re-ran the experiment so many times at this point that I figured I would ask for help. Anyone have a solution for this? I realize that maybe the simplest solution is to just make separate word lists (not have a core, and instead just put it in each of the other word lists) but that didn't occur to me until after I had spent a while debugging and at this point I'm feeling stubborn.
I guess I should add that I consulted this post, but haven't found it to help me find a solution.

A <list> with correctly specified /itemprobabilities is exactly what you should use:

<trial core>
/ trialduration = 50
</trial>

<trial varying>
/ trialduration = 50
</trial>

<block myblock>
/ trials = [1-90 = list.triallist]
</block>

<list triallist>
/ items = (trial.core, trial.varying)
/ poolsize = 90
/ itemprobabilities = [.88889; .11111]
</list>

will result in 80 "core" trials and 10 "varying" trials in the <block>.

Alternatively, you can achieve the same result without resorting to a <list>. Simply enter trials in the desired 8:1 ratio into a standard noreplace() selection pool:

<block myblock>
/ trials = [1-90 = noreplace(core, core, core, core, core, core, core, core, varying)]
</block>

Right! Makes a lot of sense. I think I was hoping that there was some way of explicitly saying "don't start replacing from [the shorter item list] until the longer items run out" but it sounds like that's not possible. This way is straightforward.