我需要运行一个按等级排序的 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
我应该如何编码未排序的替代方案以使模型工作?