List Randomisation


Author
Message
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
Psych_Josh - Monday, March 20, 2017
Hi Dave,

Sorry to bring up an old topic, but I'm still failing to acquire a proper randomisation of the lists in terms of by time, and then by condition, so that the participant receives both blocks of stimuli presentation times of 500, and then 900 (also randomly presented) before continuing onto the next condition. Currently, they are experiencing a completely randomised presentation, i.e., the stimulus times aren't being presented one after the other before moving onto the next condition.

*********
Block list
*********

<list masterblocklist>
/items = (list.baseline.nextvalue; list.self.nextvalue; list.countdown.nextvalue)
/poolsize = 6
/selectionmode = noreplacenorepeat(1,1,2,2,3,3)
</list>

Conditions:

<list baseline>
/items = (block.baseline500, block.baseline900)
</list>

<list self>
/items = (block.self500, block.self900)
</list>

<list countdown>
/items = (block.countdown500, block.countdown900)
</list>

*********
Blocks
*********

<block baseline500>
/preinstructions = (Baseline)
/trials = [1-10 = noreplace(baselineclickprac500); 11-20 = noreplace(baselineclick500)]
</block>

<block baseline900>
/preinstructions = (Baseline)
/trials = [1-10 = noreplace(baselineclickprac900); 11-20 = noreplace(baselineclick900)]
</block>

<block self500>
/preinstructions = (Self)
/trials = [1-10 = noreplace(selfclickprac500); 11-20 = noreplace(selfclick500)]
</block>

<block self900>
/preinstructions = (Self)
/trials = [1-10 = noreplace(selfclickprac900); 11-20 = noreplace(selfclick900)]
</block>

<block countdown500>
/preinstructions = (Countdown)
/trials = [1-10 = noreplace(countdownbeginprac500); 11-20 = noreplace(countdownbegin500)]
</block>

<block countdown900>
/preinstructions = (Countdown)
/trials = [1-10 = noreplace(countdownbeginprac900); 11-20 = noreplace(countdownbegin900)]
</block>

Pardon if I did not explain myself properly before, or I implemented your advice incorrectly.

Many thanks,
Josh

I suppose I don't understand what this means then:

"a proper randomisation of the lists in terms of by time, and then by condition, so that the participant receives both blocks of stimuli presentation times of 500, and then 900 (also randomly presented) before continuing onto the next condition."

Could you give a concrete example, please?

And what does

"Currently, they are experiencing a completely randomised presentation, i.e., the stimulus times aren't being presented one after the other before moving onto the next condition."

mean, particularly " the stimulus times aren't being presented one after the other"? Here, too, please give concrete examples. Thanks.

Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
Dave - Monday, March 20, 2017
Psych_Josh - Monday, March 20, 2017
Hi Dave,

Sorry to bring up an old topic, but I'm still failing to acquire a proper randomisation of the lists in terms of by time, and then by condition, so that the participant receives both blocks of stimuli presentation times of 500, and then 900 (also randomly presented) before continuing onto the next condition. Currently, they are experiencing a completely randomised presentation, i.e., the stimulus times aren't being presented one after the other before moving onto the next condition.

*********
Block list
*********

<list masterblocklist>
/items = (list.baseline.nextvalue; list.self.nextvalue; list.countdown.nextvalue)
/poolsize = 6
/selectionmode = noreplacenorepeat(1,1,2,2,3,3)
</list>

Conditions:

<list baseline>
/items = (block.baseline500, block.baseline900)
</list>

<list self>
/items = (block.self500, block.self900)
</list>

<list countdown>
/items = (block.countdown500, block.countdown900)
</list>

*********
Blocks
*********

<block baseline500>
/preinstructions = (Baseline)
/trials = [1-10 = noreplace(baselineclickprac500); 11-20 = noreplace(baselineclick500)]
</block>

<block baseline900>
/preinstructions = (Baseline)
/trials = [1-10 = noreplace(baselineclickprac900); 11-20 = noreplace(baselineclick900)]
</block>

<block self500>
/preinstructions = (Self)
/trials = [1-10 = noreplace(selfclickprac500); 11-20 = noreplace(selfclick500)]
</block>

<block self900>
/preinstructions = (Self)
/trials = [1-10 = noreplace(selfclickprac900); 11-20 = noreplace(selfclick900)]
</block>

<block countdown500>
/preinstructions = (Countdown)
/trials = [1-10 = noreplace(countdownbeginprac500); 11-20 = noreplace(countdownbegin500)]
</block>

<block countdown900>
/preinstructions = (Countdown)
/trials = [1-10 = noreplace(countdownbeginprac900); 11-20 = noreplace(countdownbegin900)]
</block>

Pardon if I did not explain myself properly before, or I implemented your advice incorrectly.

Many thanks,
Josh

I suppose I don't understand what this means then:

"a proper randomisation of the lists in terms of by time, and then by condition, so that the participant receives both blocks of stimuli presentation times of 500, and then 900 (also randomly presented) before continuing onto the next condition."

Could you give a concrete example, please?

And what does

"Currently, they are experiencing a completely randomised presentation, i.e., the stimulus times aren't being presented one after the other before moving onto the next condition."

mean, particularly " the stimulus times aren't being presented one after the other"? Here, too, please give concrete examples. Thanks.

Hi Dave, 

Sorry for not explaining it clearly. What I meant to say is the participant should see both time intervals of the condition, before advancing to the next condition, i.e.  one participant might see: Baseline 500, Baseline 900, Countdown 900, Countdown 500, Self 900, Self 500, whilst the next participant might see Countdown 500, Countdown 900, Self 500, Self 900, Baseline 900, Baseline 500. What I meant by a 'completely randomised presentation' is that the participant currently experiences the 6 (in total) time by conditions randomly without the pairing of the time intervals, e.g., Baseline 500, Self 900, Countdown 900, Self 500, Baseline 900, Countdown 500.

Many thanks,
Josh
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
Psych_Josh - Tuesday, March 21, 2017
Dave - Monday, March 20, 2017
Psych_Josh - Monday, March 20, 2017
Hi Dave,

Sorry to bring up an old topic, but I'm still failing to acquire a proper randomisation of the lists in terms of by time, and then by condition, so that the participant receives both blocks of stimuli presentation times of 500, and then 900 (also randomly presented) before continuing onto the next condition. Currently, they are experiencing a completely randomised presentation, i.e., the stimulus times aren't being presented one after the other before moving onto the next condition.

*********
Block list
*********

<list masterblocklist>
/items = (list.baseline.nextvalue; list.self.nextvalue; list.countdown.nextvalue)
/poolsize = 6
/selectionmode = noreplacenorepeat(1,1,2,2,3,3)
</list>

Conditions:

<list baseline>
/items = (block.baseline500, block.baseline900)
</list>

<list self>
/items = (block.self500, block.self900)
</list>

<list countdown>
/items = (block.countdown500, block.countdown900)
</list>

*********
Blocks
*********

<block baseline500>
/preinstructions = (Baseline)
/trials = [1-10 = noreplace(baselineclickprac500); 11-20 = noreplace(baselineclick500)]
</block>

<block baseline900>
/preinstructions = (Baseline)
/trials = [1-10 = noreplace(baselineclickprac900); 11-20 = noreplace(baselineclick900)]
</block>

<block self500>
/preinstructions = (Self)
/trials = [1-10 = noreplace(selfclickprac500); 11-20 = noreplace(selfclick500)]
</block>

<block self900>
/preinstructions = (Self)
/trials = [1-10 = noreplace(selfclickprac900); 11-20 = noreplace(selfclick900)]
</block>

<block countdown500>
/preinstructions = (Countdown)
/trials = [1-10 = noreplace(countdownbeginprac500); 11-20 = noreplace(countdownbegin500)]
</block>

<block countdown900>
/preinstructions = (Countdown)
/trials = [1-10 = noreplace(countdownbeginprac900); 11-20 = noreplace(countdownbegin900)]
</block>

Pardon if I did not explain myself properly before, or I implemented your advice incorrectly.

Many thanks,
Josh

I suppose I don't understand what this means then:

"a proper randomisation of the lists in terms of by time, and then by condition, so that the participant receives both blocks of stimuli presentation times of 500, and then 900 (also randomly presented) before continuing onto the next condition."

Could you give a concrete example, please?

And what does

"Currently, they are experiencing a completely randomised presentation, i.e., the stimulus times aren't being presented one after the other before moving onto the next condition."

mean, particularly " the stimulus times aren't being presented one after the other"? Here, too, please give concrete examples. Thanks.

Hi Dave, 

Sorry for not explaining it clearly. What I meant to say is the participant should see both time intervals of the condition, before advancing to the next condition, i.e.  one participant might see: Baseline 500, Baseline 900, Countdown 900, Countdown 500, Self 900, Self 500, whilst the next participant might see Countdown 500, Countdown 900, Self 500, Self 900, Baseline 900, Baseline 500. What I meant by a 'completely randomised presentation' is that the participant currently experiences the 6 (in total) time by conditions randomly without the pairing of the time intervals, e.g., Baseline 500, Self 900, Countdown 900, Self 500, Baseline 900, Countdown 500.

Many thanks,
Josh

> What I meant by a 'completely randomised presentation' is that the participant currently experiences the 6 (in total) time by conditions randomly without the
> pairing of the time intervals, e.g., Baseline 500, Self 900, Countdown 900, Self 500, Baseline 900, Countdown 500.

I thought that's what you wanted, and here's why: noreplacenorepeat() only makes sense if you want to *avoid* repetitions, i.e. explicitly *avoid* a block-sequence like Baseline 500 -> Baseline 900 -> .... That's what the code I proposed does (and was supposed to do).

Now it's clear to me that you want the exact opposite, i.e. using noreplacenorepeat does not make any sense whatsoever. Many ways to do this. I'd do something like this:

<list masterblocklist>
/items = (list.baseline.nextvalue; list.self.nextvalue; list.countdown.nextvalue)
/ poolsize = 6
/selectionmode = list.conditionsequence.nextvalue
</list>

// sequence is determined /onexptbegin
<list conditionsequence>
/ selectionmode = sequence
</list>

// three conditions 1 to 3
<list conditions>
/ items = (1,2,3)
/ selectionmode = random
/ replace = false
/ selectionrate = always
</list>

<expt>
/ onexptbegin = [
    list.conditionsequence.appenditem(list.conditions.nextvalue);
    list.conditionsequence.appenditem(list.conditions.currentvalue);
    list.conditionsequence.appenditem(list.conditions.nextvalue);
    list.conditionsequence.appenditem(list.conditions.currentvalue);
    list.conditionsequence.appenditem(list.conditions.nextvalue);
    list.conditionsequence.appenditem(list.conditions.currentvalue);

]
/blocks = [1-6 = list.masterblocklist;]
</expt>

<list baseline>
/items = (block.baseline500, block.baseline900)
</list>

<list self>
/items = (block.self500, block.self900)
</list>

<list countdown>
/items = (block.countdown500, block.countdown900)
</list>

<block baseline500>
/ trials = [1=mytrial]
</block>

<block baseline900>
/ trials = [1=mytrial]
</block>

<block self500>
/ trials = [1=mytrial]
</block>

<block self900>
/ trials = [1=mytrial]
</block>

<block countdown500>
/ trials = [1=mytrial]
</block>

<block countdown900>
/ trials = [1=mytrial]
</block>

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

<text mytext>
/ items = ("<%script.currentblock%>")
</text>

Edited 7 Years Ago by Dave
Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
That worked fantastically Dave, many thanks as always!

Josh
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search