Millisecond Forums

How to measure time spent on a survey page

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

By Gabriela - 7/2/2015

Hi guys!

I want my participants to read instruction carefully and then a few consecutive pages with a story. It's crucial for me to know how long people spend on reading those information. I'd really appreciate if you could help me with getting the information how long a participant spend on reading instructions and other survey pages? 

I've already checked the forum (also this thread http://www.millisecond.com/forums/Topic15376.aspx?Keywords=survey with clock option but I don't know how to apply this without clock being visible for the participants). 

I'd like to avoid putting a random item/question to every page to get information about reaction times.

Thanks,
Gabriela
By Dave - 7/3/2015

You cannot really do this using *instruction* pages (i.e., <page> or <htmlpage> elements displayed via /pre- and /postinstructions attributes). With <surveypage>s, you can do something like this:

<block instructionsblock>
/ trials = [1=page1; 2=page2;]
</block>

<surveypage page1>
/ caption = "Page 1"
/ ontrialbegin = [values.t_start=script.elapsedtime;]
/ ontrialend = [values.t_end=script.elapsedtime;]
/ showpagenumbers = false
/ finishlabel = "Next"
</surveypage>

<surveypage page2>
/ caption = "Page 2"
/ ontrialbegin = [values.t_start=script.elapsedtime;]
/ ontrialend = [values.t_end=script.elapsedtime;]
/ showpagenumbers = false
/ finishlabel = "Next"
</surveypage>

<values>
/ t_start = 0
/ t_end = 0
</values>

<expressions>
/ timespentonpage = (values.t_end-values.t_start)
</expressions>

<data>
/ columns = [date time subject blocknum blockcode trialnum trialcode response latency correct expressions.timespentonpage]
/ separatefiles = true
</data>

Note: You need to run your surveypages via a <block>.
By Gabriela - 7/6/2015

Thank you Dave. This code works perfectly! 

One more question: in my data files I have two variables: latency and expressions.timespentonpage. They show similar results but there's always a few ms difference that usually varies between 10 and 100ms, e.g. latency: 3438 vs. expressions.timespentonpage: 3506, or latency:49226 vs.expressions.timespentonpage:49260. Where's that difference coming from? And which variable should I analyze in this case?

Side note for the future novice users: make sure that you use /finishlabel command not /nextlabel one (this one doesn't work here).
By Dave - 7/6/2015

Latency measurement starts with the 1st (relevant) display frame Inquisit can sync to. /ontrialbegin logic is executed before that; hence the result of the calculation in expressions.timespentonpage will be slightly larger. Whether you analyze latency or the expression's result is largely a matter of preference, IMO. Both will be highly correlated.
By Gabriela - 7/7/2015

Thanks for clarification!