I'm having trouble figuring out how to correctly calculate conjoint part-worth-utility from a discrete choice experiment.
I have recently run a pilot study to analyse in R where I used the packages “support.CEs” and “survival” and I’m trying to figure out how to calculate conjoint part-worth-utilities from the coefficients, but not sure I’m doing it correctly.
For simplicity sake I will use a simplified example about rice to explain my problem.
The experiment contains the following attributes and levels.
Region = c("RegA", "RegB", "RegC"), Cultivation = c("Conv", "NoChem", "Organic"), Price = c("1700", "2000", "2300")),
I then used the
clogit() function to analyse the results of the experiment using the following model:
RES ~ ASC + RegB + RegC + NoChem + Organic + Price + strata(STR)
This gave the following result:
coef exp(coef) se(coef) z p ASC 4,443 85,035 0,483 9,199 0,00E+00 RegB 0,469 1,599 0,137 3,417 6,30E-04 RegC 0,968 2,632 0,108 8,996 0,00E+00 NoChem 0,752 2,120 0,177 4,257 2,10E-05 Organic 1,165 3,205 0,141 8,252 1,10E-16 Price -0,002 0,998 0,000 -9,732 0,00E+00
Now my assumption is that the part-worth-utilities for each attribute level is simply the corresponding coefficients, with the remaining level not part of the model (
RegA for the Region attribute) being 0?
However, while looking at another R package called
conjoint, devised to analyse rating based conjoint, I noticed that they determined the last levels value in a different way:
# Example 1 library(conjoint) data(herbata) ul<-caUtilities(hpref,hprof,hlevn) print(ul)
To find the remaining levels utility they take the sum of all other levels in the attribute and subtract it from 0, meaning
RegA would have an utility of -1,437 instead of 0.
0 - (0,469 + 0,968) = -1,437
I can't quite figure out the logic behind this as it seems to considerably widen the distance in utility between
RegB/RegC while keeping the distance between
At first I dismissed this as being a mistake, however I then saw that the example for the
ChoiceModelR package also calculated the remaining attribute levels as the inverse sum of the rest.
Is this truly the correct way to determine the utility of the remaining attribute level?
If so, how is the result of say the “marginal willingness to pay” function mwtp() reliable, when it would sets
RegA as 0?