Solved – Calculating variable importance in a multinomial logit model

importancemethodologymlogitr

I am analysing data from a discrete choice experiment from a sample of 1000 responses where a respondent were presented with two cards and had to choose their preferred option. In the survey there were 3 attributes out of which one was categorical while the two other (price, speed) were continuous. Below is the model output.

Call:
mlogit(formula = choice ~ speed + price + cat1 + cat2 + cat3, 
    data = test.data, method = "nr", print.level = 0)

Frequencies of alternatives:
      1       2 
0.71558 0.28442 

nr method
5 iterations, 0h:0m:0s 
g'(-H)^-1g = 0.000741 
successive function values within tolerance limits 

Coefficients :
                Estimate Std. Error  t-value Pr(>|t|)    
2:(intercept) -0.3582505  0.0372617  -9.6144  < 2e-16 ***
speed          -0.1726341  0.0105252 -16.4020  < 2e-16 ***
price         -0.1672694  0.0073242 -22.8380  < 2e-16 ***
cat1           0.0965562  0.0415806   2.3221  0.02023 *  
cat2           0.8722452  0.0526031  16.5816  < 2e-16 ***
cat3          -0.0788710  0.0451093  -1.7484  0.08039 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log-Likelihood: -5419.7
McFadden R^2:  0.093196 
Likelihood ratio test : chisq = 1114 (p.value = < 2.22e-16

Based on these results, I would like to calculate relative variable importance and have this scaled to 100. Based on reading chapter 9.4 here, my understanding is that I'm meant to use the difference of the range in the attribute’s utility values and then scale this to a 100. As I have a multinomial logit model, I would of course have to first exponentiate the utility values.

However, I do not know how to extract utility values for the different attributes levels using the mlogit package – is this somehow possible?

Also, how should I go about dealing with the fourth categorical value that is not in the model?

Best Answer

You might consider using a dominance analysis instead (see Luchman, 2014). This approach would decompose the McFadden's R2 and might, as a consequence, be easier to interpret than the utility-based approach discussed here.

That would avoid the 4th categorical value issue and would scale to 100 if standardized based on the McFadden R2.

The dominance method is implemented in the R package relaimpo, but has not been extended to accommodate mlogits. The only version I know of that does is in Stata. That said, dominance analysis is not a terribly difficult method to implement.

To do so, collect all McFadden's R2's according to each possible subset including or omitting each predictor (in your case 2^5 - 1 different models) and average them as in the linked article (note: the gives some examples along which to follow).

Related Question