Indifference curves are a way of showing relative preferences for quantities of two things (e.g., preferences for price versus delivery times for fast food). This post shows how to compute indifference curves for conjoint analysis models.


The contour plot below shows indifference between price and meal quality, from a choice-based conjoint study of home delivery preferences in the United States. It is read as follows:

  • People prefer low prices and high quality (i.e., the utilities are highest at the bottom-left and lowest at the top-right).
  • The bottom-right corner shows that the utility for a restaurant with a quality rating of 3.0 and a price of $10 per diner, has a utility of around about 0 (read from the legend).
  • If we follow the curve from the bottom-right corner up to where it is at a restaurant quality of 4, we can see that this equates to a price of around $15. This tells us that:
    3/5 quality + $10 = 4/5 quality + $15. Putting it a different way, it tells us that improving quality from 3 to 4 out of 5 is worth about an average of $5 to the average diner.
  • Following the curve all the way to the left of the plot, we can see that:
    3/5 quality + $10 = 4/5 quality + $15 = 4.7/5 quality + $20
  • The sweet spot is to have price less than $20 and quality more than 4. It's impossible to have a high utility without both of these.

Step 1: Compute the average utility of attribute levels

The first step in computing indifference curves is to compute the average utilities for the attribute levels being evaluated. These are obtained by estimating a choice model in Displayr, selecting the model, and then clicking Insert > More > Conjoint/Choice Modeling > Save Variable(s) > Individual-Level Coefficients. The new variables will then appear in the Data Sets tree. If you drag them onto a page in Displayr, you will get a table of their means, like the one below.

Step 2: Create an indifference table

The utility of combinations of different attribute levels is computed by addition. For example, the utility of $30 price per person and an average rating of 4.7 (scroll down in the table), is -3.3 +2.3 = -1.0. The table below shows the calculations for all combinations of price and quality rating. Alternatively, you can create indifference curves for market or preference share using a simulator.

Step 3: Create the contour plot

The final stage is to create a contour plot (essentially a type of heatmap) where curves interpolate between all the points on the indifference table. The code below uses the plotly R package to create the indifference curve shown at the beginning of the post.

You can view these calculations, hooked up to the raw data and models in Displayr, by clicking here.