【发布时间】: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 中的选择情况。 wei 和 cou 都是可选的特定变量,而 cou 和 cla 是选择情况特定变量,最后 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