Have an idea?

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

CBC: Choose efficient tasks on the fly with constructed list for one attribute

Hi all,

I know that you can do this with ACBC, but for various reasons ACBC isn't a good fit for my project. I'm using CBC. If possible, I'd like to write code that chooses an efficient combination of attributes on the fly given a constructed list that respondents create earlier in the survey. For example, one attribute I'm exploring is region, and there are seven regions. I'd only like respondents to see regions that they report having worked in before. In my situation, it wouldn't make much sense to show them concepts with regions where they haven't worked before.

Currently, I build a constructed list with the regions where a particular respondent has worked, and if the default CBC experimental design includes a region where they haven't worked, I randomly select one of the regions where they have worked and substitute it. But random selection obviously isn't the most efficient way to select the region to show.

Do you have conceptual suggestions for how I might program a more efficient approach in Sawtooth with CBC? Or is my random selection of regions the best possible approach?

asked May 20, 2017 by pjwomble (210 points)
retagged May 20, 2017 by Walter Williams

1 Answer

+2 votes
Remember that ACBC can be made to look quite a bit like just standard CBC.  You can skip the BYO section.  You can skip the consideration phase section.  You can jump straight to the CBC-looking choices among triples (the tournament section).  But, ACBC doesn't allow you to include a "None" option in the CBC-looking choice tournament section.

The big hangup with trying to use our CBC with constructed lists to do this is that the number of levels per attribute needs to be constant across people within the same CBC exercise.  And, of course there is the messiness and manual effort to manually code your conjoint questions properly in the file for utility computation if you do constructed lists.  If you start manipulating CBC designs by using constructed lists or (as you say you're thinking of doing) by doing fancy things on the fly to substitute levels that are relevant for the respondent for levels that are not, you need to have your strategy ready for all the manual data processing you'd need to do to prepare the data in the proper way to estimate utilities.

If somebody held a gun to my head and told me I had to do it in Sawtooth Software's CBC and I needed to create highly efficient designs on the fly that could accommodate between 2 to 7 levels of an attribute depending on the respondent's answers to previous questions, then I'd create six CBC exercises within the questionnaire.  One of the exercises would have 2 levels of region; another with 3 levels of region, etc.  Then, I'd use constructed lists and skip patterns to show just one of the CBC exercises to each respondent and to pass into the attribute the levels of region to display to the respondent.  Then, I'd have the messy job of data processing to combine all the CBC data into one .CSV file and to recode the attribute levels for region so that level 1 meant level 1 across all respondents, etc.  Furthermore, I'd want to add additional synthetic tasks to the data set for each respondent that communicated that dropped levels were not chosen versus included levels.  That way utilities for dropped regions are strongly influenced to have lower utility than regions where the respondent has worked.  After manipulating the .CSV data file containing the CBC data, I'd submit the data file to our standalone CBC/HB system for individual-level utility estimation.

It all is pretty messy and I would very much want to avoid all that effort and the data processing involved.  It would be many hours of effort, for sure.
answered May 21, 2017 by Bryan Orme Platinum Sawtooth Software, Inc. (163,315 points)
Thanks very much.