# Elasticities for Multinomial Logit Model (Stata)

I estimat a multinomial logit model in Stata. Is it possible to compute elasticities from the MLogit model? If so, do I need to take the logarithm of the y and x variable, or only the log of x?

I ask because the mlogit model is non-linear, so I don't know what it means to compute d(lny)/d(lnx). (In Stata this would be mfx, eyex after mlogit model).

A similar question was asked in a lengthier form but was never answered: Income and price elasticity for multinomial logit/probit and alternative-specific conditional logit/multinomial probit in Stata?

Thomas

• Be aware that asking how to use Stata or for code are off topic here. I think your question about elasticities & the derivative in multinomial LR is a good one, but you may want to edit to emphasize that aspect. – gung - Reinstate Monica Jun 15 '16 at 15:42

Stata has the margins command that makes this as easy as pie to get elasticities for continuous variables (% change in probability of each outcome for a % change in x) and semi-elasticities for dummy variables (% change in probability of each outcome when x goes from 0 to 1). mfx has been superseded by margins.

Having said that, I find these elasticities hard to interpret and prefer to look at the change in probability for a % change in x or unit change in x. I will do that below as well, and try to connect the dots between the two ways of doing this.

Here's example of Stata code with interpretation for what you want:

. webuse sysdsn1
(Health insurance data)

. mlogit insure age i.(male nonwhite site), nolog

Multinomial logistic regression                 Number of obs     =        615
LR chi2(10)       =      42.99
Prob > chi2       =     0.0000
Log likelihood = -534.36165                     Pseudo R2         =     0.0387

------------------------------------------------------------------------------
insure |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
Indemnity    |  (base outcome)
-------------+----------------------------------------------------------------
Prepaid      |
age |   -.011745   .0061946    -1.90   0.058    -.0238862    .0003962
1.male |   .5616934   .2027465     2.77   0.006     .1643175    .9590693
1.nonwhite |   .9747768   .2363213     4.12   0.000     .5115955    1.437958
|
site |
2  |   .1130359   .2101903     0.54   0.591    -.2989296    .5250013
3  |  -.5879879   .2279351    -2.58   0.010    -1.034733   -.1412433
|
_cons |   .2697127   .3284422     0.82   0.412    -.3740222    .9134476
-------------+----------------------------------------------------------------
Uninsure     |
age |  -.0077961   .0114418    -0.68   0.496    -.0302217    .0146294
1.male |   .4518496   .3674867     1.23   0.219     -.268411     1.17211
1.nonwhite |   .2170589   .4256361     0.51   0.610    -.6171725     1.05129
|
site |
2  |  -1.211563   .4705127    -2.57   0.010    -2.133751   -.2893747
3  |  -.2078123   .3662926    -0.57   0.570    -.9257327     .510108
|
_cons |  -1.286943   .5923219    -2.17   0.030    -2.447872   -.1260134
------------------------------------------------------------------------------

. margins, eyex(age) predict(outcome(1))

Average marginal effects                        Number of obs     =        615
Model VCE    : OIM

Expression   : Pr(insure==Indemnity), predict(outcome(1))
ey/ex w.r.t. : age

------------------------------------------------------------------------------
|            Delta-method
|      ey/ex   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
age |   .2560951   .1330162     1.93   0.054    -.0046119    .5168021
------------------------------------------------------------------------------

. margins, eyex(age)

Average marginal effects                        Number of obs     =        615
Model VCE    : OIM

ey/ex w.r.t. : age
1._predict   : Pr(insure==Indemnity), predict(pr outcome(1))
2._predict   : Pr(insure==Prepaid), predict(pr outcome(2))
3._predict   : Pr(insure==Uninsure), predict(pr outcome(3))

------------------------------------------------------------------------------
|            Delta-method
|      ey/ex   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
age          |
_predict |
1  |   .2560951   .1330162     1.93   0.054    -.0046119    .5168021
2  |  -.2661848    .152332    -1.75   0.081    -.5647501    .0323805
3  |   -.090586   .4576158    -0.20   0.843    -.9874964    .8063244
------------------------------------------------------------------------------

. margins, eydx(male)

Average marginal effects                        Number of obs     =        615
Model VCE    : OIM

ey/dx w.r.t. : 1.male
1._predict   : Pr(insure==Indemnity), predict(pr outcome(1))
2._predict   : Pr(insure==Prepaid), predict(pr outcome(2))
3._predict   : Pr(insure==Uninsure), predict(pr outcome(3))

------------------------------------------------------------------------------
|            Delta-method
|      ey/dx   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.male       |
_predict |
1  |  -.3040742    .115607    -2.63   0.009    -.5306598   -.0774886
2  |   .2576192   .0958708     2.69   0.007     .0697159    .4455226
3  |   .1477754   .3243217     0.46   0.649    -.4878834    .7834342
------------------------------------------------------------------------------
Note: ey/dx for factor levels is the discrete change from the base level.


For interpretation, a 1% increase in age gives you .25% increase in the probability of choosing indemnity insurance (inelastic). Being male lowers the that probability by almost a third.

Personally, I find this much easier to interpret:

. margins, dyex(age) predict(outcome(1))

Average marginal effects                        Number of obs     =        615
Model VCE    : OIM

Expression   : Pr(insure==Indemnity), predict(outcome(1))
dy/ex w.r.t. : age

------------------------------------------------------------------------------
|            Delta-method
|      dy/ex   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
age |    .118398   .0622018     1.90   0.057    -.0035153    .2403113
------------------------------------------------------------------------------

. margins, dydx(age) predict(outcome(1))

Average marginal effects                        Number of obs     =        615
Model VCE    : OIM

Expression   : Pr(insure==Indemnity), predict(outcome(1))
dy/dx w.r.t. : age

------------------------------------------------------------------------------
|            Delta-method
|      dy/dx   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
age |   .0026655    .001399     1.91   0.057    -.0000765    .0054074
------------------------------------------------------------------------------


This says that 1% increase in age boost the probability of indemnity insurance by 11.8 percentage points and being a year older would give you a 2/10 of percentage point boost.

Let make sure the former agrees with what we did before. The baseline for indemnity is:

. margins, predict(outcome(1))

Predictive margins                              Number of obs     =        615
Model VCE    : OIM

Expression   : Pr(insure==Indemnity), predict(outcome(1))

------------------------------------------------------------------------------
|            Delta-method
|     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
_cons |   .4764228   .0197054    24.18   0.000      .437801    .5150446
------------------------------------------------------------------------------


An 11.8 percentage point increase expressed as percentage change over the baseline is .118/.476=.24789916, which is pretty close to 0.25.