The BCHOICE Procedure

Example 27.6 Quantities of Interest and Willingness To Pay

(View the complete code for this example.)

It is easy to give a model an interpretation in terms of a probability ratio (PR). The PR of choosing alternative a instead of alternative b while holding all other attributes or conditions the same is

where and are the probabilities of choosing alternative a and b, respectively.

We consider the fabric softener data simulated from Kuhfeld (2010). There are five fictitious fabric softener brands involved: Sploosh, Plumbbob, Platter, Moosey, and Another, where Another is the reference brand. Most brands were available at these three prices: 1.49, 1.99, and 2.49, except that the Another brand was only offered at 1.49.

data fabric;
   input Subj Set Choice Price Brand $ @@;
   datalines;
1       1       0       1.99    Sploosh
1       1       0       1.99    Plumbbob
1       1       1       1.99    Platter
1       1       0       2.49    Moosey
1       1       0       1.99    Another
1       2       0       2.49    Sploosh
1       2       0       1.49    Plumbbob
1       2       1       1.49    Platter
1       2       0       1.99    Moosey

   ... more lines ...   

50      18      0       2.49    Sploosh
50      18      0       2.49    Plumbbob
50      18      1       1.99    Platter
50      18      0       2.49    Moosey
50      18      0       1.99    Another
;

The following statements fit a logit model with fixed effects only.

proc bchoice data=fabric seed=123 out=fabric_out;
   class Brand(ref='Another' order=data) Subj Set;
   model Choice = Brand Price / choiceset=(Subj Set);
run;

The posterior summary statistics are shown in Output 27.6.1. The Another brand is the base category, whose part-worth is normalized to zero. The most to least preferred brands are: Platter, Moosey, Another, Plumbbob, and Sploosh. The average part-worth for having to pay an extra dollar is negative (–4.6).

Output 27.6.1: PROC BCHOICE Posterior Summary Statistics

The BCHOICE Procedure

Posterior Summaries and Intervals
ParameterNMeanStandard
Deviation
95% HPD Interval
Brand Sploosh5000-1.31330.2141-1.7429-0.8967
Brand Plumbbob5000-0.49400.1818-0.8256-0.1232
Brand Platter50002.09840.14571.82412.3891
Brand Moosey50000.62730.15980.33130.9504
Price5000-4.62100.2177-5.0567-4.2141


The PR of choosing Sploosh as opposed to Another (which is the reference category) simplifies to

This ratio indicates that the likelihood of choosing Sploosh is 0.27 times that of choosing Another. Sploosh is less favorable than Another.

The PR of choosing Sploosh instead of Plumbbob is

This shows that Sploosh is less preferred than Plumbbob at the same price.

You can derive the probabilities for any alternatives and any combinations of attributes, even imaginary ones. Suppose now we want to also take price into consideration. For example, the PR of choosing Sploosh at $1.49 as opposed to Plumbbob at $1.99 is

This indicates that the likelihood of choosing Sploosh at $1.49 is 4.44 times that of choosing Plumbbob at $1.99. Offering some discount on price makes Sploosh more preferred than Plumbbob.

Although it is easy to obtain the point estimates, sometimes you might want to estimate other quantities, such as the standard deviations or various quantiles. If you are interested in making inference based on any quantities that are transformations of the random variables, you can do it either directly in PROC BCHOICE or by using the DATA step after you run the simulation.

Suppose you want to set the reference category as Plumbbob so that you can directly compare any other brand with it, you can specify REF=’PLUMBBOB’ in the CLASS statement and rerun the PROC BCHOICE simulation. You can also use the DATA step to calculate the quantities of interest. The following DATA step uses the simulated values of Brand_Sploosh and Brand_Plumbbob from the output data set fabric_out to create a new series of posterior samples for Sploosh_Plumbbob, a new variable that is created to calculate the PR of these two brands:

data Transout;
   set fabric_out;
   Sploosh_Plumbbob=exp(Brand_Sploosh - Brand_Plumbbob);
run;

Then you can use some autocall macros to analyze the posterior samples of Sploosh_Plumbbob. For example, the %SUMINT macro provides summary statistics and 95% HPD intervals as described in the section Autocall Macros for Postprocessing.

%SUMINT(data=Transout, var=Sploosh_Plumbbob)

The results from using the %SUMINT macro are shown in Output 27.6.2. The posterior mean of the PR of choosing Sploosh over Plumbbob is about the same as the one that is computed just above. It also provides the standard deviation and 95% HPD interval, which indicates how spread out the distribution of the PR is.

Output 27.6.2: Sploosh versus Plumbbob

Posterior Summaries and Intervals
ParameterNMeanStandard
Deviation
95% HPD Interval
Sploosh_Plumbbob50000.44970.09070.27220.6327


The ratio of coefficients in most choice models has economic meanings. Part-worths are measure in utility units. Can we convert these to dollar equivalents? The answer is to compute the Willingness To Pay (WTP).

One’s WTP for attribute a versus attribute b is the increase in purchase price that keeps the utilities equal. We can approximate WTP by dividing the difference in the attributes’ part-worths by the price coefficient, given that the price coefficient is less than zero.

If and , we say that attribute b is preferred than attribute a when offered at the same price and one is willing to pay up to the amount to stay with b; If and , we say that attribute a is preferred than attribute b when offered at the same price and one is willing to pay up to the amount to stay with a.

Therefore, most subjects prefer Plumbbob over Sploosh at the same price; and they are willing to pay up to 0.18 dollars more to stay with Plumbbob.

We can even approximate the posterior distributions of the WTPs comparing each brand to Another by using the DATA step:

data WTPout;
   set fabric_out;
   Sploosh_WTP = Brand_Sploosh/price;
   Plumbbob_WTP= Brand_Plumbbob/price;
   Platter_WTP = Brand_Platter/price;
   Moosey_WTP  = Brand_Moosey/price;
run;

The posterior distributions of the WTPs is plotted in Output 27.6.3. The WTP of Sploosh versus Another and the WTP of Plumbbob versus Another are both located to the right of the zero line, meaning that Another is more popular than both Sploosh and Plumbbob; and the WTP of Sploosh versus Another is further away from the zero line compared to the WTP of Plumbbob versus Another, indicating that people are willing to pay more money to stay with Another before switching to Sploosh than switching to Plumbbob. Obtaining the whole distribution of the WTPs provides more information than having just the mean: it displays how well the mean estimates and how spread out the distribution is.

Output 27.6.3: Willingness to Pay Plot

Willingness to Pay Plot