Millisecond Forums

sequences and randomization in block of trials

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

By reg_002 - 4/20/2018

Hi, 

I would like to have 10 trials in which first participants see a picture for 6 seconds and then they complete 6 likert scale questions in random order about the picture before moving on to the next picture. 

Here's what I came up with: 
/ trials = [1-10 = noreplace(new1_p,noreplace(new1_p_qr1,new1_p_qr2,new1_p_qr3,new1_p_qs,new1_p_qo1,new1_p_qo2),(new2_p,noreplace(new2_p_qr1,new2_p_qr2,new2_p_qr3,new2_p_qs,new2_p_qo1,new2_p_qo2)),(new3_p,noreplace(new3_p_qr1,new3_p_qr2,new3_p_qr3,new3_p_qs,new3_p_qo1,new3_p_qo2)),(new4_p,noreplace(new4_p_qr1,new4_p_qr2,new4_p_qr3,new4_p_qs,new4_p_qo1,new4_p_qo2)),(new5_p,noreplace(new5_p_qr1,new5_p_qr2,new5_p_qr3,new5_p_qs,new5_p_qo1,new5_p_qo2)),(new6_p,noreplace(new6_p_qr1,new6_p_qr2,new6_p_qr3,new6_p_qs,new6_p_qo1,new6_p_qo2)),(new7_p,noreplace(new7_p_qr1,new7_p_qr2,new7_p_qr3,new7_p_qs,new7_p_qo1,new7_p_qo2)),(new8_p,noreplace(new8_p_qr1,new8_p_qr2,new8_p_qr3,new8_p_qs,new8_p_qo1,new8_p_qo2)),(new9_p,noreplace(new9_p_qr1,new9_p_qr2,new9_p_qr3,new9_p_qs,new9_p_qo1,new9_p_qo2)),(new10_p,noreplace(new10_p_qr1,new10_p_qr2,new10_p_qr3,new10_p_qs,new10_p_qo1,new10_p_qo2)))]

<trial new1_p>
/ stimulustimes = [0=new1_p;6000=space]
/ validresponse = (57)
/ beginresponsetime = 8500
</trial>

<likert new1_p_qr1>
/ stimulusframes=[1=questionreact1]
/ fontstyle = ("Arial", 11pt)
/ anchorwidth = 120
/ anchorwidth = 120
/ numpoints = 7
/ buttonvalues = [1="1"; 2="2"; 3="3"; 4="4"; 5="5"; 6="6"; 7="7"]
/ anchors=[1="not at all"; 2=""; 3=""; 4=""; 5=""; 6=""; 7="very much"]
/ position=(50, 80)
</likert>
...


This does not work for several reasons: 1. I probably need to specify 70 trials if I don't compound the trials
2. the error says: 'could not locate element 'noreplace'. 

Is there any way to make this work? 

Pieter


By Dave - 4/20/2018

reg_002 - Friday, April 20, 2018
Hi, 

I would like to have 10 trials in which first participants see a picture for 6 seconds and then they complete 6 likert scale questions in random order about the picture before moving on to the next picture. 

Here's what I came up with: 
/ trials = [1-10 = noreplace(new1_p,noreplace(new1_p_qr1,new1_p_qr2,new1_p_qr3,new1_p_qs,new1_p_qo1,new1_p_qo2),(new2_p,noreplace(new2_p_qr1,new2_p_qr2,new2_p_qr3,new2_p_qs,new2_p_qo1,new2_p_qo2)),(new3_p,noreplace(new3_p_qr1,new3_p_qr2,new3_p_qr3,new3_p_qs,new3_p_qo1,new3_p_qo2)),(new4_p,noreplace(new4_p_qr1,new4_p_qr2,new4_p_qr3,new4_p_qs,new4_p_qo1,new4_p_qo2)),(new5_p,noreplace(new5_p_qr1,new5_p_qr2,new5_p_qr3,new5_p_qs,new5_p_qo1,new5_p_qo2)),(new6_p,noreplace(new6_p_qr1,new6_p_qr2,new6_p_qr3,new6_p_qs,new6_p_qo1,new6_p_qo2)),(new7_p,noreplace(new7_p_qr1,new7_p_qr2,new7_p_qr3,new7_p_qs,new7_p_qo1,new7_p_qo2)),(new8_p,noreplace(new8_p_qr1,new8_p_qr2,new8_p_qr3,new8_p_qs,new8_p_qo1,new8_p_qo2)),(new9_p,noreplace(new9_p_qr1,new9_p_qr2,new9_p_qr3,new9_p_qs,new9_p_qo1,new9_p_qo2)),(new10_p,noreplace(new10_p_qr1,new10_p_qr2,new10_p_qr3,new10_p_qs,new10_p_qo1,new10_p_qo2)))]

<trial new1_p>
/ stimulustimes = [0=new1_p;6000=space]
/ validresponse = (57)
/ beginresponsetime = 8500
</trial>

<likert new1_p_qr1>
/ stimulusframes=[1=questionreact1]
/ fontstyle = ("Arial", 11pt)
/ anchorwidth = 120
/ anchorwidth = 120
/ numpoints = 7
/ buttonvalues = [1="1"; 2="2"; 3="3"; 4="4"; 5="5"; 6="6"; 7="7"]
/ anchors=[1="not at all"; 2=""; 3=""; 4=""; 5=""; 6=""; 7="very much"]
/ position=(50, 80)
</likert>
...


This does not work for several reasons: 1. I probably need to specify 70 trials if I don't compound the trials
2. the error says: 'could not locate element 'noreplace'. 

Is there any way to make this work? 

Pieter



/ trials = [1-10 = noreplace(new1_p,noreplace(new1_p_qr1,new1_p_qr2,new1_p_qr3,new1_p_qs,new1_p_qo1,new1_p_qo2),(new2_p,noreplace(new2_p_qr1,new2_p_qr2,new2_p_qr3,new2_p_qs,new2_p_qo1,new2_p_qo2)),(new3_p,noreplace(new3_p_qr1,new3_p_qr2,new3_p_qr3,new3_p_qs,new3_p_qo1,new3_p_qo2)),(new4_p,noreplace(new4_p_qr1,new4_p_qr2,new4_p_qr3,new4_p_qs,new4_p_qo1,new4_p_qo2)),(new5_p,noreplace(new5_p_qr1,new5_p_qr2,new5_p_qr3,new5_p_qs,new5_p_qo1,new5_p_qo2)),(new6_p,noreplace(new6_p_qr1,new6_p_qr2,new6_p_qr3,new6_p_qs,new6_p_qo1,new6_p_qo2)),(new7_p,noreplace(new7_p_qr1,new7_p_qr2,new7_p_qr3,new7_p_qs,new7_p_qo1,new7_p_qo2)),(new8_p,noreplace(new8_p_qr1,new8_p_qr2,new8_p_qr3,new8_p_qs,new8_p_qo1,new8_p_qo2)),(new9_p,noreplace(new9_p_qr1,new9_p_qr2,new9_p_qr3,new9_p_qs,new9_p_qo1,new9_p_qo2)),(new10_p,noreplace(new10_p_qr1,new10_p_qr2,new10_p_qr3,new10_p_qs,new10_p_qo1,new10_p_qo2)))]

This is invalid syntax; you cannot "nest" various noreplace() selection pools like that.

What you'll want to do is select the newX_p trials in random order, and do the rest via /branch (put the associated likerts in a <list> each).

I also don't understand why you need a separate <trial> and <likert> elements for each of the 10 pictures. Why doesn't a single <trial> and six <likert>s suffice?
By Dave - 4/20/2018

Dave - Friday, April 20, 2018
reg_002 - Friday, April 20, 2018
Hi, 

I would like to have 10 trials in which first participants see a picture for 6 seconds and then they complete 6 likert scale questions in random order about the picture before moving on to the next picture. 

Here's what I came up with: 
/ trials = [1-10 = noreplace(new1_p,noreplace(new1_p_qr1,new1_p_qr2,new1_p_qr3,new1_p_qs,new1_p_qo1,new1_p_qo2),(new2_p,noreplace(new2_p_qr1,new2_p_qr2,new2_p_qr3,new2_p_qs,new2_p_qo1,new2_p_qo2)),(new3_p,noreplace(new3_p_qr1,new3_p_qr2,new3_p_qr3,new3_p_qs,new3_p_qo1,new3_p_qo2)),(new4_p,noreplace(new4_p_qr1,new4_p_qr2,new4_p_qr3,new4_p_qs,new4_p_qo1,new4_p_qo2)),(new5_p,noreplace(new5_p_qr1,new5_p_qr2,new5_p_qr3,new5_p_qs,new5_p_qo1,new5_p_qo2)),(new6_p,noreplace(new6_p_qr1,new6_p_qr2,new6_p_qr3,new6_p_qs,new6_p_qo1,new6_p_qo2)),(new7_p,noreplace(new7_p_qr1,new7_p_qr2,new7_p_qr3,new7_p_qs,new7_p_qo1,new7_p_qo2)),(new8_p,noreplace(new8_p_qr1,new8_p_qr2,new8_p_qr3,new8_p_qs,new8_p_qo1,new8_p_qo2)),(new9_p,noreplace(new9_p_qr1,new9_p_qr2,new9_p_qr3,new9_p_qs,new9_p_qo1,new9_p_qo2)),(new10_p,noreplace(new10_p_qr1,new10_p_qr2,new10_p_qr3,new10_p_qs,new10_p_qo1,new10_p_qo2)))]

<trial new1_p>
/ stimulustimes = [0=new1_p;6000=space]
/ validresponse = (57)
/ beginresponsetime = 8500
</trial>

<likert new1_p_qr1>
/ stimulusframes=[1=questionreact1]
/ fontstyle = ("Arial", 11pt)
/ anchorwidth = 120
/ anchorwidth = 120
/ numpoints = 7
/ buttonvalues = [1="1"; 2="2"; 3="3"; 4="4"; 5="5"; 6="6"; 7="7"]
/ anchors=[1="not at all"; 2=""; 3=""; 4=""; 5=""; 6=""; 7="very much"]
/ position=(50, 80)
</likert>
...


This does not work for several reasons: 1. I probably need to specify 70 trials if I don't compound the trials
2. the error says: 'could not locate element 'noreplace'. 

Is there any way to make this work? 

Pieter



/ trials = [1-10 = noreplace(new1_p,noreplace(new1_p_qr1,new1_p_qr2,new1_p_qr3,new1_p_qs,new1_p_qo1,new1_p_qo2),(new2_p,noreplace(new2_p_qr1,new2_p_qr2,new2_p_qr3,new2_p_qs,new2_p_qo1,new2_p_qo2)),(new3_p,noreplace(new3_p_qr1,new3_p_qr2,new3_p_qr3,new3_p_qs,new3_p_qo1,new3_p_qo2)),(new4_p,noreplace(new4_p_qr1,new4_p_qr2,new4_p_qr3,new4_p_qs,new4_p_qo1,new4_p_qo2)),(new5_p,noreplace(new5_p_qr1,new5_p_qr2,new5_p_qr3,new5_p_qs,new5_p_qo1,new5_p_qo2)),(new6_p,noreplace(new6_p_qr1,new6_p_qr2,new6_p_qr3,new6_p_qs,new6_p_qo1,new6_p_qo2)),(new7_p,noreplace(new7_p_qr1,new7_p_qr2,new7_p_qr3,new7_p_qs,new7_p_qo1,new7_p_qo2)),(new8_p,noreplace(new8_p_qr1,new8_p_qr2,new8_p_qr3,new8_p_qs,new8_p_qo1,new8_p_qo2)),(new9_p,noreplace(new9_p_qr1,new9_p_qr2,new9_p_qr3,new9_p_qs,new9_p_qo1,new9_p_qo2)),(new10_p,noreplace(new10_p_qr1,new10_p_qr2,new10_p_qr3,new10_p_qs,new10_p_qo1,new10_p_qo2)))]

This is invalid syntax; you cannot "nest" various noreplace() selection pools like that.

What you'll want to do is select the newX_p trials in random order, and do the rest via /branch (put the associated likerts in a <list> each).

I also don't understand why you need a separate <trial> and <likert> elements for each of the 10 pictures. Why doesn't a single <trial> and six <likert>s suffice?

In a nutshell:

<values>
/ likertcount = 0
</values>


<block myblock>
/ trials = [1-10=showstim;]
</block>

<trial showstim>
/ ontrialbegin = [
    values.likertcount = 0;
]
/ stimulusframes = [1=stimulus]
/ validresponse = (0)
/ trialduration = 6000
/ branch = [
    list.likertlist.nextvalue
]
</trial>

<text stimulus>
/ items = stimuli
/ select = noreplace
</text>

<item stimuli>
/ 1 = "stim 01"
/ 2 = "stim 02"
/ 3 = "stim 03"
/ 4 = "stim 04"
/ 5 = "stim 05"
/ 6 = "stim 06"
/ 7 = "stim 07"
/ 8 = "stim 08"
/ 9 = "stim 09"
/ 10 = "stim 10"
</item>

<list likertlist>
/ items = (likert.q_a, likert.q_b, likert.q_c, likert.q_d, likert.q_e, likert.q_f)
</list>

<likert q_a>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_b>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_c>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_d>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_e>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_f>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<text mytext>
/ items = ("<%script.currenttrial%>")
/ position = (50%, 40%)
</text>


By reg_002 - 4/20/2018

Dave - Friday, April 20, 2018
Dave - Friday, April 20, 2018
reg_002 - Friday, April 20, 2018
Hi, 

I would like to have 10 trials in which first participants see a picture for 6 seconds and then they complete 6 likert scale questions in random order about the picture before moving on to the next picture. 

Here's what I came up with: 
/ trials = [1-10 = noreplace(new1_p,noreplace(new1_p_qr1,new1_p_qr2,new1_p_qr3,new1_p_qs,new1_p_qo1,new1_p_qo2),(new2_p,noreplace(new2_p_qr1,new2_p_qr2,new2_p_qr3,new2_p_qs,new2_p_qo1,new2_p_qo2)),(new3_p,noreplace(new3_p_qr1,new3_p_qr2,new3_p_qr3,new3_p_qs,new3_p_qo1,new3_p_qo2)),(new4_p,noreplace(new4_p_qr1,new4_p_qr2,new4_p_qr3,new4_p_qs,new4_p_qo1,new4_p_qo2)),(new5_p,noreplace(new5_p_qr1,new5_p_qr2,new5_p_qr3,new5_p_qs,new5_p_qo1,new5_p_qo2)),(new6_p,noreplace(new6_p_qr1,new6_p_qr2,new6_p_qr3,new6_p_qs,new6_p_qo1,new6_p_qo2)),(new7_p,noreplace(new7_p_qr1,new7_p_qr2,new7_p_qr3,new7_p_qs,new7_p_qo1,new7_p_qo2)),(new8_p,noreplace(new8_p_qr1,new8_p_qr2,new8_p_qr3,new8_p_qs,new8_p_qo1,new8_p_qo2)),(new9_p,noreplace(new9_p_qr1,new9_p_qr2,new9_p_qr3,new9_p_qs,new9_p_qo1,new9_p_qo2)),(new10_p,noreplace(new10_p_qr1,new10_p_qr2,new10_p_qr3,new10_p_qs,new10_p_qo1,new10_p_qo2)))]

<trial new1_p>
/ stimulustimes = [0=new1_p;6000=space]
/ validresponse = (57)
/ beginresponsetime = 8500
</trial>

<likert new1_p_qr1>
/ stimulusframes=[1=questionreact1]
/ fontstyle = ("Arial", 11pt)
/ anchorwidth = 120
/ anchorwidth = 120
/ numpoints = 7
/ buttonvalues = [1="1"; 2="2"; 3="3"; 4="4"; 5="5"; 6="6"; 7="7"]
/ anchors=[1="not at all"; 2=""; 3=""; 4=""; 5=""; 6=""; 7="very much"]
/ position=(50, 80)
</likert>
...


This does not work for several reasons: 1. I probably need to specify 70 trials if I don't compound the trials
2. the error says: 'could not locate element 'noreplace'. 

Is there any way to make this work? 

Pieter



/ trials = [1-10 = noreplace(new1_p,noreplace(new1_p_qr1,new1_p_qr2,new1_p_qr3,new1_p_qs,new1_p_qo1,new1_p_qo2),(new2_p,noreplace(new2_p_qr1,new2_p_qr2,new2_p_qr3,new2_p_qs,new2_p_qo1,new2_p_qo2)),(new3_p,noreplace(new3_p_qr1,new3_p_qr2,new3_p_qr3,new3_p_qs,new3_p_qo1,new3_p_qo2)),(new4_p,noreplace(new4_p_qr1,new4_p_qr2,new4_p_qr3,new4_p_qs,new4_p_qo1,new4_p_qo2)),(new5_p,noreplace(new5_p_qr1,new5_p_qr2,new5_p_qr3,new5_p_qs,new5_p_qo1,new5_p_qo2)),(new6_p,noreplace(new6_p_qr1,new6_p_qr2,new6_p_qr3,new6_p_qs,new6_p_qo1,new6_p_qo2)),(new7_p,noreplace(new7_p_qr1,new7_p_qr2,new7_p_qr3,new7_p_qs,new7_p_qo1,new7_p_qo2)),(new8_p,noreplace(new8_p_qr1,new8_p_qr2,new8_p_qr3,new8_p_qs,new8_p_qo1,new8_p_qo2)),(new9_p,noreplace(new9_p_qr1,new9_p_qr2,new9_p_qr3,new9_p_qs,new9_p_qo1,new9_p_qo2)),(new10_p,noreplace(new10_p_qr1,new10_p_qr2,new10_p_qr3,new10_p_qs,new10_p_qo1,new10_p_qo2)))]

This is invalid syntax; you cannot "nest" various noreplace() selection pools like that.

What you'll want to do is select the newX_p trials in random order, and do the rest via /branch (put the associated likerts in a <list> each).

I also don't understand why you need a separate <trial> and <likert> elements for each of the 10 pictures. Why doesn't a single <trial> and six <likert>s suffice?

In a nutshell:

<values>
/ likertcount = 0
</values>


<block myblock>
/ trials = [1-10=showstim;]
</block>

<trial showstim>
/ ontrialbegin = [
    values.likertcount = 0;
]
/ stimulusframes = [1=stimulus]
/ validresponse = (0)
/ trialduration = 6000
/ branch = [
    list.likertlist.nextvalue
]
</trial>

<text stimulus>
/ items = stimuli
/ select = noreplace
</text>

<item stimuli>
/ 1 = "stim 01"
/ 2 = "stim 02"
/ 3 = "stim 03"
/ 4 = "stim 04"
/ 5 = "stim 05"
/ 6 = "stim 06"
/ 7 = "stim 07"
/ 8 = "stim 08"
/ 9 = "stim 09"
/ 10 = "stim 10"
</item>

<list likertlist>
/ items = (likert.q_a, likert.q_b, likert.q_c, likert.q_d, likert.q_e, likert.q_f)
</list>

<likert q_a>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_b>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_c>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_d>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_e>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<likert q_f>
/ ontrialbegin = [
    values.likertcount += 1;
]
/ stimulusframes = [1=mytext]
/ branch = [
    if (values.likertcount < 6) list.likertlist.nextvalue;
]
</likert>

<text mytext>
/ items = ("<%script.currenttrial%>")
/ position = (50%, 40%)
</text>



This works perfectly. Many thanks. 

Pieter