【问题标题】:mlogit : using varying alternatives for mlogit in Rmlogit :在 R 中使用不同的 mlogit 替代方案
【发布时间】:2021-09-29 04:43:20
【问题描述】:

我正在尝试为每个人使用不同的替代方案。但是无法使其正常工作。如果我为每个人制定相同的替代方案,它就可以正常工作。如何使它变化和工作。

数据:

> 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")

代码:

model = mlogit( Choice ~ B + C + D + E + F | 0, data = df1, 
               
                alt.levels = unique( df1$Alternative ), 
               
               shape = "long")

错误

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

【问题讨论】:

    标签: r mlogit


    【解决方案1】:

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

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      相关资源
      最近更新 更多