Reputation: 11
I am currently trying to run a mixed logit model using the gmnl() function from the gmnl package in R. However, I keep encountering an error related to the random variables. The error message is:
"The following random variables are not in the data: heb_2, dist_3, dist_4, dist_5, dist_6, dist_7, pays_2, pays_3, pays_5"
I have already checked the following:
Variable names and types: The variables heb_2, dist_3, dist_4, dist_5, dist_6, dist_7, pays_2, pays_3, and pays_5 are all present in the dataset and are of numeric type. I confirmed this using the str() function.
Data structure: The data was created using mlogit.data() and seems to be in the correct format for mixed logit models (long format). I even converted the data to a data.frame explicitly, but the error persists.
Choice variable: The choice variable (choice) is correctly coded as a logical variable (TRUE/FALSE).
I have tried the following solutions with no success:
Here is the code I am using:
data_mlogit <- mlogit::mlogit.data(
df_eol,
choice = "choice",
shape = "long",
chid.var = "indscen",
alt.var = "option",
id.var = "ID",
opposite = c("prix")
)
model <- gmnl::gmnl(
choice ~ option_3 + sej_2 + sej_3 + prix | 0 |
heb_2 + dist_3 + dist_4 + dist_5 + dist_6 + dist_7 + pays_2 + pays_3 + pays_5,
data = data_mlogit,
model = "mixl",
ranp = c(heb_2 = "n", dist_3 = "n", dist_4 = "n", dist_5 = "n",
dist_6 = "n", dist_7 = "n", pays_2 = "n", pays_3 = "n", pays_5 = "n"),
correlation = TRUE,
R = 50,
panel = TRUE
)
This is an overview of my dataset :
structure(list(idx = structure(list(chid = c(2002, 2002, 2002,
2003, 2003, 2003, 2005, 2005, 2005, 2006, 2006, 2006, 2007, 2007,
2007, 2010, 2010, 2010, 3001, 3001, 3001, 3004, 3004, 3004, 3008,
3008, 3008, 3009, 3009, 3009, 3011, 3011, 3011, 3012, 3012, 3012,
6003, 6003, 6003, 6005, 6005, 6005, 6006, 6006, 6006, 6008, 6008,
6008, 6010, 6010, 6010, 6012, 6012, 6012, 7001, 7001, 7001, 7003,
7003, 7003, 7006, 7006, 7006, 7009, 7009, 7009, 7010, 7010, 7010,
7011, 7011, 7011, 10002, 10002, 10002, 10004, 10004, 10004, 10005,
10005, 10005, 10007, 10007, 10007, 10008, 10008, 10008, 10012,
10012, 10012, 12003, 12003, 12003, 12004, 12004, 12004, 12006,
12006, 12006, 12007), ID = c(20021, 20022, 20023, 20031, 20032,
20033, 20051, 20052, 20053, 20061, 20062, 20063, 20071, 20072,
20073, 20101, 20102, 20103, 30011, 30012, 30013, 30041, 30042,
30043, 30081, 30082, 30083, 30091, 30092, 30093, 30111, 30112,
30113, 30121, 30122, 30123, 60031, 60032, 60033, 60051, 60052,
60053, 60061, 60062, 60063, 60081, 60082, 60083, 60101, 60102,
60103, 60121, 60122, 60123, 70011, 70012, 70013, 70031, 70032,
70033, 70061, 70062, 70063, 70091, 70092, 70093, 70101, 70102,
70103, 70111, 70112, 70113, 100021, 100022, 100023, 100041, 100042,
100043, 100051, 100052, 100053, 100071, 100072, 100073, 100081,
100082, 100083, 100121, 100122, 100123, 120031, 120032, 120033,
120041, 120042, 120043, 120061, 120062, 120063, 120071), alt = structure(c(1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L), levels = c("1", "2", "3"), class = "factor")), ids = c(1,
1, 2), row.names = c(NA, 100L), class = c("idx", "tbl_df", "tbl",
"data.frame")), indscen = c(2002, 2002, 2002, 2003, 2003, 2003,
2005, 2005, 2005, 2006, 2006, 2006, 2007, 2007, 2007, 2010, 2010,
2010, 3001, 3001, 3001, 3004, 3004, 3004, 3008, 3008, 3008, 3009,
3009, 3009, 3011, 3011, 3011, 3012, 3012, 3012, 6003, 6003, 6003,
6005, 6005, 6005, 6006, 6006, 6006, 6008, 6008, 6008, 6010, 6010,
6010, 6012, 6012, 6012, 7001, 7001, 7001, 7003, 7003, 7003, 7006,
7006, 7006, 7009, 7009, 7009, 7010, 7010, 7010, 7011, 7011, 7011,
10002, 10002, 10002, 10004, 10004, 10004, 10005, 10005, 10005,
10007, 10007, 10007, 10008, 10008, 10008, 10012, 10012, 10012,
12003, 12003, 12003, 12004, 12004, 12004, 12006, 12006, 12006,
12007), option = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L), levels = c("1",
"2", "3"), class = "factor"), ID = c(20021, 20022, 20023, 20031,
20032, 20033, 20051, 20052, 20053, 20061, 20062, 20063, 20071,
20072, 20073, 20101, 20102, 20103, 30011, 30012, 30013, 30041,
30042, 30043, 30081, 30082, 30083, 30091, 30092, 30093, 30111,
30112, 30113, 30121, 30122, 30123, 60031, 60032, 60033, 60051,
60052, 60053, 60061, 60062, 60063, 60081, 60082, 60083, 60101,
60102, 60103, 60121, 60122, 60123, 70011, 70012, 70013, 70031,
70032, 70033, 70061, 70062, 70063, 70091, 70092, 70093, 70101,
70102, 70103, 70111, 70112, 70113, 100021, 100022, 100023, 100041,
100042, 100043, 100051, 100052, 100053, 100071, 100072, 100073,
100081, 100082, 100083, 100121, 100122, 100123, 120031, 120032,
120033, 120041, 120042, 120043, 120061, 120062, 120063, 120071
), prix = c(-30, -50, 0, -50, -25, 0, -25, -40, 0, -45, -35,
0, -50, -30, 0, -40, -35, 0, -40, -30, 0, -35, -40, 0, -45, -25,
0, -30, -50, 0, -35, -40, 0, -25, -45, 0, -50, -25, 0, -25, -40,
0, -45, -35, 0, -45, -25, 0, -40, -35, 0, -25, -45, 0, -40, -30,
0, -50, -25, 0, -45, -35, 0, -30, -50, 0, -40, -35, 0, -35, -40,
0, -30, -50, 0, -35, -40, 0, -25, -40, 0, -50, -30, 0, -45, -25,
0, -25, -45, 0, -50, -25, 0, -35, -40, 0, -45, -35, 0, -50),
choice = c(TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE,
TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE,
FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE,
TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE,
FALSE, FALSE, TRUE), rec_parc = c(1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), option_3 = c(0,
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
0, 0, 1, 0), sej_2 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0), sej_3 = c(0, 1, 0, 1,
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0,
0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
1), heb_2 = c(1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,
1, 0, 0, 1, 0, 1, 0, 0, 0), dist_3 = c(0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), dist_4 = c(0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 1), dist_5 = c(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0), dist_6 = c(0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0), dist_7 = c(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), pays_2 = c(0, 1, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
0, 0), pays_3 = c(0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1), pays_5 = c(0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,
0)), clseries = c("xseries_mlogit", "xseries"), choice = "choice", row.names = c(NA,
100L), class = c("dfidx_mlogit", "dfidx", "tbl_df", "tbl", "data.frame",
"mlogit.data"))
Has anyone encountered this issue before or does anyone have suggestions on how to resolve it? Any help would be greatly appreciated!
Thank you in advance!
Upvotes: 1
Views: 44