# Singularity issues in multinomial logit model with differing choice sets

I am estimating a discrete choice model in which individuals choose which schools to attend.

I have a large amount of data on individuals and schools. However, each particular school only appears in my data set one or two times since individuals face different sets of school choices based on where they live, etc.

For example, individual A may choose between schools 1, 2, and 3 while individual B chooses between 4, 5, and 6. These choices should provide information on the importance of school attributes, but I cannot determine how to specify this model correctly.

I have followed the advice in this post and ensured that all individual-specific characteristics appear after the |. There is no missing data in my sample. Unfortunately I cannot post my data directly given its somewhat sensitive nature.

• I have partially answered my own question in learning that the name for this alternative-based model I am looking for is the conditional logit model. I have successfully run my model using clogit(survival) and mclogit(mclogit) after removing some collinear variables identified via condition numbers and VIF. The clogit function runs with no warnings, mclogit returns a "fitted rates numerically zero" error, and mlogit returns wither "missing value where TRUE/FALSE needed" or "computationally singular", depending on the number of variables included. – user26903 Jun 21 '13 at 17:15
• The mlogit configuration is being run with only alternative-specific variables located in the first part of the equation: mlogit(ind~v1+v2|0|0,data=noNA.dat,shape="long",choice="ind",chid.var="pubid",alt.var="school") Could you offer some suggestions on what might cause this to fail in mlogit while it runs (with warnings) using mclogit and without warnings using clogit? If this is still a singularity/separation issues, can you recommend further diagnostic tests beyond pairwise condition numbers, VIF, and obvious checks for separation though e.g. plotting? – user26903 Jun 21 '13 at 17:39

mlogit will infer the choice set based on data appearing in the rows of your dataset. Set chid.var and you should be good to go. See this document for a more detailed explanation.