Have an idea?

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

Adaptive Maximum Difference Scripting


I read the paper Adaptive Maximum Difference Scaling (2006) and was very cool and I have come up with a design. My question is with the scripting I thought I needed to use free form questions with constructed lists but I guess I have gone down the wrong path here.  Please could someone point me in the right direction of how to script this or if there is a example somewhere that i might have missed.

Thanks for your time and any help would be great thank you
asked Sep 10, 2016 by kerwick (160 points)
retagged Sep 10, 2016 by Walter Williams

1 Answer

+1 vote
Best answer
You're right that you can go the free format question route with adaptive MaxDiff.  However, my colleague in our Sawtooth Analytics division (Keith Chrzan) recommended what I think turns out to be an easier path to victory with adaptive MaxDiff within Lighthouse Studio (SSI Web).

Think of each phase of Adaptive MaxDiff as a separate MaxDiff exercise that uses a constructed list with a fixed number of items (though the specific items for each respondent vary for phases 2 and later).

So, phase I MaxDiff exercise takes all items into it and has the typical default of 300 versions in it.

Phase II MaxDiff exercise (also can use the default 300 versions) uses a constructed list where the worst items are dropped (as judged in phase I).  I think you'll need to use some unverified Perl and an IF statement to drop the worst items from the master item list to move the appropriate items into Phase II.  Perhaps Keith can give you some hints on that if you contact him directly.  Using SSI Script he probably has to refer to the specific question name and also refer to the MaxDiff design so that he knows which item was shown in each position in each task.


To do data analysis, you need to export a .CHO file for each separate exercise.  Then (assuming you want to do HB analysis), using your own data processing tools, you need to collect and stack the multiple tasks from those separate exercises from the different phases together for each respondent record into a single master .CHO file.  Then, you submit that assembled .CHO file to CBC/HB Standalone software for HB analysis.  (Or, submit to Latent Class standalone module for latent class analysis if you want that too.)
answered Sep 10, 2016 by Bryan Orme Platinum Sawtooth Software, Inc. (134,015 points)
selected Sep 11, 2016 by kerwick
Thank you this is a far more elegant solution and easier to deal with.

I am hitting one problem where I get a "index outside of bounds of array" error for the sparse MPC stages at the end eg stage 5 is 12 attributes of 6 sets two items on a page and I cannot generate a design for it. Am i doing something silly here.

thank you again for taking the time to give such a descriptive answer huge help
You are right.  The design gets so thin for MPC (method of paired comparisons) that it breaks our algorithm.  

However, the design you need is quite trivial (shown below) and I recommend you just manually create that design in the .CSV format (the same format you get when you export MPC designs that don't break from our MaxDiff software).  Then import that design into our software using the Import Design... button.

An optimal design for 12 items showing 2 at a time in 6 sets is (each row represents a set) is as follows:

1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
9    10
10    11
11    12
12    1

(This is a cyclical design which accomplishes level balance and connectivity.)

Of course, you don't want each person to get the same design in this exact sequence, so you should manually create about 10 or more versions (blocks) of this design in the .CSV file by scrambling the order of these 12 questions and listing out those blocks in the .CSV file for import into the MaxDiff exercise.  

Another thing to point out is that since the 12 items coming through the constructed list into this design are different based on each respondent's answers to the previous MaxDiff questions, there already will be a substantial amount of variation from respondent to respondent regarding which 12 items those design indices actually represent.

Test everything out from data collection to analysis to make sure it's working prior to fielding your study!  Manually keep track of what you are seeing on the screen and what you are answering and then check it versus your final .CHO file!
thank you all the versions and lists are set up. But I do not seem to be able to force the winner from the previous stage into the a set in the next stage

Just getting rid of the previous rejected works fine.

Below is what i was thinking would work for stage two list
Sorry for bugging you again and thanks for your help

Begin Unverified Perl


            ADD("Stage1win", 1);
            ADD("Stage1remains", 1, 4);

            ADD("Stage1win", 2);
            ADD("Stage1remains", 5, 8);

            ADD("Stage1win", 3);
            ADD("Stage1remains", 9, 12);

            ADD("Stage1win", 4);
            ADD("Stage1remains", 13, 16);

            ADD("Stage1win", 5);
            ADD("Stage1remains", 17, 20);

            ADD("Stage1win", 6);
            ADD("Stage1remains", 21, 24);

End Unverified