首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mlogit :在R中为mlogit使用不同的替代方案

mlogit :在R中为mlogit使用不同的替代方案
EN

Stack Overflow用户
提问于 2021-07-22 03:53:34
回答 1查看 34关注 0票数 0

我正在尝试为每个人使用不同的替代方案。但是不能让它工作。如果我为每个人设置相同的替代方案,它就会工作得很好。如何让它变得多样化并发挥作用。

数据:

代码语言:javascript
复制
> dput( df1 )
structure(list(Choice = c(1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 
0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L), A = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L), B = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 1L, 0L, 0L, -1L, 0L, 
0L), C = c(1L, 0L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 0L, 0L, 
1L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 0L, 0L), D = c(0L, 1L, 0L, 0L, 
0L, -1L, 0L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 0L, 1L, 0L, 0L, -1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L), E = c(0L, 0L, 1L, 0L, 0L, 0L, -1L, 0L, 0L, 0L, 1L, 
0L, 0L, -1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, -1L, 0L), F = c(0L, 0L, 
0L, 1L, 0L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, -1L, 0L, 0L, 1L, 0L, 0L, -1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 1L, 0L, 0L, -1L), Alternative = c(1L, 2L, 3L, 4L, 1L, 
2L, 3L, 4L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
3L)), row.names = c(NA, -38L), class = "data.frame")

代码:

代码语言:javascript
复制
model = mlogit( Choice ~ B + C + D + E + F | 0, data = df1, 
               
                alt.levels = unique( df1$Alternative ), 
               
               shape = "long")

错误

代码语言:javascript
复制
Error in dfidx::dfidx(data = data, dfa$idx, drop.index = dfa$drop.index,  : 
  the data must be balanced in order to use the levels argument
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-29 19:14:11

您需要向mlogit提供一个显式的ID变量,表明哪个参与者做出了选择。它不能从您提供的data.frame中推断出它们。

我假设在您的可重复示例中,从1-4或1-3顺序运行的行中的备选方案表示呈现给唯一个体的选择集。如果是这样,那么你可以像这样拟合一个模型:

代码语言:javascript
复制
library(mlogit)

# Explicitly create an ID variable
df1$ID <- rep(1:12, times = c(rep(4, 2), rep(3, 10)))

#Convert to dfidx data
dfx1 <- mlogit.data(df1, 
                    shape = "long", 
                    choice = "Choice",
                    id.var = "ID")

# Fit a model
m0 <- mlogit(Choice ~ B + C + D + E + F | 0, 
             data = dfx1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68475724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档