Have an idea?

Visit Sawtooth Software Feedback to share your ideas on how we can improve our products.

Block randomization and quota controls

I have 2 concepts for which a set of 5 questions are asked. Both concepts will be seen by all respondents, but we need to randomize the order in which they are shown so that half of the sample sees concept 1 first and the other halve sees concept 2 first. I created 2 block to group the questions by concept, but I'm not sure how to create the randomization of the blocks and control for sample quotas 50/50 for the order in which the concepts are shown.
Any ideas of how to do this?
Thanks in advance!
asked Mar 19, 2015 by rinsights (410 points)
retagged Mar 19, 2015 by Walter Williams

1 Answer

0 votes
 
Best answer
Let's first start with the handling of concept 1+2 being shown randomly.

Concept 1 - Q101 / Q102 / Q103 / Q104 / Q105.
Concept 2 - Q201 / Q202 / Q203 / Q204 / Q205.

Setup Q101-Q105 and Q201-Q205.

Go to the Write Questionnaire window and on the right hand side select the Randomize button. Now select Blocks. We want to Add Set so select Q101 as Anchor Question 1 and Q105 as Anchor Question 2. Repeat the process where we add a new set for Q201-Q205.

Sawtooth now knows you have 2 blocks of questions (Q101-Q105 and Q201-Q205) in the one set. Hit OK to save.

Go to your lists and add a new parent list called BlockList and define codes 1+2 as follows ...
1 1
2 2

Now create a constructed list called BlockConList as such ...
ADD(BlockList)
Randomize()

Go back to where you defined your blocks and down the bottom select the "Use Constructed List" option and select BlockConList from the pull down menu.

After Q205, on it's own page, setup a quota question called QTConcept. Add two quota definitions as follows ...

Quota1
Value=1
Cell Name=Concept1
Cell Limit=? (whatever your quota target is)
Qualification Logic=ListValue(BlockConList,1)=1

Quota2
Value=2
Cell Name=Concept2
Cell Limit=? (whatever your quota target is)
Qualification Logic=ListValue(BlockConList,1)=2

Select the Settings tab and choose the question where you want your disqualified respondents to skip to. This will generally be a Terminate question where the status is set to disqualified.

When you go into the admin module, you will now see your quota cells displayed. You can change the quota targets during field if you need to. As interviewing progresses, you will see your counts increment.

The randomisation of the two concepts should be fairly close to a 50-50 proportion. If one concept fills up, the other should be filling up shortly after. If you have a very strict set of rules where you do not want any respondent to be disqualified because a concept has been filled, you can apply some more complex programming in the constructed list where you can read the quota counts using Quota control functions (e.g. QuotaCellRemaining or QuotaCellCompletes).
answered Mar 19, 2015 by Paul Moon Platinum (55,975 points)
edited Mar 25, 2015 by Paul Moon
Thank you for your prompt and thorough answer Paul. This works! I found a more cumbersome solution but yours is better.
Paul, a follow-up question. I need to use the same order from the BlockConList in your example (Blocksorder for me) to show images of both concepts side by side in one table.
I created a pre-defined list (Concepts)  with both images and then a constructed list (Conceptshown) using this code:

Begin Unverified Perl
If VALUE("Blocksorder",1)==1)
{ADD ("Concepts", 1);}

If VALUE("Blocksorder",1)==2)
{ADD ("Concepts, 2);}

End Unverified

Then in the free-format question to show the images I did this:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
  <td> [% ListLabel(Conceptshown,1)%] </td>
  <td> [% ListLabel(Conceptshown,2)%]  </td>
</tr>
</table>

But, it is not working. What is wrong with this?
I'm not sure if your problem is with the displaying of the images and/or the order of the them? Let's cover both issues.

You should have a parent list which looks something like this (call it ConceptList) ...

1 <img src="[%GraphicsPath()%]Concept1.jpg" alt="" border="0">
2 <img src="[%GraphicsPath()%]Concept2.jpg" alt="" border="0">

Save your image files to your graphics folder.

You already have BlockConList setup so we can use this to assist with the order of the concepts.

In your free format question, pop this in the first position ...

[%ListLabel(ConceptList,ListValue(BlockConList,1))%]

Note - the ListValue function is saying grab the 1st value from BlockConList. Assume it is a "2". The command then gets evaluated as such - ListLabel(ConceptList,2). So display the label of the 2nd concept. This now looks more clear.

And pop this in the second position ...

[%ListLabel(ConceptList,ListValue(BlockConList,2))%]
Forgot to mention your constructed list "Conceptshown" was heading down the right track but you needed to change "VALUE" to "LISTVALUE" for it to work. You were wanting to know the list value of the 1st item in your "Blocksorder" constructed list. Try that.

My solution provided earlier does not require you to use any constructed lists, just using the flexibility of SSI Script within SSI Script . You've gotta love the power and flexibility of constructed lists. A pat on the back to the boys at Sawtooth Software!
...