我需要运行按等级排序的logit,其中一些人排名最大数量的替代品,有些人排名低于最大值。
当输入数据每个人的排名数量不同时, mlogit::mlogit.data
并不感兴趣。
这是一个小例子,使用mlogit
包中的数据。
在原始数据中,所有人都排名6个替代方案,但是这个例子通过将每个个体的排名的随机数设置为NA
,然后设置为6,最大可能排名来修改。
set.seed(62617)
data("Game2", package = "mlogit")
library(dplyr)
library(mlogit)
df1 <- Game2 %>% group_by(chid) %>%
mutate(ch = ifelse(ch > sample(2:6, size = 1), NA, ch))
dat <- df1 %>% mutate(ch = replace(ch, is.na(ch), 6)) %>% as.data.frame()
G <- mlogit.data(dat, shape = "long",
choice = "ch",
alt.var = "platform",
ranked = TRUE)
summary(mlogit(ch ~ own | hours + age, G, reflevel = "PC"))
这会导致以下错误:
Error in if (abs(x - oldx) < ftol) { :
missing value where TRUE/FALSE needed
我应该如何编写未经批准的替代方案以使模型有效?