# Marketing - MaxDiff - Save Variable(s) - Sawtooth-Style Preference Shares (K Alternatives)

Save variables that contain Sawtooth-style preference shares (K alternatives)

Create new variables which contain the Sawtooth-style preference shares (formula below) for the alternatives in a MaxDiff latent class analysisMaxDiff latent class analysis, MaxDiff hierarchical BayesMaxDiff hierarchical Bayes or MaxDiff ensembleMaxDiff ensemble output. The shares are computed from the individual-level coefficients generated by the MaxDiff analysis. You should select the output before running this script.

## Example

The script produces a SUMMARY table with the new variables:

## Technical details

Each respondent's coefficients are first zero-centered by subtracting the average. The zero-centered utility score for alternative $\displaystyle{ j }$ is denoted $\displaystyle{ U_{j} }$. The un-scaled Sawtooth-style preference parameter for alternative $\displaystyle{ j }$ is then:

$\displaystyle{ P_{j} = \frac{e^{U_{j}}}{e^{U_{j}} + K - 1} }$

where $\displaystyle{ K }$ is the number of alternatives that were shown to the respondent in each task of the MaxDiff experiment.

The final Sawtooth-style preference share is obtained by scaling these parameters so that they add up to 1 (or 100%):

$\displaystyle{ S_{j} = \frac{P_{j}}{\sum_{j'}P_{j'}} }$

## How to apply this QScript

• Start typing the name of the QScript into the Search features and data box in the top right of the Q window.
• Click on the QScript when it appears in the QScripts and Rules section of the search results.

OR

• Select Automate > Browse Online Library.
• Select this QScript from the list.

## Customizing the QScript

This QScript is written in JavaScript and can be customized by copying and modifying the JavaScript.

### Customizing QScripts in Q4.11 and more recent versions

• Start typing the name of the QScript into the Search features and data box in the top right of the Q window.
• Hover your mouse over the QScript when it appears in the QScripts and Rules section of the search results.
• Press Edit a Copy (bottom-left corner of the preview).
• Modify the JavaScript (see QScripts for more detail on this).
• Either:
• Run the QScript, by pressing the blue triangle button.
• Save the QScript and run it at a later time, using Automate > Run QScript (Macro) from File.

### Customizing QScripts in older versions

• Copy the JavaScript shown on this page.
• Create a new text file, giving it a file extension of .QScript. See here for more information about how to do this.
• Modify the JavaScript (see QScripts for more detail on this).
• Run the file using Automate > Run QScript (Macro) from File.

## JavaScript

includeWeb('QScript R Output Functions');

saveVariables('Sawtooth-style preference shares', 'MaxDiff',
'input.maxdiff = ',
'\ncoeffs = as.matrix(flipMaxDiff::RespondentParameters(input.maxdiff))\n' +
'zero.centered = coeffs - rowMeans(coeffs)\n' +
'numerator = exp(zero.centered)\n' +
'denominator = numerator + input.maxdiff\$n.alternatives.per.task - 1\n' +
'P = numerator/denominator\n' +
'sawtooth.shares = prop.table(P, 1)', null, null, 'sawth.pref.shr', ['FitMaxDiff', 'MaxDiffEnsemble']);