Have an idea?

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

How to combine randomize and skip logic

Hi there, I'm trying to create a survey where I'm asking a multi-select, the respondent can select up to nine features they would be interested in. After that, there is a set of price ladder questions for each feature. However, no matter how many the respondent selects, I only want to ask price ladder questions for two of the features they've selected. One additional caveat is that there there are two out of the nine, if the respondent does select them, I do want to test for it, regardless of how many others they've selected.

Currently, I've set up the first multi-select question. For each of the price ladder, I have the BetterLighthouseLibrary and the actual price ladder question for each. I have skip logic so that if the user have already completed up to 2 price ladder questions, they skip to the next set of questions. However, what I can't figure out is how to apply randomize to it.

I have tried applying randomize on a page and by creating a block list and set length to just 2, but for both, I get the error of "Skip Logic - Skipping to a question that is not in the same randomized block as the question being skipped from is not allowed. Change the Skip To question to a question contained in the same block or outside the set range." or "Skip Logic - Skipping to a question that is involved in the same page randomization as the question being skipped from is not allowed."

Any advice would be appreciated. Thanks for your help.
asked Dec 8, 2020 by anonymous

1 Answer

0 votes
 
Best answer
I will try to provide an example to assist here. Hopefully this gets you up and running.

Let's say your multi question is Q1 with the 9 features.

Now create a constructed list and let's call it FeaturesConList. This will use the parent list used at Q1. It will look like this ...
AIC(Q1)
Randomize()
ListMax(2)

This constructed list will tell us which of the 9 features the respondent will answer.

Now you have a set of questions for each of the 9 options. Let's assume they look something like this ...

Feature 1: Q2-Q3
Feature 2: Q4-Q5
Feature 3: Q6-Q7
Feature 4: Q8-Q9
Feature 5: Q10-Q11
Feature 6: Q12-Q13
Feature 7: Q14-Q15
Feature 8: Q16-Q17
Feature 9: Q18-Q19

Now go to Randomize | Blocks | Add Set and enter in each of the 9 blocks (Q2-Q3, Q4-Q5, ..., Q18-Q19). Select FeaturesConList as the constructed list. Hit OK and save. The number of blocks entered should be 9 to match the 9 features.

Now the way this should work, is the respondent selects as many features as necessary at Q1, then your constructed list will randomly select 2 of those features (it could be one feature if they only selected one feature at Q1). You should see only 2 blocks of questions shown maximum to the respondent based on this setup.

Note: No skips required here. The randomised blocks are doing the dirty work for you. Pretty cool hey.

Try it out ...

Let me know how you go.
answered Dec 8, 2020 by Paul Moon Platinum (89,980 points)
Hi Paul, that worked perfectly. I didn't realize that randomized blocks will solve the skip issue, that's great. Thank you!

I did have a quick follow up, as this doesn't allow for the prioritization of certain features . If say, features 1 and 2 were the priority features in the instance that if a user selected 1, 2, 4, and 5, I would always want to prioritize 1 and 2. Or if a user selected only one of the two, say something like 1, 3, 5, and 6, I would want to prioritize the 1 and then randomize the 3, 5, and 6. Is there an way to account for that? Thank you!
Hi Paul, I was able to figure out my question and posting here for posterity.

AIC has the ability to limit the response with this function "AIC (QuestionName, StartMember#, EndMember#)." I've pulled out the prioritized features out of the random loop and apply the skip functions to them, while still retaining the randomize loop you suggested for the rest of the features.

Thanks again for all your help. Thank you!
You can apply priorities within constructed lists.

Example ...

If I wanted to apply a priority to features 1+2, I would do this ...

Constructed list 1 - call it Features1ConList
AIC(Q1,1,2)
Randomize()

Constructed list 2 - call it Features2ConList
AIC(Q1,3,9)
Randomize()

Constructed list 3 - call it FeaturesConList
ADD(Features1ConList)
ADD(Features2ConList)
ListMax(2)
Randomize()

All the randomised block setup remains the same.

And great to hear that you have it working beautifully.

Puts a smile on my face!
...