Millisecond Forums

Skip survey question and return to later.

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

By lsprute - 9/26/2013

Hello,


I am building a survey of questions that I would like a participant to have the option of skipping and then returning to after they have been through all the questions.  I can't quite figure out if I can do this with Inquisit. My current code is below.  I have also tried / skip=[radiobuttons.Q1 != "Skip"], and using the skip attribute in the survey element. These options skip all the questions before a participant has had the option of choosing skip.


Any thoughts?


Thanks,


Lisa



<radiobuttons Q1>


/ caption = "Here is the first type of question?"


/ options = ("Yes", 


"No",


"I am not sure",


"Skip")


/ optionvalues = ("0", "1", "Not sure","skip")


</radiobuttons>




<image 8shapes>


/ position = (40%,10%)


/ items = ("8shapes.png")


</image>




<radiobuttons Q3>


/ caption = "This is my second type of question"


/ options = ("#1", "#2", "#3", "#4", "Answer not here","Skip")


/ optionvalues = ("0","0","1","0","Not here","skip")


/ position = (40%,60%)


</radiobuttons>






<surveypage Ques1>


/ questions = [1=Q1] 


/ showquestionnumbers = false


/ skip=[radiobuttons.Q1 >= 0]


</surveypage>




<surveypage Ques3>


/ questions = [1=8shapes; 2=Q3] 


/ showquestionnumbers = false


/ skip=[radiobuttons.Q3 >= 0]


</surveypage>



<survey RNAssessment>


/ pages = [1=Ques1; 2=Ques3]


</survey>


By Dave - 9/26/2013

/skip works at the page level, so there is no way to skip individual questions. It means *skip the entire page if some condition is met*. Thus



<surveypage Ques1>


/ questions = [1=Q1] 


/ showquestionnumbers = false


/ skip=[radiobuttons.Q1 >= 0]


</surveypage>



does not make much sense to me. How are you going to skip the page based on an event that has not occurred yet? Moreover


/ skip=[radiobuttons.Q1 >= 0]


can't do anything anyway, because radiobuttons.Q1 does not mean anything (it is not a property and does not return any value). You are probably looking for something like radiobuttons.Q1.response (see the documentation for the <radiobuttons> element for other available properties).


Finally, if you want participants to be able to not answer questions and review them later, you should simply (a) set the respective question's /required attribute to 'false' and (b) allow backnavigation in your <survey>.


By lsprute - 9/26/2013

Thanks for the quick response!


The back button option unfortunately won't work with my design; the participant must eventually respond to the question.  I have come up with the following that works.  Thanks again for clarifying the functionality of skip.


Best,


Lisa




------------------------


<radiobuttons Q1>


/ caption = "Here is the first question?"


/ options = ("Yes", 


"No",


"I am not sure",


"Skip")


/ optionvalues = ("0", "1", "5","Skip")


</radiobuttons>



<radiobuttons Q1again>


/ caption = "Here is the first question?"


/ options = ("Yes", 


"No",


"I am not sure")


/ optionvalues = ("0", "1", "5")


</radiobuttons>


------------------------


<image 8shapes>


/ position = (40%,10%)


/ items = ("8shapes.png")


</image>



<radiobuttons Q3>


/ caption = "This is my second question"


/ options = ("#1", "#2", "#3", "#4", "Answer not here","Skip")


/ optionvalues = ("0","0","1","0","5","Skip")


/ position = (40%,50%)


</radiobuttons>



<radiobuttons Q3again>


/ caption = "This is my second question"


/ options = ("#1", "#2", "#3", "#4", "Answer not here")


/ optionvalues = ("0","0","1","0","5")


/ position = (40%,50%)


</radiobuttons>



-----Survey Pages-----


<surveypage Ques1>


/ questions = [1=Q1] 


/ showquestionnumbers = false


</surveypage>



<surveypage Ques3>


/ questions = [1=8shapes; 2=Q3] 


/ showquestionnumbers = false


</surveypage>



<surveypage Ques1again>


/ questions = [1=Q1again] 


/ showquestionnumbers = false


/ skip=[radiobuttons.Q1.response != "Skip"]


</surveypage>



<surveypage Ques3again>


/ questions = [1=8shapes; 2=Q3again] 


/ showquestionnumbers = false


/ skip=[radiobuttons.Q3.response != "Skip"]


</surveypage>



<survey RNAssessment>


/ pages = [1=Ques1; 2=Ques3; 3=Ques1again; 4=Ques3again]


</survey>


By Dave - 9/26/2013

The back button option unfortunately won't work with my design; the participant must eventually respond to the question.


Ok, I see.


I have come up with the following that works [...]


Indeed, that's a good idea. Once could also do something along the lines of (posted for the sake of posterity):


<block myblock>
/ trials = [1-2=sequence(pg1,pg2,pg3)]
</block>

<surveypage pg1>
/ caption = "Page 1"
/ questions = [1=rb1]
/ skip = [radiobuttons.rb1.response=="A" || radiobuttons.rb1.response=="B" || radiobuttons.rb1.response=="C"]
</surveypage>

<surveypage pg2>
/ caption = "Page 2"
/ questions = [1=rb2]
/ skip = [radiobuttons.rb2.response=="A" || radiobuttons.rb2.response=="B" || radiobuttons.rb2.response=="C"]
</surveypage>

<surveypage pg3>
/ caption = "Page 3"
/ questions = [1=rb3]
/ skip = [radiobuttons.rb3.response=="A" || radiobuttons.rb3.response=="B" || radiobuttons.rb3.response=="C"]
</surveypage>

<radiobuttons rb1>
/ options = ("A", "B", "C", "Skip")
</radiobuttons>

<radiobuttons rb2>
/ options = ("A", "B", "C", "Skip")
</radiobuttons>

<radiobuttons rb3>
/ options = ("A", "B", "C", "Skip")
</radiobuttons>

By ibaxendine - 7/19/2015

Hi!

I realise this post is quite old, but the above script is almost perfect for what I want. 

I'm completely new to inquisit, and am using it for a research project. I'd like to create a questionnaire as above, but in addition to having the ability to skip and return to a question, I'd also like to time how long it takes respondents to answer the question. 

Can anyone offer any help as to how I can add this to the above tutorial?
By Dave - 7/19/2015

The latency column(s) tell you when responses on a <surveypage> were submitted (by clicking the "Next" button). There is no way to get latencies for individual questions if you have several on a page, because there is no unambiguous way to say what that latency should be. After all, you can move back and forth between questions on a page, change your responses, etc.

In addition, if you want to be able to move back and forth between *pages*, you ought to run the surveypages via <survey> element, not a <block>. This, however, may create problems with the /skip logic and/or data recording (survey data is recorded as a single row, each question represented via several columns; i.e., you'd only get the latency and response for the *last* time someone answered a given question).

If all you want is making answering questions *not mandatory*, set their /required attributes to false and run pages via a <survey>. That way, a participant can skip certain questions on a page and revisit them later if s/he so chooses.
By ibaxendine - 7/24/2015

Is there a way I can get this script to mark if someone's initial response was 'skip'?

Also, if some answers are typed, can I get the time it took to start / finish typing?
By Dave - 7/26/2015

Re. #1: If you run pages via a <survey>: No, not really. If you run pages via a <block>: Yes, you'll see that in the response column.

Re. #2: With <textbox> elements on a <surveypage>: No. If running an <openended> trial via a <block> instead: Yes, you can log the firstchar- and lastcharlatency properties to the data file.