#r #mlogit
Вопрос:
Я создал имитационные данные для смешанной логит-модели. В нем участвуют N рыболовов, совершающих две поездки, каждая из которых может быть на одно из двух мест. Вот код для создания смоделированных данных:
library(data.table) library(mlogit) ### Angler choice probabilities for site a N lt;- 1e4 beta lt;- rnorm(N, mean = 0.5) val lt;- runif(N) p lt;- exp(1 beta*val)/(1 exp(1 beta*val)) ### Choice for trip 1 Y11 lt;- rbinom(N, 1, p) Y10 lt;- 1 - Y11 ### Choice for trip 2 Y21 lt;- rbinom(N, 1, p) Y20 lt;- 1 - Y21 ### Data set id lt;- as.character(1:N) sim lt;- data.table(angler = rep(id, 4), trip = paste(id, rep(1:2, each = 2*N), sep = "_"), site = c(rep(letters[1:2], each = N), rep(letters[1:2], each = N)), is_choice = as.logical(c(Y11, Y10, Y21, Y20)), term = c(val, rep(0, N), val, rep(0, N))) sim[, term2 := ifelse(site == "a", 1, 0)]
Когда я запускаю mlogit, я получаю следующую ошибку:
gt; mlogit(is_choice ~ 1, sim, shape = "long", alt.var = "site", chid.var = "trip", id.var = "angler") Error in str2lang(x) : lt;textgt;:2:0: unexpected end of input 1: . ~ . | ^
Я могу запустить примеры из виньетки, так что, похоже, проблем с установкой нет.
Что я напутал? Спасибо!
Ответ №1:
Эту проблему можно решить с помощью data.frame
, нет data.table
.
sim2 lt;- as.data.frame(sim) mlogit(is_choice ~ 1, sim2, shape = "long", alt.var = "site", chid.var = "trip", id.var = "angler") Call: mlogit(formula = is_choice ~ 1, data = sim2, shape = "long", alt.var = "site", chid.var = "trip", id.var = "angler", method = "nr") Coefficients: (Intercept):b -1.1595