10 March 2019 | by Tim Bock

Using Indifference Curves to Understand Trade-offs in Conjoint Analysis

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 Q, selecting the model, and then clicking Automate > Browse Online Library > Conjoint/Choice Modeling > Save Variable(s) > Individual-Level Coefficients.

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.

Author: Tim Bock

Tim Bock is the founder of Displayr. Tim is a data scientist, who has consulted, published academic papers, and won awards, for problems/techniques as diverse as neural networks, mixture models, data fusion, market segmentation, IPO pricing, small sample research, and data visualization. He has conducted data science projects for numerous companies, including Pfizer, Coca Cola, ACNielsen, KFC, Weight Watchers, Unilever, and Nestle. He is also the founder of Q www.qresearchsoftware.com, a data science product designed for survey research, which is used by all the world’s seven largest market research consultancies. He studied econometrics, maths, and marketing, and has a University Medal and PhD from the University of New South Wales (Australia’s leading research university), where he was an adjunct member of staff for 15 years.

No comment. Share your thoughts.

Leave a Reply

Your email address will not be published. Required fields are marked *