我有一个长格式的联合调查数据。前几行看起来像这样:
ID alt choice size tar length brand flavor gender age yr_smoke num_smoke job
1 1 1 no 1 1 1 1 1 2 35 10 20 1
2 1 2 no 1 1 1 1 1 2 35 10 20 1
3 1 3 no 1 1 1 1 1 2 35 10 20 1
4 1 4 no 1 1 1 1 1 2 35 10 20 1
5 1 5 no 1 1 1 1 1 2 35 10 20 1
6 1 6 no 1 1 1 1 1 2 35 10 20 1
我用mlogit.data作为:
data_mlogit_ct1_test2 <- mlogit.data(data_mlogit_ct1_test1,choice="choice",
shape="long",alt.var="alt")
转换数据的前几行如下所示:
ID alt choice size tar length brand flavor gender age yr_smoke num_smoke job
1.1 1 1 FALSE 1 1 1 1 1 2 35 10 20 1
1.2 1 2 FALSE 1 1 1 1 1 2 35 10 20 1
1.3 1 3 FALSE 1 1 1 1 1 2 35 10 20 1
1.4 1 4 FALSE 1 1 1 1 1 2 35 10 20 1
1.5 1 5 FALSE 1 1 1 1 1 2 35 10 20 1
1.6 1 6 FALSE 1 1 1 1 1 2 35 10 20 1
现在我正在尝试将mlogit设为:
fit_mlogit_ct11 <- mlogit(choice~size+tar+length+brand+flavor,
data_mlogit_ct1_test1,shape="long",chid.var="ID",
alt.var="alt",method="bfgs",heterosc=TRUE,tol=10)
我收到了这个错误:
solve.default中的错误(crossprod(attr(x,“gradi”)[,!fixed])): Lapack例程dgesv:系统完全是单数
然后我做了:
fit_mlogit_ct11 <- mlogit(choice~size+tar+length+brand+flavor, data_mlogit_ct1_test2)
现在我得到了:
solve.default中的错误(H,g [!fixed]): 系统在计算上是单数的:倒数条件数= 3.4767e-18
有人可以帮帮我吗?
答案 0 :(得分:9)
我认为问题是因为您没有正确定义您的个别特定变量。根据包装手册,当您使用mlogit功能构建模型时,您可以使用:|将具体的替代方案与个别特定变量分开。例如:
fit_mlogit_ct11 <- mlogit(choice~1|size+tar+length+brand+flavor,
data_mlogit_ct1_test1,shape="long",chid.var="ID",
alt.var="alt",method="bfgs",heterosc=TRUE,tol=10)
其中只是说您的所有变量都是具体的,而您只接受替代特定的截距。但事实上,正如上面已经提到的那样,您的数据看起来很奇怪,因为它们看起来一样,因为您只有个别的特定变量。这最终导致奇点(你的变量与1相互关联)。