【问题标题】:mlogit error: "model system is computationally singular" and "subscript out of bounds"mlogit 错误:“模型系统在计算上是奇异的”和“下标超出范围”
【发布时间】:2022-06-11 02:54:06
【问题描述】:

我有以下数据框X

chid.var    id.var  alt.var wei odd cou cla pla
1           1       1       130 6.6 0   5   1
1           1       2       119 224 0   5   0
1           1       3       126 10  0   5   0
1           1       4       128 66  0   5   0
1           1       5       131 8.3 0   5   0
2           1       1       130 15  0   4   1
2           1       2       124 6.9 0   4   0
2           1       3       119 156 0   4   0
2           1       4       122 39  0   4   0
2           1       5       124 2   0   4   0
3           1       1       121 5.3 0   1   1
3           1       2       112 22  0   1   0
3           1       3       119 7.2 0   1   0
3           1       4       119 5.9 0   1   0
3           1       5       133 1.7 0   1   0
3           1       6       113 72  0   1   0
3           1       7       113 12  0   1   0
4           1       1       121 13  0   4   1
4           1       2       125 6   0   4   0
4           1       3       127 6.3 0   4   0

只有 1 个决策者/个人,在 id.var 中由 1 表示, alt.var 中从 1 到 7 的不同选择集和 chid.var 中的选择情况。 weicou 都是可选的特定变量,而 coucla 是选择情况特定变量,最后 pla 是因变量(选择)。

我尝试使用mlogit 包来使用概率模型对选择进行建模:

df <- mlogit.data(data=X,
                  choice = "Place",
                  shape = "long",
                  chid.var = "chid.var",
                  id.var = "id.var",
                  alt.var = "alt.var")

model <- mlogit(pla ~ wei + odd | cou + cla, data = df, probit = TRUE)

但是我得到“越界错误”:Error in As[[pos[i, j]]] : subscript out of bounds

我尝试将数据框缩减为仅前两种选择情况(以便两种选择情况的选择集从 1 到 5 相同):

chid.var    id.var  alt.var wei odd cou cla pla
1           1       1       130 6.6 0   5   1
1           1       2       119 224 0   5   0
1           1       3       126 10  0   5   0
1           1       4       128 66  0   5   0
1           1       5       131 8.3 0   5   0
2           1       1       130 15  0   4   1
2           1       2       124 6.9 0   4   0
2           1       3       119 156 0   4   0
2           1       4       122 39  0   4   0
2           1       5       124 2   0   4   0

然后我再次运行相同的代码:

X <- X[-c(11:20),]
df <- mlogit.data(data=X,
                  choice = "Place",
                  shape = "long",
                  chid.var = "chid.var",
                  id.var = "id.var",
                  alt.var = "alt.var")

model <- mlogit(pla ~ wei + odd | cou + cla, data = df, probit = TRUE)

这一次我得到“系统计算奇异”错误:Error in solve.default(H, g[!fixed]) : system is computationally singular: reciprocal condition number = 9.15665e-23

我研究了有关 stackoverflow 的不同问题,但似乎没有一个相关,请提前帮助和感谢。

【问题讨论】:

  • 这是您的全部数据吗?问题是您的数据是奇异的,即行列式等于零。在这篇文章中检查你可以做的事情:stackoverflow.com/questions/58080637/…
  • @Quinten 不,这不是我的所有数据,但即使我用这些数据运行模型,它仍然说模型系统在计算上是奇异的,但上面的数据行都是不同的,因此是决定因素不应该是单数。
  • 是否可以使用dput分享您的完整数据?
  • @Quniten 这是完整的数据:drive.google.com/file/d/1uA6O8Fp2N4WHZZN9pOHKzRefXJ2tkMHC/… 我的代码是 df

标签: r dataframe mlogit


【解决方案1】:

尝试将截距设置为 0。我之前在面板数据中遇到过这个问题,并且修复了它。

model <- mlogit(0 + pla ~ wei + odd | cou + cla, data = df, probit = TRUE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2018-04-11
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    相关资源
    最近更新 更多