# Multinomial probit for varying choice set

I apologize in advance for the "how do I run this model in R" question, but it turns out that's the shape my problem has assumed :-). Hopefully I have enough substantive questions surrounding it to be interesting, and the question will come out more like, "Does this command in R correspond to this statistical model?"

I have collected data in a conjoint analysis (design matrix created using the Federov method from the AlgDesign package)--since this term seems to have a few meanings, I'll clarify. I asked individuals to choose among four offered options, which varied (orthogonally) on several plan dimensions c("cm","pio","prev","price") . The fourth option was always the base option and did not vary between choice sets. I also collected characteristics about each individual c(chi, hexp, sex, age).

Each individual was presented with a choice set, made their choice, then was presented with another choice set for another choice, and so on. They were instructed to ignore their previous choices when making the next choice.

I can run a logit on this fairly trivially:

library(mlogit)
form <- choice~ cm*pio*prev+price | chi+hexp+sex+age
choices.logit <- mlogit(form, data=choices.mldata,reflevel=4)


However the logit as run misses a lot of the complexities of the data: the repeated samples from the same individual, the fact that individuals are presented with choice sets that do not always have the same options, etc.

My model is similar to this one, but without the quantity discounting.

MNP:mnp seems to be able to handle this case just fine, in that it notes:

If the choice set varies from one observation to another, use the syntax, cbind(y1, y2, y3) ~ x1 + x2, in the case of a three choice problem, and indicate unavailable alternatives by NA. If only the most preferred choice is observed, y1, y2, and y3 are indicator variables that take on the value one for individuals who prefer that choice and zero otherwise. The last column of the response matrix, y3 in this particular example syntax, is used as the base category.

I could dummy out each of the plans (where plan is defined as a unique combination of c("cm","pio","prev","price")), include the plan characteristics as covariates, and run the probit. However, what makes a choice distinct in my survey is not the ID of the choice itself but the combination of characteristics which are offered. My sense is that what MNP would estimate is the probability of choosing e.g. plan 3, when what I care about is not plan 3 but the willingness to pay for pio, cm, and prev.

Am I just misinterpreting the details of what mnp would do, and I should go ahead and run it as described? Or is my concern legitimate and I should look for another way to run this model?

Thanks!

Here's a sample of my data:

choices.mldata <- structure(list(PersonId = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 12L,
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 19L, 19L,
19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L,
19L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L,
22L, 22L, 22L, 22L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L, 26L,
26L, 26L, 26L, 26L, 26L, 26L, 26L, 31L, 31L, 31L, 31L, 31L, 31L,
31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 33L, 33L, 33L,
33L, 33L, 33L, 33L, 33L, 33L, 33L, 33L, 33L, 33L, 33L, 33L, 33L,
36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L, 36L,
36L, 36L, 36L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L, 37L,
37L, 37L, 40L, 40L, 40L, 40L, 40L, 40L, 40L, 40L, 40L, 40L, 40L,
40L, 40L, 40L, 40L, 40L), option = structure(c(1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("1",
"2", "3", "4"), class = "factor"), cm = c(FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE,
TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE), pio = c(TRUE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE,
TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE), prev = c(TRUE, TRUE,
TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE,
FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE,
TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE,
TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, TRUE, TRUE, TRUE, FALSE), price = c(2500, 2987,
2714, 2500, 2500, 2604, 2501, 2500, 2884, 2500, 2584, 2500, 2747,
2536, 2970, 2500, 2883, 2503, 2700, 2500, 2512, 2578, 2500, 2500,
2500, 2544, 2685, 2500, 2537, 2967, 2500, 2500, 2586, 2798, 2552,
2500, 2851, 2532, 2643, 2500, 2529, 2644, 2581, 2500, 2542, 2501,
3012, 2500, 2549, 2500, 2927, 2500, 2515, 2923, 2592, 2500, 2515,
2761, 2500, 2500, 2553, 2714, 2671, 2500, 2500, 2788, 2516, 2500,
2679, 2848, 2518, 2500, 2593, 2500, 2731, 2500, 2840, 2500, 2502,
2500, 2726, 2583, 2924, 2500, 2670, 2535, 2580, 2500, 2505, 2624,
2781, 2500, 2512, 2573, 2500, 2500, 2888, 2500, 2500, 2500, 2500,
2633, 2507, 2500, 2500, 2520, 2500, 2500, 2509, 2586, 2502, 2500,
2745, 2529, 2581, 2500, 2672, 2517, 2513, 2500, 2560, 3021, 2519,
2500, 2511, 2516, 2543, 2500, 2681, 2501, 3024, 2500, 2574, 2652,
2510, 2500, 2933, 2500, 2592, 2500, 2835, 2505, 2755, 2500),
choice = c(FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE), id = c("2_1", "2_1", "2_1", "2_1", "2_3",
"2_3", "2_3", "2_3", "12_1", "12_1", "12_1", "12_1", "12_2",
"12_2", "12_2", "12_2", "12_3", "12_3", "12_3", "12_3", "19_1",
"19_1", "19_1", "19_1", "19_2", "19_2", "19_2", "19_2", "19_3",
"19_3", "19_3", "19_3", "19_4", "19_4", "19_4", "19_4", "22_1",
"22_1", "22_1", "22_1", "22_2", "22_2", "22_2", "22_2", "22_3",
"22_3", "22_3", "22_3", "22_4", "22_4", "22_4", "22_4", "26_1",
"26_1", "26_1", "26_1", "26_2", "26_2", "26_2", "26_2", "26_3",
"26_3", "26_3", "26_3", "26_4", "26_4", "26_4", "26_4", "31_1",
"31_1", "31_1", "31_1", "31_2", "31_2", "31_2", "31_2", "31_3",
"31_3", "31_3", "31_3", "31_4", "31_4", "31_4", "31_4", "33_1",
"33_1", "33_1", "33_1", "33_2", "33_2", "33_2", "33_2", "33_3",
"33_3", "33_3", "33_3", "33_4", "33_4", "33_4", "33_4", "36_1",
"36_1", "36_1", "36_1", "36_2", "36_2", "36_2", "36_2", "36_3",
"36_3", "36_3", "36_3", "36_4", "36_4", "36_4", "36_4", "37_1",
"37_1", "37_1", "37_1", "37_3", "37_3", "37_3", "37_3", "37_4",
"37_4", "37_4", "37_4", "40_1", "40_1", "40_1", "40_1", "40_2",
"40_2", "40_2", "40_2", "40_3", "40_3", "40_3", "40_3", "40_4",
"40_4", "40_4", "40_4"), chi = structure(c(2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("No", "Yes"), class = "factor"),
hexp = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("$1,000 -$2,499",
"$2,500 -$4,999", "$5,000 or More", "$500 - $999", "Less than$500"
), class = "factor"), sex = structure(c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L), .Label = c("Female", "Male"), class = "factor"),
age = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("18-29",
"30-39", "40-49", "50-64"), class = "factor")), .Names = c("PersonId",
"option", "cm", "pio", "prev", "price", "choice", "id", "chi",
"hexp", "sex", "age"), row.names = c("1.1", "1.2", "1.3", "1.4",
"2.1", "2.2", "2.3", "2.4", "3.1", "3.2", "3.3", "3.4", "4.1",
"4.2", "4.3", "4.4", "5.1", "5.2", "5.3", "5.4", "6.1", "6.2",
"6.3", "6.4", "7.1", "7.2", "7.3", "7.4", "8.1", "8.2", "8.3",
"8.4", "9.1", "9.2", "9.3", "9.4", "10.1", "10.2", "10.3", "10.4",
"11.1", "11.2", "11.3", "11.4", "12.1", "12.2", "12.3", "12.4",
"13.1", "13.2", "13.3", "13.4", "14.1", "14.2", "14.3", "14.4",
"15.1", "15.2", "15.3", "15.4", "16.1", "16.2", "16.3", "16.4",
"17.1", "17.2", "17.3", "17.4", "18.1", "18.2", "18.3", "18.4",
"19.1", "19.2", "19.3", "19.4", "20.1", "20.2", "20.3", "20.4",
"21.1", "21.2", "21.3", "21.4", "22.1", "22.2", "22.3", "22.4",
"23.1", "23.2", "23.3", "23.4", "24.1", "24.2", "24.3", "24.4",
"25.1", "25.2", "25.3", "25.4", "26.1", "26.2", "26.3", "26.4",
"27.1", "27.2", "27.3", "27.4", "28.1", "28.2", "28.3", "28.4",
"29.1", "29.2", "29.3", "29.4", "30.1", "30.2", "30.3", "30.4",
"31.1", "31.2", "31.3", "31.4", "32.1", "32.2", "32.3", "32.4",
"33.1", "33.2", "33.3", "33.4", "34.1", "34.2", "34.3", "34.4",
"35.1", "35.2", "35.3", "35.4", "36.1", "36.2", "36.3", "36.4"
), class = c("mlogit.data", "data.frame"), index = structure(list(
chid = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L,
7L, 7L, 7L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L, 10L, 10L,
10L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 13L, 13L, 13L,
13L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L, 16L, 16L, 16L,
16L, 17L, 17L, 17L, 17L, 18L, 18L, 18L, 18L, 19L, 19L, 19L,
19L, 20L, 20L, 20L, 20L, 21L, 21L, 21L, 21L, 22L, 22L, 22L,
22L, 23L, 23L, 23L, 23L, 24L, 24L, 24L, 24L, 25L, 25L, 25L,
25L, 26L, 26L, 26L, 26L, 27L, 27L, 27L, 27L, 28L, 28L, 28L,
28L, 29L, 29L, 29L, 29L, 30L, 30L, 30L, 30L, 31L, 31L, 31L,
31L, 32L, 32L, 32L, 32L, 33L, 33L, 33L, 33L, 34L, 34L, 34L,
34L, 35L, 35L, 35L, 35L, 36L, 36L, 36L, 36L), .Label = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
"13", "14", "15", "16", "17", "18", "19", "20", "21", "22",
"23", "24", "25", "26", "27", "28", "29", "30", "31", "32",
"33", "34", "35", "36"), class = "factor"), alt = structure(c(1L,
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L,
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L,
3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L,
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("1", "2", "3",
"4"), class = "factor"), id = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L), .Label = c("2", "12",
"19", "22", "26", "31", "33", "36", "37", "40"), class = "factor")), .Names = c("chid",
"alt", "id"), row.names = c("1.1", "1.2", "1.3", "1.4", "2.1",
"2.2", "2.3", "2.4", "3.1", "3.2", "3.3", "3.4", "4.1", "4.2",
"4.3", "4.4", "5.1", "5.2", "5.3", "5.4", "6.1", "6.2", "6.3",
"6.4", "7.1", "7.2", "7.3", "7.4", "8.1", "8.2", "8.3", "8.4",
"9.1", "9.2", "9.3", "9.4", "10.1", "10.2", "10.3", "10.4", "11.1",
"11.2", "11.3", "11.4", "12.1", "12.2", "12.3", "12.4", "13.1",
"13.2", "13.3", "13.4", "14.1", "14.2", "14.3", "14.4", "15.1",
"15.2", "15.3", "15.4", "16.1", "16.2", "16.3", "16.4", "17.1",
"17.2", "17.3", "17.4", "18.1", "18.2", "18.3", "18.4", "19.1",
"19.2", "19.3", "19.4", "20.1", "20.2", "20.3", "20.4", "21.1",
"21.2", "21.3", "21.4", "22.1", "22.2", "22.3", "22.4", "23.1",
"23.2", "23.3", "23.4", "24.1", "24.2", "24.3", "24.4", "25.1",
"25.2", "25.3", "25.4", "26.1", "26.2", "26.3", "26.4", "27.1",
"27.2", "27.3", "27.4", "28.1", "28.2", "28.3", "28.4", "29.1",
"29.2", "29.3", "29.4", "30.1", "30.2", "30.3", "30.4", "31.1",
"31.2", "31.3", "31.4", "32.1", "32.2", "32.3", "32.4", "33.1",
"33.2", "33.3", "33.4", "34.1", "34.2", "34.3", "34.4", "35.1",
"35.2", "35.3", "35.4", "36.1", "36.2", "36.3", "36.4"), class = "data.frame"), choice = "choice")

• I tried to run you initial mlogit call, but got a singular matrix error. Could you make the edit that allows me to run this? – gregmacfarlane May 24 '12 at 23:24
• I'll try. I must have induced collinearity when I subset the data down to a sample. – Ari B. Friedman May 25 '12 at 0:08
• @gmacfarlane Fixed. Thanks for pointing that out. – Ari B. Friedman May 25 '12 at 13:49