Margaux Jacob
Margaux Jacob

Reputation: 11

Issue with gmnl() in R - Error: "Random variables are not in the data"

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:

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

Answers (0)

Related Questions