Randomize order of questions

The general strategy we recommend is you put your questions in a group,
then replicate that group x times with x different orderings. Then
randomize which group shows.

If you don't like having to consolidate the responses in your back-end
processing, you can build calculated fields that consolidate answers into a
fixed set of fields, one for each question.

Lots of people do this. The questions don't change order per se, but it
appears that they do for people filling out the surveys -- which is
generally good enough.

Best,

Chris

··· On Mon, Jun 9, 2014 at 1:29 PM, Mitch Sundt wrote:

This is generally not going to be feasible in ODK Collect.

Does anyone do this and have any recommendations?


w.r.t. random-once()

ODK Collect 1.4.3 has a once() function. Anything computed within it will
only be computed once.

So, random-once() is simply once(random()) in ODK Collect 1.4.3.

On Sun, Jun 8, 2014 at 11:16 AM, hatchileconsult@gmail.com wrote:

Hi All\

I would like to randomly ask questions in one section of the survey in
order to avoid bias, but i want to ensure that all questions in that
section are asked.

As an example, lets say that this particular section of the survey has 10
questions which should all be asked to each respondent. However, i would
like to randomize the order in which they appear.

I do understand i can use the rand()in the constraint field, but not sure
how i can build on this in XLSForm environment. I have tried the
random-once() but my version of ODK does not support it.

Any ideas? Much appreciated.

Francis

--

Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en


You received this message because you are subscribed to the Google Groups
"ODK Community" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
Mitch Sundt
Software Engineer
University of Washington
mitchellsundt@gmail.com

--

Post: opendatakit@googlegroups.com
Unsubscribe: opendatakit+unsubscribe@googlegroups.com
Options: http://groups.google.com/group/opendatakit?hl=en


You received this message because you are subscribed to the Google Groups
"ODK Community" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to opendatakit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

1 Like

Can you please be more specific? I don't know where to insert the formula for randomization in the file excel.

··· Il giorno lunedì 9 giugno 2014 19:32:56 UTC+2, Christopher Robert ha scritto: > The general strategy we recommend is you put your questions in a group, then replicate that group x times with x different orderings. Then randomize which group shows. > > > If you don't like having to consolidate the responses in your back-end processing, you can build calculated fields that consolidate answers into a fixed set of fields, one for each question. > > > > > Lots of people do this. The questions don't change order per se, but it appears that they do for people filling out the surveys -- which is generally good enough. > > > Best, > > > > > Chris > > > > > > On Mon, Jun 9, 2014 at 1:29 PM, Mitch Sundt wrote: > > > > > > This is generally not going to be feasible in ODK Collect. > > > Does anyone do this and have any recommendations? > > > > > -------------------- > > w.r.t. random-once() > > > ODK Collect 1.4.3 has a once() function. Anything computed within it will only be computed once. > > So, random-once() is simply once(random()) in ODK Collect 1.4.3. > > > > > > > > > > > > On Sun, Jun 8, 2014 at 11:16 AM, wrote: > > > > Hi All\ > > > > I would like to randomly ask questions in one section of the survey in order to avoid bias, but i want to ensure that all questions in that section are asked. > > > > As an example, lets say that this particular section of the survey has 10 questions which should all be asked to each respondent. However, i would like to randomize the order in which they appear. > > > > I do understand i can use the rand()in the constraint field, but not sure how i can build on this in XLSForm environment. I have tried the random-once() but my version of ODK does not support it. > > > > Any ideas? Much appreciated. > > > > Francis > > > > -- > > -- > > Post: opend...@googlegroups.com > > Unsubscribe: opendatakit...@googlegroups.com > > Options: http://groups.google.com/group/opendatakit?hl=en > > > > --- > > You received this message because you are subscribed to the Google Groups "ODK Community" group. > > To unsubscribe from this group and stop receiving emails from it, send an email to opendatakit...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. > > > > > -- > Mitch Sundt > Software Engineer > University of Washington > mitche...@gmail.com > > > > > > > > -- > > -- > > Post: opend...@googlegroups.com > > Unsubscribe: opendatakit...@googlegroups.com > > Options: http://groups.google.com/group/opendatakit?hl=en > > > > --- > > You received this message because you are subscribed to the Google Groups "ODK Community" group. > > To unsubscribe from this group and stop receiving emails from it, send an email to opendatakit...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout.
  1. Make an initial calculation field which generates a random number
  2. Work out your block of X questions
  3. Make a group called ORDER 1
    3a) Pu the complete set of questions inside this group
    3b) Set the relevant field for the begin group line to be if the random number is between X and Y
  4. Make a group called ORDER 2
    4a) Put the complete set of questions inside this group in a different order from ORDER1
    4b) Set the relevant field for the begin group line to be if the random number is between Y and Z

REPEAT until you have the desired number of groups.
Obviously the values of the relevant field depend on how many ordering you end up with.

··· On Tuesday, June 14, 2016 at 6:26:58 PM UTC+1, nonni....@studenti.uniroma1.it wrote: > Can you please be more specific? I don't know where to insert the formula for randomization in the file excel. > > > > > > Il giorno lunedì 9 giugno 2014 19:32:56 UTC+2, Christopher Robert ha scritto: > > The general strategy we recommend is you put your questions in a group, then replicate that group x times with x different orderings. Then randomize which group shows. > > > > > > If you don't like having to consolidate the responses in your back-end processing, you can build calculated fields that consolidate answers into a fixed set of fields, one for each question. > > > > > > > > > > Lots of people do this. The questions don't change order per se, but it appears that they do for people filling out the surveys -- which is generally good enough. > > > > > > Best, > > > > > > > > > > Chris > > > > > > > > > > > > On Mon, Jun 9, 2014 at 1:29 PM, Mitch Sundt wrote: > > > > > > > > > > > > This is generally not going to be feasible in ODK Collect. > > > > > > Does anyone do this and have any recommendations? > > > > > > > > > > -------------------- > > > > w.r.t. random-once() > > > > > > ODK Collect 1.4.3 has a once() function. Anything computed within it will only be computed once. > > > > So, random-once() is simply once(random()) in ODK Collect 1.4.3. > > > > > > > > > > > > > > > > > > > > > > > > On Sun, Jun 8, 2014 at 11:16 AM, wrote: > > > > > > > > Hi All\ > > > > > > > > I would like to randomly ask questions in one section of the survey in order to avoid bias, but i want to ensure that all questions in that section are asked. > > > > > > > > As an example, lets say that this particular section of the survey has 10 questions which should all be asked to each respondent. However, i would like to randomize the order in which they appear. > > > > > > > > I do understand i can use the rand()in the constraint field, but not sure how i can build on this in XLSForm environment. I have tried the random-once() but my version of ODK does not support it. > > > > > > > > Any ideas? Much appreciated. > > > > > > > > Francis > > > > > > > > -- > > > > -- > > > > Post: opend...@googlegroups.com > > > > Unsubscribe: opendatakit...@googlegroups.com > > > > Options: http://groups.google.com/group/opendatakit?hl=en > > > > > > > > --- > > > > You received this message because you are subscribed to the Google Groups "ODK Community" group. > > > > To unsubscribe from this group and stop receiving emails from it, send an email to opendatakit...@googlegroups.com. > > > > For more options, visit https://groups.google.com/d/optout. > > > > > > > > > > -- > > Mitch Sundt > > Software Engineer > > University of Washington > > mitche...@gmail.com > > > > > > > > > > > > > > > > -- > > > > -- > > > > Post: opend...@googlegroups.com > > > > Unsubscribe: opendatakit...@googlegroups.com > > > > Options: http://groups.google.com/group/opendatakit?hl=en > > > > > > > > --- > > > > You received this message because you are subscribed to the Google Groups "ODK Community" group. > > > > To unsubscribe from this group and stop receiving emails from it, send an email to opendatakit...@googlegroups.com. > > > > For more options, visit https://groups.google.com/d/optout.

Hi Christopher, thanks for your help through the years on this randomization question. I've successfully used your methods to create 5-10 different randomization blocks, but the back-end processing is quite tedious. Do you have recommendations for using the calculate fields within an XML form to simplify this process?

The issue I'm having is that a basic "sum( )" doesn't work because blanks + 1 will throw an error (or just a blank). And adding in a "default" value doesn't help if the question block isn't shown. Is there an easier way around this than creating a bunch of if(${block1_question1}='',0) statements for each block?

Thanks,
James

Unfortunately, no, there really isn't a less-tedious way right now. We have
a large number of users affected by this, and we have an active discussion
in our SurveyCTO feature-requests forum re: potential designs; we're trying
to find the right balance of ease-of-use and flexibility. I think we're
close to a design that can work, and then we just have to figure out how
quickly we can get it into the product. (As with everything we do, one key
consideration is the effect on components end-to-end: so how does it work
in the online form designer? in Excel form definitions? in data exports?
etc., etc.)

Sorry that I don't have a quicker or better answer for you!

Best,

Chris

Anything new happening in the regard of ordering questions? As far as I know it possible to order options quiet easily. However does one still have to create repeated groups to order questions? If I want to randomise 10 Questions/Items of a Likert-Skale (e.g. measuring attitudes) displayed using a field-list, I would have to create 10! = 3628800 to take into acount every possible order.

1 Like

@colonus We haven't come up with an easier way to randomize questions, but it is now easier to do likert-scales using the rank widget.

We faced a similar problem and we tried a comparatively simpler way to randomize the order of the question. We used repeat group to make this easier. However, there will be some additional work when the data is downloaded.

There is a sample form here and relevant csv file here.

1 Like

Hi Merhab_Ali,

I tried to look at the files you shared and were not able to upload it to our platform because of some errors in the scripting.

I don't understand the code on the repeat_count of the repeat in row 12! It is if condition based on values in a follow up questions which is not correct!

Do you have a working version of this file? Also Could you please elaborate how does this work?

Looking forward to hearing from you.

All the best,

Ali

Hi Yankwa,

Could you please explain how to implement the Randomize order of questions using rank widget?

Thank you in advance.

Ali

Check the XLS form. If it works let us know rank.xlsx (15.4 KB)

2 Likes

Sir, can you please share xlsx form of this example.?

Sir, this is ranking the options, but i want randomize the questions order in a group. can i do such thing with any group to randomize the questions ordering.?

No, it's not possible.

FYI I've developed an XLSForm form that can be used to effectively randomize the presented order of a group of questions, but unfortunately it involves some rather complicated XPath expression handling which, regrettably, the current javaRosa does not support. It does however run perfectly under Enketo (which uses a different XPath processor).

If you happen to be using Enketo for your data collection I would be happy to share it with you privately (but I dont want to post it to the forum until it is supported by javaRosa, and hence usable under ODK Collect).

In the mean time, if you are desparate, you can probably utilize the random sampling solution posted to the Forum by @chrissyhroberts to accomplish something. Its a bit involved, requires constructing an external cvs dataset, and not truly random, but it should provide you with a non-repeating psuedo-random sample that you could utilize to drive showing your questions in a different order.

1 Like

Can you please tell me that how to develop questionnaire on enketo?

Thanks for solution.

Can you please tell me that how to develop questionnaire on enketo?

Sorry for the delay in responding; I had to dust it off and fiddle around to get it working again. On the plus side, it now works under both Enketo and Collect! I've posted it here: Randomizing the order of questions

BTW, thanks for inspiring me to finally revisit it... :wink:

  • Gareth
1 Like

Thank you very much for your valuable response