Randomization of word lists


Author
Message
eeberts525
eeberts525
Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)
Group: Forum Members
Posts: 7, Visits: 59
I am working on a task with 12 lists of 10 words each. I want to randomize the order of lists and words within a list, but want the list to be shown as a group (i.e., all 10 words of one list, then all 10 words of the next list one at a time). I am having trouble figuring out how to randomize the order of lists.

As an example, here are 2 word lists:

<item anger>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm"    
/9 = "emotion"
/10 = "enrage"
</item>

<item bread>
/1 = "butter"
/2 = "food"
/3 = "eat"
/4 = "sandwich"
/5 = "rye"
/6 = "crust"
/7 = "slice"
/8 = "wine"
/9 = "loaf"
/10 = "toast"
</item>

I have tried creating a list element to combine all of the lists and randomize their order at the beginning of the experiment as shown below. I get an error in the trial element for 'textLists' because I think I need to call a text element there rather than a list, but I am wondering how to put the information from an item to a list and then a text, or if there is a better approach. I would greatly appreciate any help in solving this!

<list textLists>
/items = [anger; bread; cold; doctor; foot; fruit; music; sleep; slow; soft; spider; thief]
/select = list.listOrder.nextvalue
</list>

<trial currList>
/stimulustimes = [1 = textLists; 1000 = clearscreen]
/timeout = 2000
</trial>

<list allLists>
/poolsize = 2
/selectionrate = always
/selectionmode = random
</list>

<list listOrder>
</list>

<expt>
/ onexptbegin = [
  list.listOrder.appenditem(list.allLists.nextindex);
  list.listOrder.appenditem(list.allLists.nextindex);
</expt>

eeberts525
eeberts525
Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)
Group: Forum Members
Posts: 7, Visits: 59
eeberts525 - 9/23/2020
I am working on a task with 12 lists of 10 words each. I want to randomize the order of lists and words within a list, but want the list to be shown as a group (i.e., all 10 words of one list, then all 10 words of the next list one at a time). I am having trouble figuring out how to randomize the order of lists.

As an example, here are 2 word lists:

<item anger>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm"    
/9 = "emotion"
/10 = "enrage"
</item>

<item bread>
/1 = "butter"
/2 = "food"
/3 = "eat"
/4 = "sandwich"
/5 = "rye"
/6 = "crust"
/7 = "slice"
/8 = "wine"
/9 = "loaf"
/10 = "toast"
</item>

I have tried creating a list element to combine all of the lists and randomize their order at the beginning of the experiment as shown below. I get an error in the trial element for 'textLists' because I think I need to call a text element there rather than a list, but I am wondering how to put the information from an item to a list and then a text, or if there is a better approach. I would greatly appreciate any help in solving this!

<list textLists>
/items = [anger; bread; cold; doctor; foot; fruit; music; sleep; slow; soft; spider; thief]
/select = list.listOrder.nextvalue
</list>

<trial currList>
/stimulustimes = [1 = textLists; 1000 = clearscreen]
/timeout = 2000
</trial>

<list allLists>
/poolsize = 2
/selectionrate = always
/selectionmode = random
</list>

<list listOrder>
</list>

<expt>
/ onexptbegin = [
  list.listOrder.appenditem(list.allLists.nextindex);
  list.listOrder.appenditem(list.allLists.nextindex);
</expt>

I have also tried combining all of the lists in a text element like below, but then I am just presented with the word 'anger' rather than the words in the 'anger' list.
<text textLists>
/items = ("anger", "bread", "cold", "doctor", "foot", "fruit", "music", "sleep", "slow", "soft", "spider", "thief")
/select = list.listOrder.nextvalue
</text>
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
eeberts525 - 9/23/2020
eeberts525 - 9/23/2020
I am working on a task with 12 lists of 10 words each. I want to randomize the order of lists and words within a list, but want the list to be shown as a group (i.e., all 10 words of one list, then all 10 words of the next list one at a time). I am having trouble figuring out how to randomize the order of lists.

As an example, here are 2 word lists:

<item anger>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm"    
/9 = "emotion"
/10 = "enrage"
</item>

<item bread>
/1 = "butter"
/2 = "food"
/3 = "eat"
/4 = "sandwich"
/5 = "rye"
/6 = "crust"
/7 = "slice"
/8 = "wine"
/9 = "loaf"
/10 = "toast"
</item>

I have tried creating a list element to combine all of the lists and randomize their order at the beginning of the experiment as shown below. I get an error in the trial element for 'textLists' because I think I need to call a text element there rather than a list, but I am wondering how to put the information from an item to a list and then a text, or if there is a better approach. I would greatly appreciate any help in solving this!

<list textLists>
/items = [anger; bread; cold; doctor; foot; fruit; music; sleep; slow; soft; spider; thief]
/select = list.listOrder.nextvalue
</list>

<trial currList>
/stimulustimes = [1 = textLists; 1000 = clearscreen]
/timeout = 2000
</trial>

<list allLists>
/poolsize = 2
/selectionrate = always
/selectionmode = random
</list>

<list listOrder>
</list>

<expt>
/ onexptbegin = [
  list.listOrder.appenditem(list.allLists.nextindex);
  list.listOrder.appenditem(list.allLists.nextindex);
</expt>

I have also tried combining all of the lists in a text element like below, but then I am just presented with the word 'anger' rather than the words in the 'anger' list.
<text textLists>
/items = ("anger", "bread", "cold", "doctor", "foot", "fruit", "music", "sleep", "slow", "soft", "spider", "thief")
/select = list.listOrder.nextvalue
</text>

Create separate <trial>, <text> and <block> elements for each "list". Each block runs 10 trials. Run the blocks in random order.

<block angerblock>
/ trials = [1-10 = angertrial]
</block>

<trial angertrial>
/ stimulusframes = [1=angertext]
/ validresponse = (57)
</trial>

<text angertext>
/ items = anger
/ select = noreplace
</text>

<item anger>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm" 
/9 = "emotion"
/10 = "enrage"
</item>

<block breadblock>
/ trials = [1-10 = breadtrial]
</block>

<trial angertrial>
/ stimulusframes = [1=breadtext]
/ validresponse = (57)
</trial>

<text breadtext>
/ items = bread
/ select = noreplace
</text>

<item bread>
/1 = "butter"
/2 = "food"
/3 = "eat"
/4 = "sandwich"
/5 = "rye"
/6 = "crust"
/7 = "slice"
/8 = "wine"
/9 = "loaf"
/10 = "toast"
</item>

<expt>
/ blocks = [1-2 = noreplace(angerblock, breadblock)]
</expt>

Alternatively, you can boil things down to only needing a single <text>, <trial> and <block> element and select one (random) item list per block run like so:

// two 10-item lists in this example
// 1 = anger
// 2 = bread
<list listnumber>
/ items = (1,2)
</list>

// list of lists
// samples item numbers from the list indicated
// by values.listnumber
<list selectionlist>
/ items = (list.angeritemnumbers.nextvalue, list.breaditemnumbers.nextvalue)
/ selectionmode = values.listnumber
</list>

//anger items are #s 1 to 10
<list angeritemnumbers>
/ items = (1,2,3,4,5,6,7,8,9,10)
</list>

//bread items are #s 11 to 20
<list breaditemnumbers>
/ items = (11,12,13,14,15,16,17,18,19,20)
</list>

<item allitems>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm"
/9 = "emotion"
/10 = "enrage"

/11 = "butter"
/12 = "food"
/13 = "eat"
/14 = "sandwich"
/15 = "rye"
/16 = "crust"
/17 = "slice"
/18 = "wine"
/19 = "loaf"
/20 = "toast"
</item>

<text stimulus>
/ items = allitems
/ select = list.selectionlist.nextvalue
</text>

<trial mytrial>
/ stimulusframes = [1=stimulus]
/ validresponse = (57)
</trial>

<values>
/ listnumber = 1
</values>

// select one list at random at the start of the block
<block myblock>
/ onblockbegin = [
    values.listnumber = list.listnumber.nextvalue;
]
/ trials = [1-10 = mytrial]
</block>

//run two blocks (one per 10-item list)
<expt>
/ blocks = [1-2 = myblock]
</expt>

Edited 4 Years Ago by Dave
eeberts525
eeberts525
Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)Associate Member (86 reputation)
Group: Forum Members
Posts: 7, Visits: 59
Dave - 9/23/2020
eeberts525 - 9/23/2020
eeberts525 - 9/23/2020
I am working on a task with 12 lists of 10 words each. I want to randomize the order of lists and words within a list, but want the list to be shown as a group (i.e., all 10 words of one list, then all 10 words of the next list one at a time). I am having trouble figuring out how to randomize the order of lists.

As an example, here are 2 word lists:

<item anger>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm"    
/9 = "emotion"
/10 = "enrage"
</item>

<item bread>
/1 = "butter"
/2 = "food"
/3 = "eat"
/4 = "sandwich"
/5 = "rye"
/6 = "crust"
/7 = "slice"
/8 = "wine"
/9 = "loaf"
/10 = "toast"
</item>

I have tried creating a list element to combine all of the lists and randomize their order at the beginning of the experiment as shown below. I get an error in the trial element for 'textLists' because I think I need to call a text element there rather than a list, but I am wondering how to put the information from an item to a list and then a text, or if there is a better approach. I would greatly appreciate any help in solving this!

<list textLists>
/items = [anger; bread; cold; doctor; foot; fruit; music; sleep; slow; soft; spider; thief]
/select = list.listOrder.nextvalue
</list>

<trial currList>
/stimulustimes = [1 = textLists; 1000 = clearscreen]
/timeout = 2000
</trial>

<list allLists>
/poolsize = 2
/selectionrate = always
/selectionmode = random
</list>

<list listOrder>
</list>

<expt>
/ onexptbegin = [
  list.listOrder.appenditem(list.allLists.nextindex);
  list.listOrder.appenditem(list.allLists.nextindex);
</expt>

I have also tried combining all of the lists in a text element like below, but then I am just presented with the word 'anger' rather than the words in the 'anger' list.
<text textLists>
/items = ("anger", "bread", "cold", "doctor", "foot", "fruit", "music", "sleep", "slow", "soft", "spider", "thief")
/select = list.listOrder.nextvalue
</text>

Create separate <trial>, <text> and <block> elements for each "list". Each block runs 10 trials. Run the blocks in random order.

<block angerblock>
/ trials = [1-10 = angertrial]
</block>

<trial angertrial>
/ stimulusframes = [1=angertext]
/ validresponse = (57)
</trial>

<text angertext>
/ items = anger
/ select = noreplace
</text>

<item anger>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm" 
/9 = "emotion"
/10 = "enrage"
</item>

<block breadblock>
/ trials = [1-10 = breadtrial]
</block>

<trial angertrial>
/ stimulusframes = [1=breadtext]
/ validresponse = (57)
</trial>

<text breadtext>
/ items = bread
/ select = noreplace
</text>

<item bread>
/1 = "butter"
/2 = "food"
/3 = "eat"
/4 = "sandwich"
/5 = "rye"
/6 = "crust"
/7 = "slice"
/8 = "wine"
/9 = "loaf"
/10 = "toast"
</item>

<expt>
/ blocks = [1-2 = noreplace(angerblock, breadblock)]
</expt>

Alternatively, you can boil things down to only needing a single <text>, <trial> and <block> element and select one (random) item list per block run like so:

// two 10-item lists in this example
// 1 = anger
// 2 = bread
<list listnumber>
/ items = (1,2)
</list>

// list of lists
// samples item numbers from the list indicated
// by values.listnumber
<list selectionlist>
/ items = (list.angeritemnumbers.nextvalue, list.breaditemnumbers.nextvalue)
/ selectionmode = values.listnumber
</list>

//anger items are #s 1 to 10
<list angeritemnumbers>
/ items = (1,2,3,4,5,6,7,8,9,10)
</list>

//bread items are #s 11 to 20
<list breaditemnumbers>
/ items = (11,12,13,14,15,16,17,18,19,20)
</list>

<item allitems>
/1 = "mad"
/2 = "fear"
/3 = "hate"
/4 = "rage"
/5 = "temper"
/6 = "fight"
/7 = "mean"
/8 = "calm"
/9 = "emotion"
/10 = "enrage"

/11 = "butter"
/12 = "food"
/13 = "eat"
/14 = "sandwich"
/15 = "rye"
/16 = "crust"
/17 = "slice"
/18 = "wine"
/19 = "loaf"
/20 = "toast"
</item>

<text stimulus>
/ items = allitems
/ select = list.selectionlist.nextvalue
</text>

<trial mytrial>
/ stimulusframes = [1=stimulus]
/ validresponse = (57)
</trial>

<values>
/ listnumber = 1
</values>

// select one list at random at the start of the block
<block myblock>
/ onblockbegin = [
    values.listnumber = list.listnumber.nextvalue;
]
/ trials = [1-10 = mytrial]
</block>

//run two blocks (one per 10-item list)
<expt>
/ blocks = [1-2 = myblock]
</expt>

This is very helpful. I was going for something like the second option so as to not have to make separate 'text', 'trial', and 'block' elements for each list, and this works very nicely, although the first option is also clear and straightforward. Thanks a lot!
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search