Have an idea?

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

Does this approach work for conjoint exercises?

I have a study where respondents are pre-selected to go to 2 of 12 conjoints, based on pass-in variables I'm getting from an external software platform for the non-conjoint part of the survey. Let's call them Exercise1 and Exercise2.  

Right now I have branched skip logic to take respondents to each CBC conjoint they're supposed to see. So, if, say, Exercise1=1 and Exercise2=3, they go to Conjoint 1 since they meet the logic for Exercise1=1 or Exercise2=1, and Conjoint 3 is they meet the logic of Exercise1=3 or Exercise2=3.

That works perfectly fine on its own, with the skip logic on conjoint specific pre-screens before the conjoint itself. However, it doesn't randomize the order in which the respondent sees each exercise by itself.

What I want to do is if a respondent is assigned to exercise 1 and exercise 3, for example, sometimes have the conjoint questions for exercise 1 be first, and sometimes have the exercises for exercise 3 be first.

I tried to create randomized sets of each conjoint section, from my initial first screen of text question to the last conjoint question for each set, and it doesn't seem to work when I test it with the existing skip logic patterns. You just keep respondents seeing the conjoints hierarchically according to the redirects of the skip logic to the next coded exercise.

So, what it sounds like what I want to do is:
1) Set up a ParentList of 12 elements

1) Create a constructed list, which I'll creatively calling ConjList. It will represent coding for the two conjoints the respondent sees, using Unverified PERL, with GETVALUE for my passed-in variable and for each code, adding them to a listmember value of ParentList that might put them there as true or false.

So, something like this:

Begin Unverified Perl

if(GETVALUE("Exercise1") == 1 || GETVALUE("Exercise2") == 1)



elseif(GETVALUE("Exercise1") == 2 || GETVALUE("Exercise2") == 2)
elseif(GETVALUE("Exercise1") == 3 || GETVALUE("Exercise2") == 3)

(and so on, for all 12 conditions)


End Unverified

2) Apply this ConjList constructed list to every one of the 12 conjoint blocks I set up in Randomized Blocks
3) Get rid of my skip logic in each individual conjoint, since it's not necessary now.

Sound right?
related to an answer for: How to combine randomize and skip logic
asked Jul 22, 2021 by sdrucker (180 points)

1 Answer

0 votes
Stuart, you should see my comments on the earlier forum post. Thanks Paul.
answered Jul 22, 2021 by Paul Moon Platinum (98,770 points)
Just did, thank you!