如何在排名= TRUE的mlogit中编码未排序的替代品

时间:2017-06-26 20:52:29

标签: r mlogit

我需要运行按等级排序的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

我应该如何编写未经批准的替代方案以使模型有效?

0 个答案:

没有答案