Я запустил модель Nested Logit в R, используя пакет mlogit(). Сейчас я пытаюсь измерить предельные эффекты/эластичность и продолжаю сталкиваться с ошибкой. Здесь я воссоздал ошибку, изменив виньетку автором пакета:
data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
m <- mlogit(mode ~ price | income | catch, data = Fish,
nests=list(water=c("boat","charter"),
land=c("beach","pier")))
# compute a data.frame containing the mean value of the covariates in the sample
z <- with(Fish, data.frame(price = tapply(price, index(m)$alt, mean),
catch = tapply(catch, index(m)$alt, mean),
income = mean(income)))
# compute the marginal effects (the second one is an elasticity
effects(m, covariate = "income", data = z)
Я получаю следующую ошибку:
Error in `colnames<-`(`*tmp*`, value = c("beach", "boat", "charter", "pier" :
attempt to set 'colnames' on an object with less than two dimensions
In addition: Warning message:
In cbind(Gb, Gl) :
number of rows of result is not a multiple of vector length (arg 2)
Это прекрасно работает, когда у меня нет вложенной модели (например, обычного полиномиального логита), и это было рассмотрено в некоторых предыдущих вопросах stackoverflow, но что-то странное происходит конкретно с шагом повторного прогнозирования для измененного фрейма данных (в в этом случае средний кадр z).
Я отмечу, что решение здесь: предельные эффекты mlogit в R не помогли меня.