Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: How do I estimate multinomial logit using glm?

 From brendan.halpin@ul.ie (Brendan Halpin) To statalist@hsphsun2.harvard.edu Subject Re: st: How do I estimate multinomial logit using glm? Date Wed, 06 Apr 2011 14:17:54 +0100

```On Wed, Apr 06 2011, Raquel Guimarães wrote:

> Taking into account that multinomial logit is a special case of glm,
> how would I estimate a multinomial logit model using glm? I do not
> want to use the mlogit command because I will try to modify an
> algorithm which uses glm.

I don't know if there is a general -glm- equivalent for -mlogit-.

If all your data are categorical, you can fit your multinomial logistic
as a log-linear model (glm with a poisson link) of the collapsed version

If you have continuous explanatory variables, you can approximate the
-mlogit- with a -logit-, by stacking the data. If you have C outcomes,
use C-1 stacks each containing the reference cases and the relevant
outcome, and append the stacks. Create a 0/1 outcome variable (base
category versus other category) and a stack identifier. Then fit a
logit, with the stack identifier interacted with the explanatory
variables. I append an example with four outcomes, and one binary and
one continuous explanatory variable. Parameter estimates will be close
to those from mlogit, though you have to combine first-order and
interaction terms to approximate the mlogit output (e.g., the Lib_Dem
age effect of .0139748 in the mlogit model corresponds to .0027183 +
.01302930 = .0157476 in the stacked logit).

I have only intuition telling me this is a sensible thing to do, so I'd
be interested in opinions from statalisters who are more informed than
I!

Brendan

Example below:
-------------

. mlogit vote i.univ age, baseoutcom(1)

Iteration 0:   log likelihood = -2895.9773
Iteration 1:   log likelihood = -2851.8536
Iteration 2:   log likelihood = -2851.0618
Iteration 3:   log likelihood = -2851.0613
Iteration 4:   log likelihood = -2851.0613

Multinomial logistic regression                   Number of obs   =       2180
LR chi2(6)      =      89.83
Prob > chi2     =     0.0000
Log likelihood = -2851.0613                       Pseudo R2       =     0.0155

------------------------------------------------------------------------------
vote |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
Con          |  (base outcome)
-------------+----------------------------------------------------------------
Lab          |
1.univ |  -.5002323   .2964365    -1.69   0.092    -1.081237    .0807725
age |   .0027612   .0036114     0.76   0.445    -.0043171    .0098394
_cons |   .1086836   .1628719     0.67   0.505    -.2105395    .4279067
-------------+----------------------------------------------------------------
Lib_Dem      |
1.univ |   .5005009   .2690018     1.86   0.063    -.0267329    1.027735
age |   .0139748   .0039518     3.54   0.000     .0062295    .0217201
_cons |  -.8745221   .1873641    -4.67   0.000    -1.241749   -.5072953
-------------+----------------------------------------------------------------
Nat_other    |
1.univ |  -.6209613   .2682885    -2.31   0.021    -1.146797   -.0951255
age |  -.0148047   .0034644    -4.27   0.000    -.0215949   -.0080146
_cons |   1.260937   .1486731     8.48   0.000      .969543    1.552331
------------------------------------------------------------------------------

.
. save /tmp/baseline, replace
file /tmp/baseline.dta saved

.
. keep if inlist(vote,1,2)
(1202 observations deleted)

. gen outcome = vote == 2

. gen type = 2

. save /tmp/base2, replace
file /tmp/base2.dta saved

.
. use /tmp/baseline

. keep if inlist(vote,1,3)
(1391 observations deleted)

. gen outcome = vote == 3

. gen type = 3

. save /tmp/base3, replace
file /tmp/base3.dta saved

.
. use /tmp/baseline

. keep if inlist(vote,1,4)
(885 observations deleted)

. gen outcome = vote == 4

. gen type = 4

. save /tmp/base4, replace
file /tmp/base4.dta saved

.
. clear

. use /tmp/base2

. append using /tmp/base3
(label vote already defined)
(label aage already defined)

. append using /tmp/base4
(label vote already defined)
(label aage already defined)

.
. logit outcome i.univ##i.type c.age##i.type

Iteration 0:   log likelihood = -2094.0704
Iteration 1:   log likelihood = -2024.0629
Iteration 2:   log likelihood = -2023.9331
Iteration 3:   log likelihood = -2023.9331

Logistic regression                               Number of obs   =       3062
LR chi2(8)      =     140.27
Prob > chi2     =     0.0000
Log likelihood = -2023.9331                       Pseudo R2       =     0.0335

------------------------------------------------------------------------------
outcome |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
1.univ |  -.4995742   .2964996    -1.68   0.092    -1.080703    .0815543
|
type |
3  |  -1.059861    .256713    -4.13   0.000     -1.56301   -.5567129
4  |   1.134931   .2194968     5.17   0.000     .7047247    1.565136
|
univ#type |
1 3  |   .9875869   .4007027     2.46   0.014     .2022241     1.77295
1 4  |  -.1123549   .4001716    -0.28   0.779    -.8966767     .671967
|
age |   .0027183   .0036004     0.75   0.450    -.0043383    .0097748
|
type#c.age |
3  |   .0130293   .0055662     2.34   0.019     .0021197    .0239389
4  |  -.0171311   .0049773    -3.44   0.001    -.0268865   -.0073758
|
_cons |    .110413   .1625013     0.68   0.497    -.2080837    .4289098
------------------------------------------------------------------------------

--
Brendan Halpin,   Department of Sociology,   University of Limerick,   Ireland
Tel: w +353-61-213147  f +353-61-202569  h +353-61-338562;  Room F1-009 x 3147
mailto:brendan.halpin@ul.ie    ULSociology on Facebook: http://on.fb.me/gSmj8x