mongrel
|
|
Group: Forum Members
Posts: 53,
Visits: 147
|
+x+xHi Dave, one last question: I tried to insert blank pages after each survey page via branch as you suggested. Could you have a look? This is, what I would do with every survey page. The error message is: Could not locate element blank. <surveypage B4> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B4; 2=negpos; 3=symp] / finishlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false / showpagenumbers = false / branch = [if (next) trial.blank]</surveypage> ***What I want to say with this branch is: If participants press nextbutton (what they all will do), show trial blank. <trial blank> /stimulusframes = [1 = blank] /trialduration = 1000 </trial> <item blank> /1 = "blank.png" </item> <image blank> / items = ("blank.png") / position = (37%, 15%) / imagesize = (33%,33%) </image> Thank you very much! R. All you need is / branch = [trial.blank] Always that easy... Thanks, Dav!
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+xHi Dave, one last question: I tried to insert blank pages after each survey page via branch as you suggested. Could you have a look? This is, what I would do with every survey page. The error message is: Could not locate element blank. <surveypage B4> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B4; 2=negpos; 3=symp] / finishlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false / showpagenumbers = false / branch = [if (next) trial.blank]</surveypage> ***What I want to say with this branch is: If participants press nextbutton (what they all will do), show trial blank. <trial blank> /stimulusframes = [1 = blank] /trialduration = 1000 </trial> <item blank> /1 = "blank.png" </item> <image blank> / items = ("blank.png") / position = (37%, 15%) / imagesize = (33%,33%) </image> Thank you very much! R. All you need is / branch = [trial.blank]
|
|
|
mongrel
|
|
Group: Forum Members
Posts: 53,
Visits: 147
|
Hi Dave,
one last question: I tried to insert blank pages after each survey page via branch as you suggested. Could you have a look? This is, what I would do with every survey page. The error message is: Could not locate element blank.
<surveypage B4> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B4; 2=negpos; 3=symp] / finishlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false / showpagenumbers = false / branch = [if (next) trial.blank] </surveypage>
***What I want to say with this branch is: If participants press nextbutton (what they all will do), show trial blank.
<trial blank> /stimulusframes = [1 = blank] /trialduration = 1000 </trial>
<item blank> /1 = "blank.png" </item>
<image blank> / items = ("blank.png") / position = (37%, 15%) / imagesize = (33%,33%) </image>
Thank you very much! R.
|
|
|
mongrel
|
|
Group: Forum Members
Posts: 53,
Visits: 147
|
OK, Dave, I realized that you answered everything in the second script you sent! Thank you so, so much!
|
|
|
mongrel
|
|
Group: Forum Members
Posts: 53,
Visits: 147
|
+x+x+x+x+x+x+x+xHey Dave, thanks for the quick reply! I have a few more questions, though. 1. It is not possible to use list for surveypages, right? Each item is on one page, see attached script. How can I randomize surveypages with certain constraints? And... 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? Thank you very much! Best, R > 1. It is not possible to use list for surveypages, right? It's perfectly possible. > 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? No. A <surveypage> *is* a special type of <trial>, you can run <surveypage>s per a <block>'s /trials attribute or any other means, just like regular <trial> elements. Note: I can't say anything about the script you attached, because it's unclear to me what exactly you want it to do. It does not seem to correspond to your initial description: " I would like the items to be presented in randimized order with certain constraints (e.g., B should never follow A, E should never be presented after D...)." In the script, there are only elements designated A and B, so I'm not sure how "B should never follow A" is supposed to be achievable. Thanks a lot! Sorry, that must have been confusing. A1 is not supposed to follow A and the other way around, B should not follow B1 and the other way around. (I just called them A and B when I thought there would not be any need to attach the script...). Okay, and what is and isn't supposed to follow A1, A2, etc. and B1, B2, etc. Can you spell that out, please, and please do so completely OK, so: All surveypages should be presented in randomized order. However, A1 should never follow after participants saw A and the other way around, meaning: After A: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A1 is not allowed to follow A. Same for A1 with A; after A1: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A is not allowed to follow A1. Same with B and B1; after B; A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B1 is not allowed to follow B. And the other way around: after B1: A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B is not allowed to follow B1. All others should be randomized and there are no constraints to that. I hope, it makes more sense now. Okay, thanks. Well, in principle, you'd do something like this: <surveypage A> / ontrialbegin = [ values.do_not_select = surveypage.A1;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A1> / ontrialbegin = [ values.do_not_select = surveypage.A;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A1; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> setting values.do_not_select to "" otherwise and using that as the /not constraint: <list items> /items = (surveypage.A surveypage.A1 surveypage.A2 surveypage.A3 surveypage.A4 surveypage.B surveypage.B1 surveypage.B2 surveypage.B3 surveypage.B4) / not = (values.do_not_select)/ replace = false / selectionmode = random </list> You're going to run into a problem, though, because randomization happens on the fly: It's perfectly possible that for the last two trials only A and A1 (or B and B1) are left to be sampled in the list. Then the constraint has to be dropped and you'd get A followed by A1 (or vice versa). If you want to avoid that, you need to write an algorithm that constructs a valid sequence in advance and then just have the remainder of the script run that sequence. Hey Dave, thanks again for your help! I am not quite sure how to understand: "setting values.do_not_select to "" otherwise and using that as the /not constraint:" If I copy your script as is, Inquisit complains: "Expression 'values.do_not_select' is invalid. Expression contains an unknown element or property." So, I figure, I have to define values.do_not_select first? If so, wasn't finished yet... Questions are: 1. Do I have to define Values.do_not-select and if so, how? I never worked with expressions, sorry! 2. Is it true that I do not have to draw items from the list in the survey because it is done in each surveypage this way?
|
|
|
mongrel
|
|
Group: Forum Members
Posts: 53,
Visits: 147
|
+x+x+x+x+x+x+xHey Dave, thanks for the quick reply! I have a few more questions, though. 1. It is not possible to use list for surveypages, right? Each item is on one page, see attached script. How can I randomize surveypages with certain constraints? And... 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? Thank you very much! Best, R > 1. It is not possible to use list for surveypages, right? It's perfectly possible. > 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? No. A <surveypage> *is* a special type of <trial>, you can run <surveypage>s per a <block>'s /trials attribute or any other means, just like regular <trial> elements. Note: I can't say anything about the script you attached, because it's unclear to me what exactly you want it to do. It does not seem to correspond to your initial description: " I would like the items to be presented in randimized order with certain constraints (e.g., B should never follow A, E should never be presented after D...)." In the script, there are only elements designated A and B, so I'm not sure how "B should never follow A" is supposed to be achievable. Thanks a lot! Sorry, that must have been confusing. A1 is not supposed to follow A and the other way around, B should not follow B1 and the other way around. (I just called them A and B when I thought there would not be any need to attach the script...). Okay, and what is and isn't supposed to follow A1, A2, etc. and B1, B2, etc. Can you spell that out, please, and please do so completely OK, so: All surveypages should be presented in randomized order. However, A1 should never follow after participants saw A and the other way around, meaning: After A: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A1 is not allowed to follow A. Same for A1 with A; after A1: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A is not allowed to follow A1. Same with B and B1; after B; A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B1 is not allowed to follow B. And the other way around: after B1: A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B is not allowed to follow B1. All others should be randomized and there are no constraints to that. I hope, it makes more sense now. Okay, thanks. Well, in principle, you'd do something like this: <surveypage A> / ontrialbegin = [ values.do_not_select = surveypage.A1;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A1> / ontrialbegin = [ values.do_not_select = surveypage.A;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A1; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> setting values.do_not_select to "" otherwise and using that as the /not constraint: <list items> /items = (surveypage.A surveypage.A1 surveypage.A2 surveypage.A3 surveypage.A4 surveypage.B surveypage.B1 surveypage.B2 surveypage.B3 surveypage.B4) / not = (values.do_not_select)/ replace = false / selectionmode = random </list> You're going to run into a problem, though, because randomization happens on the fly: It's perfectly possible that for the last two trials only A and A1 (or B and B1) are left to be sampled in the list. Then the constraint has to be dropped and you'd get A followed by A1 (or vice versa). If you want to avoid that, you need to write an algorithm that constructs a valid sequence in advance and then just have the remainder of the script run that sequence. Hey Dave, thanks again for your help! I am not quite sure how to understand: "setting values.do_not_select to "" otherwise and using that as the /not constraint:" If I copy your script as is, Inquisit complains: "Expression 'values.do_not_select' is invalid. Expression contains an unknown element or property." So, I figure, I have to define values.do_not_select first? If so,
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+x+x+xHey Dave, thanks for the quick reply! I have a few more questions, though. 1. It is not possible to use list for surveypages, right? Each item is on one page, see attached script. How can I randomize surveypages with certain constraints? And... 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? Thank you very much! Best, R > 1. It is not possible to use list for surveypages, right? It's perfectly possible. > 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? No. A <surveypage> *is* a special type of <trial>, you can run <surveypage>s per a <block>'s /trials attribute or any other means, just like regular <trial> elements. Note: I can't say anything about the script you attached, because it's unclear to me what exactly you want it to do. It does not seem to correspond to your initial description: " I would like the items to be presented in randimized order with certain constraints (e.g., B should never follow A, E should never be presented after D...)." In the script, there are only elements designated A and B, so I'm not sure how "B should never follow A" is supposed to be achievable. Thanks a lot! Sorry, that must have been confusing. A1 is not supposed to follow A and the other way around, B should not follow B1 and the other way around. (I just called them A and B when I thought there would not be any need to attach the script...). Okay, and what is and isn't supposed to follow A1, A2, etc. and B1, B2, etc. Can you spell that out, please, and please do so completely OK, so: All surveypages should be presented in randomized order. However, A1 should never follow after participants saw A and the other way around, meaning: After A: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A1 is not allowed to follow A. Same for A1 with A; after A1: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A is not allowed to follow A1. Same with B and B1; after B; A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B1 is not allowed to follow B. And the other way around: after B1: A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B is not allowed to follow B1. All others should be randomized and there are no constraints to that. I hope, it makes more sense now. Okay, thanks. Well, in principle, you'd do something like this: <surveypage A> / ontrialbegin = [ values.do_not_select = surveypage.A1;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A1> / ontrialbegin = [ values.do_not_select = surveypage.A;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A1; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> setting values.do_not_select to "" otherwise and using that as the /not constraint: <list items> /items = (surveypage.A surveypage.A1 surveypage.A2 surveypage.A3 surveypage.A4 surveypage.B surveypage.B1 surveypage.B2 surveypage.B3 surveypage.B4) / not = (values.do_not_select)/ replace = false / selectionmode = random </list> You're going to run into a problem, though, because randomization happens on the fly: It's perfectly possible that for the last two trials only A and A1 (or B and B1) are left to be sampled in the list. Then the constraint has to be dropped and you'd get A followed by A1 (or vice versa). If you want to avoid that, you need to write an algorithm that constructs a valid sequence in advance and then just have the remainder of the script run that sequence. Supreme for real! Thanks! Again! : Here's an example illustrating how one could go about pre-generating a random valid sequence: ****Lateral Attitude Change, Experiment 15: Main-Experiment, Morphing***** ***Ronja Boege, 10.02.2020*** ***Explicit Survey*** Slider********************************************************************************* <slider negpos> / labels = ("negativ~n1", "~n2", "~n3", "~n4", "~n5", "~n6", "positiv~n7") / range = (1, 7) / slidersize = (50%, 5%) / showtooltips = false / position = (22%, 50%) / required = true / fontstyle = ("Arial", 26, false) </slider> <slider symp> / labels = ("unsympathisch~n1", "~n2", "~n3", "~n4", "~n5", "~n6", "sympathisch~n7") / range = (1, 7) / slidersize = (50%, 5%) / showtooltips = false / position = (19.5%, 75%) / required = true / fontstyle = ("Arial", 26, false) </slider> *************************************************************************************************** ***************************************************** Einzelne Seiten ***************************************************** ***focal and lateral stimuli <caption A> / caption = "A.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption B> / caption = "B.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption A1> / caption = "A1.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption A2> / caption = "A2.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption A3> / caption = ("A3.jpg") / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption A4> / caption = "A4.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption B1> / caption = "B1.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption B2> / caption = "B2.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption B3> / caption = "B3.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> <caption B4> / caption = "B4.jpg" / position = (37%, 15%) / imagesize = (33%,33%) </caption> ***Surveypages focal and lateral objects <surveypage A> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage B> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A1> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A1; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A2> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A2; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A3> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A3; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A4> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A4; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage B1> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage B2> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B1; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage B3> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B2; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage B4> / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=B4; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> ***************************************************** Gesamtsurvey ***************************************************** <list items> / items = ("A0","A1","A2","A3","A4","B0","B1","B2","B3","B4") / selectionmode = random / replace = false / selectionrate = trial </list> <list pages> / items = (surveypage.a,surveypage.a1,surveypage.a2,surveypage.a3,surveypage.a4,surveypage.b,surveypage.b1,surveypage.b2,surveypage.b3,surveypage.b4) / selectionmode = list.items.currentindex / selectionrate = trial </list> <values> / item = "" / sequence = "" / valid_sequence = false </values> <trial sequence_generator> / ontrialbegin = [ values.item = list.items.nextvalue; values.sequence = concat(concat(values.sequence, ","), values.item); list.mysequence.appenditem(list.pages.nextvalue); ] / validresponse = (0) / trialduration = 0 / recorddata = false </trial> <trial sequence_checker> / ontrialbegin = [ if (contains(values.sequence, "A0,A1") || contains(values.sequence, "A1,A0") || contains(values.sequence, "B0,B1") || contains(values.sequence, "B1,B0")) { values.valid_sequence = false; } else { values.valid_sequence = true; }; ] / validresponse = (0) / trialduration = 0 / recorddata = false </trial> <expt> / blocks = [1=generate_sequence; 2=run_sequence] </expt> <block generate_sequence> / onblockbegin = [ values.item = ""; values.sequence = ""; list.items.reset(): list.pages.reset(); list.mysequence.reset(); ] / trials = [1-10=sequence_generator; 11=sequence_checker] / branch = [ if (!values.valid_sequence) block.generate_sequence; ] </block> <block run_sequence> / trials = [1-10 = list.mysequence] </block> <list mysequence> / selectionmode = sequence </list> ***************************************************** Seitendesign ***************************************************** <defaults> /canvasaspectratio = (4,3) /minimumversion = "5.0.0.0" / fontstyle = ("Arial", 3%, false, false, false, false, 5, 1) / screencolor = white / txbgcolor = white / txcolor = black / halign = center </defaults> <data> / columns = (date time subject group blocknum blockcode trialnum trialcode response correct latency values.sequence values.valid_sequence) / separatefiles = true </data>
|
|
|
mongrel
|
|
Group: Forum Members
Posts: 53,
Visits: 147
|
+x+x+x+x+x+x+xHey Dave, thanks for the quick reply! I have a few more questions, though. 1. It is not possible to use list for surveypages, right? Each item is on one page, see attached script. How can I randomize surveypages with certain constraints? And... 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? Thank you very much! Best, R > 1. It is not possible to use list for surveypages, right? It's perfectly possible. > 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? No. A <surveypage> *is* a special type of <trial>, you can run <surveypage>s per a <block>'s /trials attribute or any other means, just like regular <trial> elements. Note: I can't say anything about the script you attached, because it's unclear to me what exactly you want it to do. It does not seem to correspond to your initial description: " I would like the items to be presented in randimized order with certain constraints (e.g., B should never follow A, E should never be presented after D...)." In the script, there are only elements designated A and B, so I'm not sure how "B should never follow A" is supposed to be achievable. Thanks a lot! Sorry, that must have been confusing. A1 is not supposed to follow A and the other way around, B should not follow B1 and the other way around. (I just called them A and B when I thought there would not be any need to attach the script...). Okay, and what is and isn't supposed to follow A1, A2, etc. and B1, B2, etc. Can you spell that out, please, and please do so completely OK, so: All surveypages should be presented in randomized order. However, A1 should never follow after participants saw A and the other way around, meaning: After A: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A1 is not allowed to follow A. Same for A1 with A; after A1: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A is not allowed to follow A1. Same with B and B1; after B; A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B1 is not allowed to follow B. And the other way around: after B1: A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B is not allowed to follow B1. All others should be randomized and there are no constraints to that. I hope, it makes more sense now. Okay, thanks. Well, in principle, you'd do something like this: <surveypage A> / ontrialbegin = [ values.do_not_select = surveypage.A1;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A1> / ontrialbegin = [ values.do_not_select = surveypage.A;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A1; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> setting values.do_not_select to "" otherwise and using that as the /not constraint: <list items> /items = (surveypage.A surveypage.A1 surveypage.A2 surveypage.A3 surveypage.A4 surveypage.B surveypage.B1 surveypage.B2 surveypage.B3 surveypage.B4) / not = (values.do_not_select)/ replace = false / selectionmode = random </list> You're going to run into a problem, though, because randomization happens on the fly: It's perfectly possible that for the last two trials only A and A1 (or B and B1) are left to be sampled in the list. Then the constraint has to be dropped and you'd get A followed by A1 (or vice versa). If you want to avoid that, you need to write an algorithm that constructs a valid sequence in advance and then just have the remainder of the script run that sequence. Supreme for real! Thanks! Again! :
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+xHey Dave, thanks for the quick reply! I have a few more questions, though. 1. It is not possible to use list for surveypages, right? Each item is on one page, see attached script. How can I randomize surveypages with certain constraints? And... 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? Thank you very much! Best, R > 1. It is not possible to use list for surveypages, right? It's perfectly possible. > 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? No. A <surveypage> *is* a special type of <trial>, you can run <surveypage>s per a <block>'s /trials attribute or any other means, just like regular <trial> elements. Note: I can't say anything about the script you attached, because it's unclear to me what exactly you want it to do. It does not seem to correspond to your initial description: " I would like the items to be presented in randimized order with certain constraints (e.g., B should never follow A, E should never be presented after D...)." In the script, there are only elements designated A and B, so I'm not sure how "B should never follow A" is supposed to be achievable. Thanks a lot! Sorry, that must have been confusing. A1 is not supposed to follow A and the other way around, B should not follow B1 and the other way around. (I just called them A and B when I thought there would not be any need to attach the script...). Okay, and what is and isn't supposed to follow A1, A2, etc. and B1, B2, etc. Can you spell that out, please, and please do so completely OK, so: All surveypages should be presented in randomized order. However, A1 should never follow after participants saw A and the other way around, meaning: After A: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A1 is not allowed to follow A. Same for A1 with A; after A1: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A is not allowed to follow A1. Same with B and B1; after B; A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B1 is not allowed to follow B. And the other way around: after B1: A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B is not allowed to follow B1. All others should be randomized and there are no constraints to that. I hope, it makes more sense now. Okay, thanks. Well, in principle, you'd do something like this: <surveypage A> / ontrialbegin = [ values.do_not_select = surveypage.A1;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> <surveypage A1> / ontrialbegin = [ values.do_not_select = surveypage.A;] / subcaption = "Wie wirkt diese Person auf Sie?" / subcaptionfontstyle = ("Arial", 2.5%, true, false, false, false, 5, 0) / showquestionnumbers = false / questions = [1=A1; 2=negpos; 3=symp] / nextlabel = "Weiter" / nextbuttonposition = (47, 95) / showbackbutton=false </surveypage> setting values.do_not_select to "" otherwise and using that as the /not constraint: <list items> /items = (surveypage.A surveypage.A1 surveypage.A2 surveypage.A3 surveypage.A4 surveypage.B surveypage.B1 surveypage.B2 surveypage.B3 surveypage.B4) / not = (values.do_not_select)/ replace = false / selectionmode = random </list> You're going to run into a problem, though, because randomization happens on the fly: It's perfectly possible that for the last two trials only A and A1 (or B and B1) are left to be sampled in the list. Then the constraint has to be dropped and you'd get A followed by A1 (or vice versa). If you want to avoid that, you need to write an algorithm that constructs a valid sequence in advance and then just have the remainder of the script run that sequence.
|
|
|
mongrel
|
|
Group: Forum Members
Posts: 53,
Visits: 147
|
+x+x+x+x+xHey Dave, thanks for the quick reply! I have a few more questions, though. 1. It is not possible to use list for surveypages, right? Each item is on one page, see attached script. How can I randomize surveypages with certain constraints? And... 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? Thank you very much! Best, R > 1. It is not possible to use list for surveypages, right? It's perfectly possible. > 2. If I run the survey as a block, I have to change the surveypages into trials and cannot use sliders anymore, right? No. A <surveypage> *is* a special type of <trial>, you can run <surveypage>s per a <block>'s /trials attribute or any other means, just like regular <trial> elements. Note: I can't say anything about the script you attached, because it's unclear to me what exactly you want it to do. It does not seem to correspond to your initial description: " I would like the items to be presented in randimized order with certain constraints (e.g., B should never follow A, E should never be presented after D...)." In the script, there are only elements designated A and B, so I'm not sure how "B should never follow A" is supposed to be achievable. Thanks a lot! Sorry, that must have been confusing. A1 is not supposed to follow A and the other way around, B should not follow B1 and the other way around. (I just called them A and B when I thought there would not be any need to attach the script...). Okay, and what is and isn't supposed to follow A1, A2, etc. and B1, B2, etc. Can you spell that out, please, and please do so completely OK, so: All surveypages should be presented in randomized order. However, A1 should never follow after participants saw A and the other way around, meaning: After A: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A1 is not allowed to follow A. Same for A1 with A; after A1: A2, A3, A4, B, B1, B2, B3, B4 are allowed, only A is not allowed to follow A1. Same with B and B1; after B; A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B1 is not allowed to follow B. And the other way around: after B1: A, A1, A2, A3, A4, B2, B3, B4 are allowed, only B is not allowed to follow B1. All others should be randomized and there are no constraints to that. I hope, it makes more sense now.
|
|
|