Showing previous trials in a randomised-trials experiment


Author
Message
labdurian
labdurian
Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)
Group: Awaiting Activation
Posts: 3, Visits: 64
Dear all,

I'm trying to create a task in which participants can view many different pictures and choose one picture when they decide to. This meant that I want them to be able to freely click "Back" to view the previous picture, and "Continue" to view the next picture. I have 110 pictures, and when participants decide which painting they want to choose, they can either continue to view other pictures or end the task. I have been able to achieve all the procedures I want except that when participants clicked on "Back", they were not shown the previous picture, rather it was a new, randomly chosen, picture.

Does anyone know how I can display the previous picture when participants click on "Back"?

Below are the script that I have right now:

<radiobuttons choose>
/ options = ("This painting has the highest price", "Continue viewing other paintings")
/ optionvalues = ("1", "0")
/ validresponse = ("1","0")
/ position = (35%, 65%)
</radiobuttons>

<radiobuttons ask>
/ options = ("Yes, I want to continue viewing other paintings", "No, I don't want to view more paintings")
/ optionvalues = ("1", "0")
/ position = (25%, 40%)
</radiobuttons>

<radiobuttons endask>
/ options = ("Show me other paintings", "End Task")
/ optionvalues = ("1", "0")
/ position = (35%, 65%)
</radiobuttons>

<surveypage init>
/ stimulustimes = [1=blank]
/ response = noresponse
/ branch = [surveypage.choice]
/ recorddata = false
</surveypage>


<surveypage choice>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=choose]
/backlabel = "Back"
/finishlabel = "Continue"
/ backbuttonposition = (13%, 85%)
/nextbuttonposition = (75%, 85%)
/showpagenumbers = false
/ showquestionnumbers = false
/ branch = [if (radiobuttons.choose.response == 1) surveypage.ask]
/branch = [if(radiobuttons.choose.response==0) surveypage.choice]
</surveypage>

<surveypage ask>
/ caption = "You have chosen a painting which you think has the highest price.

Although you cannot change your decision, would you like to continue viewing other paintings?"
/questions = [1=ask]
/showbackbutton = false
/showquestionnumbers = false
/showpagenumbers = false
/nextbuttonposition = (75%, 85%)
/branch = [if (radiobuttons.ask.response==1) surveypage.end]
/branch = [if (radiobuttons.ask.response==0) surveypage.endtask]

<surveypage endtask>
/caption = "You have now completed this task. Please click the finish button to proceed to the next task"
/showbackbutton = false
/showpagenumbers = false
/showquestionnumbers = false
</surveypage>


<surveypage end>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=endask]
/showpagenumbers = false
/showquestionnumbers = false
/backlabel = "Back"
/finishlabel = "Continue"
/branch = [if(radiobuttons.endask.response==0) surveypage.endtask]
/branch = [if(radiobuttons.endask.response==1) surveypage.end]

<survey test>
/ pages = [1=init]

Will greatly appreciate any help on this matter! Thank you so much!

Best,
Jace



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
labdurian - Saturday, March 3, 2018
Dear all,

I'm trying to create a task in which participants can view many different pictures and choose one picture when they decide to. This meant that I want them to be able to freely click "Back" to view the previous picture, and "Continue" to view the next picture. I have 110 pictures, and when participants decide which painting they want to choose, they can either continue to view other pictures or end the task. I have been able to achieve all the procedures I want except that when participants clicked on "Back", they were not shown the previous picture, rather it was a new, randomly chosen, picture.

Does anyone know how I can display the previous picture when participants click on "Back"?

Below are the script that I have right now:

<radiobuttons choose>
/ options = ("This painting has the highest price", "Continue viewing other paintings")
/ optionvalues = ("1", "0")
/ validresponse = ("1","0")
/ position = (35%, 65%)
</radiobuttons>

<radiobuttons ask>
/ options = ("Yes, I want to continue viewing other paintings", "No, I don't want to view more paintings")
/ optionvalues = ("1", "0")
/ position = (25%, 40%)
</radiobuttons>

<radiobuttons endask>
/ options = ("Show me other paintings", "End Task")
/ optionvalues = ("1", "0")
/ position = (35%, 65%)
</radiobuttons>

<surveypage init>
/ stimulustimes = [1=blank]
/ response = noresponse
/ branch = [surveypage.choice]
/ recorddata = false
</surveypage>


<surveypage choice>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=choose]
/backlabel = "Back"
/finishlabel = "Continue"
/ backbuttonposition = (13%, 85%)
/nextbuttonposition = (75%, 85%)
/showpagenumbers = false
/ showquestionnumbers = false
/ branch = [if (radiobuttons.choose.response == 1) surveypage.ask]
/branch = [if(radiobuttons.choose.response==0) surveypage.choice]
</surveypage>

<surveypage ask>
/ caption = "You have chosen a painting which you think has the highest price.

Although you cannot change your decision, would you like to continue viewing other paintings?"
/questions = [1=ask]
/showbackbutton = false
/showquestionnumbers = false
/showpagenumbers = false
/nextbuttonposition = (75%, 85%)
/branch = [if (radiobuttons.ask.response==1) surveypage.end]
/branch = [if (radiobuttons.ask.response==0) surveypage.endtask]

<surveypage endtask>
/caption = "You have now completed this task. Please click the finish button to proceed to the next task"
/showbackbutton = false
/showpagenumbers = false
/showquestionnumbers = false
</surveypage>


<surveypage end>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=endask]
/showpagenumbers = false
/showquestionnumbers = false
/backlabel = "Back"
/finishlabel = "Continue"
/branch = [if(radiobuttons.endask.response==0) surveypage.endtask]
/branch = [if(radiobuttons.endask.response==1) surveypage.end]

<survey test>
/ pages = [1=init]

Will greatly appreciate any help on this matter! Thank you so much!

Best,
Jace



Won't work in the way you set this up. What you need to do is set up a _single_ <picture> element, with all the 110 images as its /items. Then, select a random item number at the start of each surveypage. In addition, you need to record the sequence of item numbers in a <list>. Then, when someone goes back, you need to retrieve the previous item number from that <list> instead of selecting a new, random item number.

The easier, but more verbose option would be to create a separate <surveypage> for _each_ image. Then just randomize the order of the surveypages.

labdurian
labdurian
Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)
Group: Awaiting Activation
Posts: 3, Visits: 64
Dave - Monday, March 5, 2018
labdurian - Saturday, March 3, 2018
Dear all,

I'm trying to create a task in which participants can view many different pictures and choose one picture when they decide to. This meant that I want them to be able to freely click "Back" to view the previous picture, and "Continue" to view the next picture. I have 110 pictures, and when participants decide which painting they want to choose, they can either continue to view other pictures or end the task. I have been able to achieve all the procedures I want except that when participants clicked on "Back", they were not shown the previous picture, rather it was a new, randomly chosen, picture.

Does anyone know how I can display the previous picture when participants click on "Back"?

Below are the script that I have right now:

<radiobuttons choose>
/ options = ("This painting has the highest price", "Continue viewing other paintings")
/ optionvalues = ("1", "0")
/ validresponse = ("1","0")
/ position = (35%, 65%)
</radiobuttons>

<radiobuttons ask>
/ options = ("Yes, I want to continue viewing other paintings", "No, I don't want to view more paintings")
/ optionvalues = ("1", "0")
/ position = (25%, 40%)
</radiobuttons>

<radiobuttons endask>
/ options = ("Show me other paintings", "End Task")
/ optionvalues = ("1", "0")
/ position = (35%, 65%)
</radiobuttons>

<surveypage init>
/ stimulustimes = [1=blank]
/ response = noresponse
/ branch = [surveypage.choice]
/ recorddata = false
</surveypage>


<surveypage choice>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=choose]
/backlabel = "Back"
/finishlabel = "Continue"
/ backbuttonposition = (13%, 85%)
/nextbuttonposition = (75%, 85%)
/showpagenumbers = false
/ showquestionnumbers = false
/ branch = [if (radiobuttons.choose.response == 1) surveypage.ask]
/branch = [if(radiobuttons.choose.response==0) surveypage.choice]
</surveypage>

<surveypage ask>
/ caption = "You have chosen a painting which you think has the highest price.

Although you cannot change your decision, would you like to continue viewing other paintings?"
/questions = [1=ask]
/showbackbutton = false
/showquestionnumbers = false
/showpagenumbers = false
/nextbuttonposition = (75%, 85%)
/branch = [if (radiobuttons.ask.response==1) surveypage.end]
/branch = [if (radiobuttons.ask.response==0) surveypage.endtask]

<surveypage endtask>
/caption = "You have now completed this task. Please click the finish button to proceed to the next task"
/showbackbutton = false
/showpagenumbers = false
/showquestionnumbers = false
</surveypage>


<surveypage end>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=endask]
/showpagenumbers = false
/showquestionnumbers = false
/backlabel = "Back"
/finishlabel = "Continue"
/branch = [if(radiobuttons.endask.response==0) surveypage.endtask]
/branch = [if(radiobuttons.endask.response==1) surveypage.end]

<survey test>
/ pages = [1=init]

Will greatly appreciate any help on this matter! Thank you so much!

Best,
Jace



Won't work in the way you set this up. What you need to do is set up a _single_ <picture> element, with all the 110 images as its /items. Then, select a random item number at the start of each surveypage. In addition, you need to record the sequence of item numbers in a <list>. Then, when someone goes back, you need to retrieve the previous item number from that <list> instead of selecting a new, random item number.

The easier, but more verbose option would be to create a separate <surveypage> for _each_ image. Then just randomize the order of the surveypages.

Hi Dave,

Thanks so much for the solution. I actually tried using <list> before but I gave up on that way as I wasn't sure how I can record the sequence of item numbers in the <list> and retrieve the previous item number from the list when participants press the "back" button. How do I go about doing this?


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
labdurian - Monday, March 5, 2018
Dave - Monday, March 5, 2018
labdurian - Saturday, March 3, 2018
Dear all,

I'm trying to create a task in which participants can view many different pictures and choose one picture when they decide to. This meant that I want them to be able to freely click "Back" to view the previous picture, and "Continue" to view the next picture. I have 110 pictures, and when participants decide which painting they want to choose, they can either continue to view other pictures or end the task. I have been able to achieve all the procedures I want except that when participants clicked on "Back", they were not shown the previous picture, rather it was a new, randomly chosen, picture.

Does anyone know how I can display the previous picture when participants click on "Back"?

Below are the script that I have right now:

<radiobuttons choose>
/ options = ("This painting has the highest price", "Continue viewing other paintings")
/ optionvalues = ("1", "0")
/ validresponse = ("1","0")
/ position = (35%, 65%)
</radiobuttons>

<radiobuttons ask>
/ options = ("Yes, I want to continue viewing other paintings", "No, I don't want to view more paintings")
/ optionvalues = ("1", "0")
/ position = (25%, 40%)
</radiobuttons>

<radiobuttons endask>
/ options = ("Show me other paintings", "End Task")
/ optionvalues = ("1", "0")
/ position = (35%, 65%)
</radiobuttons>

<surveypage init>
/ stimulustimes = [1=blank]
/ response = noresponse
/ branch = [surveypage.choice]
/ recorddata = false
</surveypage>


<surveypage choice>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=choose]
/backlabel = "Back"
/finishlabel = "Continue"
/ backbuttonposition = (13%, 85%)
/nextbuttonposition = (75%, 85%)
/showpagenumbers = false
/ showquestionnumbers = false
/ branch = [if (radiobuttons.choose.response == 1) surveypage.ask]
/branch = [if(radiobuttons.choose.response==0) surveypage.choice]
</surveypage>

<surveypage ask>
/ caption = "You have chosen a painting which you think has the highest price.

Although you cannot change your decision, would you like to continue viewing other paintings?"
/questions = [1=ask]
/showbackbutton = false
/showquestionnumbers = false
/showpagenumbers = false
/nextbuttonposition = (75%, 85%)
/branch = [if (radiobuttons.ask.response==1) surveypage.end]
/branch = [if (radiobuttons.ask.response==0) surveypage.endtask]

<surveypage endtask>
/caption = "You have now completed this task. Please click the finish button to proceed to the next task"
/showbackbutton = false
/showpagenumbers = false
/showquestionnumbers = false
</surveypage>


<surveypage end>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=endask]
/showpagenumbers = false
/showquestionnumbers = false
/backlabel = "Back"
/finishlabel = "Continue"
/branch = [if(radiobuttons.endask.response==0) surveypage.endtask]
/branch = [if(radiobuttons.endask.response==1) surveypage.end]

<survey test>
/ pages = [1=init]

Will greatly appreciate any help on this matter! Thank you so much!

Best,
Jace



Won't work in the way you set this up. What you need to do is set up a _single_ <picture> element, with all the 110 images as its /items. Then, select a random item number at the start of each surveypage. In addition, you need to record the sequence of item numbers in a <list>. Then, when someone goes back, you need to retrieve the previous item number from that <list> instead of selecting a new, random item number.

The easier, but more verbose option would be to create a separate <surveypage> for _each_ image. Then just randomize the order of the surveypages.

Hi Dave,

Thanks so much for the solution. I actually tried using <list> before but I gave up on that way as I wasn't sure how I can record the sequence of item numbers in the <list> and retrieve the previous item number from the list when participants press the "back" button. How do I go about doing this?


Come to think of it, instead of recording the sequence as you go through the survey, I think it's actually easier to setup a random sequence at the start, and then just step through it (moving back and forth between item numbers). I.e. something like this:

<expt>
/ blocks = [1=setup_sequence; 2=mysurvey]
</expt>

// sets up a random sequence of item numbers
<block setup_sequence>
/ trials = [1-11 = seqtrial]
</block>

<trial seqtrial>
/ ontrialbegin = [
    list.itemnumber_sequence.appenditem(list.itemnumbers.nextindex);
]
/ trialduration = 0
</trial>

// there are 11 items in this example
<list itemnumbers>
/ poolsize = 11
</list>

<list itemnumber_sequence>
</list>

// step through the sequence moving back and forth according to the page number
<survey mysurvey>
/ pages = [1-11 = mypage]
</survey>

<surveypage mypage>
/ ontrialbegin = [
    values.itemnumber = list.itemnumber_sequence.item(survey.mysurvey.currentpagenumber)
]
/ stimulusframes = [1=mystimulus]
</surveypage>

<values>
/ itemnumber = 1
</values>

<text mystimulus>
/ items = mystimuli
/ select = values.itemnumber
</text>

<item mystimuli>
/ 1 = "a.jpg"
/ 2 = "b.jpg"
/ 3 = "c.jpg"
/ 4 = "d.jpg"
/ 5 = "e.jpg"
/ 6 = "f.jpg"
/ 7 = "g.jpg"
/ 8 = "h.jpg"
/ 9 = "j.jpg"
/ 10 = "k.jpg"
/ 11 = "l.jpg"
</item>


labdurian
labdurian
Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)Respected Member (380 reputation)
Group: Awaiting Activation
Posts: 3, Visits: 64
Dave - Monday, March 5, 2018
labdurian - Monday, March 5, 2018
Dave - Monday, March 5, 2018
labdurian - Saturday, March 3, 2018
Dear all,

I'm trying to create a task in which participants can view many different pictures and choose one picture when they decide to. This meant that I want them to be able to freely click "Back" to view the previous picture, and "Continue" to view the next picture. I have 110 pictures, and when participants decide which painting they want to choose, they can either continue to view other pictures or end the task. I have been able to achieve all the procedures I want except that when participants clicked on "Back", they were not shown the previous picture, rather it was a new, randomly chosen, picture.

Does anyone know how I can display the previous picture when participants click on "Back"?

Below are the script that I have right now:

<radiobuttons choose>
/ options = ("This painting has the highest price", "Continue viewing other paintings")
/ optionvalues = ("1", "0")
/ validresponse = ("1","0")
/ position = (35%, 65%)
</radiobuttons>

<radiobuttons ask>
/ options = ("Yes, I want to continue viewing other paintings", "No, I don't want to view more paintings")
/ optionvalues = ("1", "0")
/ position = (25%, 40%)
</radiobuttons>

<radiobuttons endask>
/ options = ("Show me other paintings", "End Task")
/ optionvalues = ("1", "0")
/ position = (35%, 65%)
</radiobuttons>

<surveypage init>
/ stimulustimes = [1=blank]
/ response = noresponse
/ branch = [surveypage.choice]
/ recorddata = false
</surveypage>


<surveypage choice>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=choose]
/backlabel = "Back"
/finishlabel = "Continue"
/ backbuttonposition = (13%, 85%)
/nextbuttonposition = (75%, 85%)
/showpagenumbers = false
/ showquestionnumbers = false
/ branch = [if (radiobuttons.choose.response == 1) surveypage.ask]
/branch = [if(radiobuttons.choose.response==0) surveypage.choice]
</surveypage>

<surveypage ask>
/ caption = "You have chosen a painting which you think has the highest price.

Although you cannot change your decision, would you like to continue viewing other paintings?"
/questions = [1=ask]
/showbackbutton = false
/showquestionnumbers = false
/showpagenumbers = false
/nextbuttonposition = (75%, 85%)
/branch = [if (radiobuttons.ask.response==1) surveypage.end]
/branch = [if (radiobuttons.ask.response==0) surveypage.endtask]

<surveypage endtask>
/caption = "You have now completed this task. Please click the finish button to proceed to the next task"
/showbackbutton = false
/showpagenumbers = false
/showquestionnumbers = false
</surveypage>


<surveypage end>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=endask]
/showpagenumbers = false
/showquestionnumbers = false
/backlabel = "Back"
/finishlabel = "Continue"
/branch = [if(radiobuttons.endask.response==0) surveypage.endtask]
/branch = [if(radiobuttons.endask.response==1) surveypage.end]

<survey test>
/ pages = [1=init]

Will greatly appreciate any help on this matter! Thank you so much!

Best,
Jace



Won't work in the way you set this up. What you need to do is set up a _single_ <picture> element, with all the 110 images as its /items. Then, select a random item number at the start of each surveypage. In addition, you need to record the sequence of item numbers in a <list>. Then, when someone goes back, you need to retrieve the previous item number from that <list> instead of selecting a new, random item number.

The easier, but more verbose option would be to create a separate <surveypage> for _each_ image. Then just randomize the order of the surveypages.

Hi Dave,

Thanks so much for the solution. I actually tried using <list> before but I gave up on that way as I wasn't sure how I can record the sequence of item numbers in the <list> and retrieve the previous item number from the list when participants press the "back" button. How do I go about doing this?


Come to think of it, instead of recording the sequence as you go through the survey, I think it's actually easier to setup a random sequence at the start, and then just step through it (moving back and forth between item numbers). I.e. something like this:

<expt>
/ blocks = [1=setup_sequence; 2=mysurvey]
</expt>

// sets up a random sequence of item numbers
<block setup_sequence>
/ trials = [1-11 = seqtrial]
</block>

<trial seqtrial>
/ ontrialbegin = [
    list.itemnumber_sequence.appenditem(list.itemnumbers.nextindex);
]
/ trialduration = 0
</trial>

// there are 11 items in this example
<list itemnumbers>
/ poolsize = 11
</list>

<list itemnumber_sequence>
</list>

// step through the sequence moving back and forth according to the page number
<survey mysurvey>
/ pages = [1-11 = mypage]
</survey>

<surveypage mypage>
/ ontrialbegin = [
    values.itemnumber = list.itemnumber_sequence.item(survey.mysurvey.currentpagenumber)
]
/ stimulusframes = [1=mystimulus]
</surveypage>

<values>
/ itemnumber = 1
</values>

<text mystimulus>
/ items = mystimuli
/ select = values.itemnumber
</text>

<item mystimuli>
/ 1 = "a.jpg"
/ 2 = "b.jpg"
/ 3 = "c.jpg"
/ 4 = "d.jpg"
/ 5 = "e.jpg"
/ 6 = "f.jpg"
/ 7 = "g.jpg"
/ 8 = "h.jpg"
/ 9 = "j.jpg"
/ 10 = "k.jpg"
/ 11 = "l.jpg"
</item>


Hi Dave,

That works! You're amazing, thank you so much!

However, could you also show me how you would record the sequence through the survey and retrieve the sequence number from <list>? I'm trying to see if there's any way to create this study without using radiobuttons (or survey elements) because it will be easier for participants to make a choice and navigate with just using the keyboard.



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
labdurian - Monday, March 5, 2018
Dave - Monday, March 5, 2018
labdurian - Monday, March 5, 2018
Dave - Monday, March 5, 2018
labdurian - Saturday, March 3, 2018
Dear all,

I'm trying to create a task in which participants can view many different pictures and choose one picture when they decide to. This meant that I want them to be able to freely click "Back" to view the previous picture, and "Continue" to view the next picture. I have 110 pictures, and when participants decide which painting they want to choose, they can either continue to view other pictures or end the task. I have been able to achieve all the procedures I want except that when participants clicked on "Back", they were not shown the previous picture, rather it was a new, randomly chosen, picture.

Does anyone know how I can display the previous picture when participants click on "Back"?

Below are the script that I have right now:

<radiobuttons choose>
/ options = ("This painting has the highest price", "Continue viewing other paintings")
/ optionvalues = ("1", "0")
/ validresponse = ("1","0")
/ position = (35%, 65%)
</radiobuttons>

<radiobuttons ask>
/ options = ("Yes, I want to continue viewing other paintings", "No, I don't want to view more paintings")
/ optionvalues = ("1", "0")
/ position = (25%, 40%)
</radiobuttons>

<radiobuttons endask>
/ options = ("Show me other paintings", "End Task")
/ optionvalues = ("1", "0")
/ position = (35%, 65%)
</radiobuttons>

<surveypage init>
/ stimulustimes = [1=blank]
/ response = noresponse
/ branch = [surveypage.choice]
/ recorddata = false
</surveypage>


<surveypage choice>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=choose]
/backlabel = "Back"
/finishlabel = "Continue"
/ backbuttonposition = (13%, 85%)
/nextbuttonposition = (75%, 85%)
/showpagenumbers = false
/ showquestionnumbers = false
/ branch = [if (radiobuttons.choose.response == 1) surveypage.ask]
/branch = [if(radiobuttons.choose.response==0) surveypage.choice]
</surveypage>

<surveypage ask>
/ caption = "You have chosen a painting which you think has the highest price.

Although you cannot change your decision, would you like to continue viewing other paintings?"
/questions = [1=ask]
/showbackbutton = false
/showquestionnumbers = false
/showpagenumbers = false
/nextbuttonposition = (75%, 85%)
/branch = [if (radiobuttons.ask.response==1) surveypage.end]
/branch = [if (radiobuttons.ask.response==0) surveypage.endtask]

<surveypage endtask>
/caption = "You have now completed this task. Please click the finish button to proceed to the next task"
/showbackbutton = false
/showpagenumbers = false
/showquestionnumbers = false
</surveypage>


<surveypage end>
/stimulustimes = [1=noreplace (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110)]
/questions = [1=endask]
/showpagenumbers = false
/showquestionnumbers = false
/backlabel = "Back"
/finishlabel = "Continue"
/branch = [if(radiobuttons.endask.response==0) surveypage.endtask]
/branch = [if(radiobuttons.endask.response==1) surveypage.end]

<survey test>
/ pages = [1=init]

Will greatly appreciate any help on this matter! Thank you so much!

Best,
Jace



Won't work in the way you set this up. What you need to do is set up a _single_ <picture> element, with all the 110 images as its /items. Then, select a random item number at the start of each surveypage. In addition, you need to record the sequence of item numbers in a <list>. Then, when someone goes back, you need to retrieve the previous item number from that <list> instead of selecting a new, random item number.

The easier, but more verbose option would be to create a separate <surveypage> for _each_ image. Then just randomize the order of the surveypages.

Hi Dave,

Thanks so much for the solution. I actually tried using <list> before but I gave up on that way as I wasn't sure how I can record the sequence of item numbers in the <list> and retrieve the previous item number from the list when participants press the "back" button. How do I go about doing this?


Come to think of it, instead of recording the sequence as you go through the survey, I think it's actually easier to setup a random sequence at the start, and then just step through it (moving back and forth between item numbers). I.e. something like this:

<expt>
/ blocks = [1=setup_sequence; 2=mysurvey]
</expt>

// sets up a random sequence of item numbers
<block setup_sequence>
/ trials = [1-11 = seqtrial]
</block>

<trial seqtrial>
/ ontrialbegin = [
    list.itemnumber_sequence.appenditem(list.itemnumbers.nextindex);
]
/ trialduration = 0
</trial>

// there are 11 items in this example
<list itemnumbers>
/ poolsize = 11
</list>

<list itemnumber_sequence>
</list>

// step through the sequence moving back and forth according to the page number
<survey mysurvey>
/ pages = [1-11 = mypage]
</survey>

<surveypage mypage>
/ ontrialbegin = [
    values.itemnumber = list.itemnumber_sequence.item(survey.mysurvey.currentpagenumber)
]
/ stimulusframes = [1=mystimulus]
</surveypage>

<values>
/ itemnumber = 1
</values>

<text mystimulus>
/ items = mystimuli
/ select = values.itemnumber
</text>

<item mystimuli>
/ 1 = "a.jpg"
/ 2 = "b.jpg"
/ 3 = "c.jpg"
/ 4 = "d.jpg"
/ 5 = "e.jpg"
/ 6 = "f.jpg"
/ 7 = "g.jpg"
/ 8 = "h.jpg"
/ 9 = "j.jpg"
/ 10 = "k.jpg"
/ 11 = "l.jpg"
</item>


Hi Dave,

That works! You're amazing, thank you so much!

However, could you also show me how you would record the sequence through the survey and retrieve the sequence number from <list>? I'm trying to see if there's any way to create this study without using radiobuttons (or survey elements) because it will be easier for participants to make a choice and navigate with just using the keyboard.



Like so:

<expt>
/ blocks = [1=setup_sequence; 2=myblock]
</expt>

// sets up a random sequence of item numbers
<block setup_sequence>
/ trials = [1-11 = seqtrial]
</block>

<trial seqtrial>
/ ontrialbegin = [
    list.itemnumber_sequence.appenditem(list.itemnumbers.nextindex);
]
/ trialduration = 0
</trial>

// there are 11 items in this example
<list itemnumbers>
/ poolsize = 11
</list>

<list itemnumber_sequence>
</list>

// step through the sequence moving back and forth according to the page number
<block myblock>
/ trials = [1 = mytrial]
</block>

//navigate back and forth using left and right arrow keys
//indicate a choice using spacebar
<trial mytrial>
/ ontrialbegin = [
    values.itemnumber = list.itemnumber_sequence.item(values.itemindex)
]
/ ontrialend = [
    if (trial.mytrial.response == 203 && values.itemindex > 1) values.itemindex -= 1;
]
/ ontrialend = [
    if (trial.mytrial.response == 205 && values.itemindex < 11) values.itemindex += 1;
]
/ stimulusframes = [1=mystimulus]
/ validresponse = (203,205,57)
/ branch = [
    if (trial.mytrial.response != 57) trial.mytrial else trial.endtrial
]
</trial>

<trial endtrial>
/ stimulusframes = [1=mystimulus, yourchoice]
/ validresponse = (57)
</trial>

<text yourchoice>
/ items = ("You chose")
/ position = (50%, 20%)
</text>


<values>
/ itemindex = 1
/ itemnumber = 1
</values>

<text mystimulus>
/ items = mystimuli
/ select = values.itemnumber
</text>

<item mystimuli>
/ 1 = "a.jpg"
/ 2 = "b.jpg"
/ 3 = "c.jpg"
/ 4 = "d.jpg"
/ 5 = "e.jpg"
/ 6 = "f.jpg"
/ 7 = "g.jpg"
/ 8 = "h.jpg"
/ 9 = "j.jpg"
/ 10 = "k.jpg"
/ 11 = "l.jpg"
</item>

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search