Solved – Multinomial Logistic Regression: IIA violated – What to do

hausmanmultinomial-distributionstata

I have a data set with 561 observations.
I want to compare two groups on an outcome measure with 3 categories.
I have a couple of covariates.

I used the following syntax (Stata SE 12.1):

mlogit outcome_measure covariate_1 covariate_2 i.covariate_3 i.covariate_4 group

To check for Independence from Irrelevant Attributes (IIA) I used

mlogtest , haus

This gave me the following output:
output of "mlogtest , haus"

I understand that this means that the data do not meet the IIA assumption.

Stata then suggests to use the suest (Seemingly Unrelated Estimation) command. I could try this, but I am not sure if this is a valid alternative. What do you guys think?

EDIT (2013-09-18):

@GUNG: I asked one of my statistics professors. He said that the additional tests won't be performed if the assumption is not violated for one of the outcomes (in the case of three outcome categories). He therefore thinks that I can proceed with the mlogit model.

@Dimitriy V Masterov
I ran the Small-Hsiao IIA test. These are the outcomes:
Outcomes Stata Small-Hsiao IIA test

I guess this means IIA is not violated. Do you agree?

EDIT (2013-09-22):

As Dimitriy V. Masterov suggested, I ran the new syntax for Hausman.
Because I have 3 categories in my outcome variable, I compared the Full model to all models with one category of my outcome variable omitted (Full vs. 1+2, Full vs. 1+3, Full vs. 2+3). These are the outcomes:

Hausman - Ignoring Category 1
Hausman - Ignoring Category 2
Hausman - Ignoring Category 3

It looks like leaving out the third category changes the model significantly. Does this mean that I cannot use Multinomial Logistic Regression and that I should move to (the suggested) suest (Seemingly Unrelated Estimation)?

suest is giving the following outputs:

suest output

The output looks fine to me and it supports my hypothesis, but I am not sure if suest is valid, what it assumptions are and how I can test these.

Any comments are welcome!

Best Answer

Depending on your version of Stata, you can try the new syntax for hausman:

webuse sysdsn1
mlogit insure age male 
estimates store Full
mlogit insure age male if insure !="Uninsure":insure
estimates store Restricted
hausman Restricted Full, alleqs constant

I can't get mlogtest to work with Stata 13 (it's an older, user-written command), so I can't verify it's the same error, but here's an example of a Hausman test that fails:

mlogit insure age male if insure !="Prepaid":insure
hausman Restricted Full, alleqs constant

The test involved calculating the test statistic $H = (b-B)'V(b-B)^{-1}(b-B)$. The problem has to do with the estimator of the variance $V(b-B)$ as $V(b)-V(B)$, which is only asymptotically feasible. $b$ and $B$ are the restricted and unrestricted coefficient vectors. Here it isn't a proper variance matrix, and the Hausman test becomes undefined.

suest estimates the simultaneous variance-covariance of the coefficients, and you can use it in the following way:

suest Restricted Full, noomitted
test [Restricted_Uninsure = Full_Uninsure], cons

suest estimates $V(b-B)$ by $V(b)-Cov(b,B)-Cov(B,b)+V(B)$. This is always admissible, so the resulting test is always well defined. I would prefer this.

You will have to loop over dropped categories to get all the tests.


@marquisdecarabas Something like this:

webuse sysdsn1
mlogit insure age male 
estimates store m1, title("Full Model")
mlogit insure age male if insure != "Uninsure":insure
estimates store m2, title("Not Uninsured")
mlogit insure age male if insure != "Prepaid":insure
estimates store m3, title("Not Prepaid")

suest m1 m2 m3, noomitted
test [m1_Prepaid = m2_Prepaid], cons
test [m1_Uninsure = m3_Uninsure], cons accum
Related Question