尝试使用mlogit软件包构建模型时出现以下错误:
Error in solve.default(H, g[!fixed]) :
system is computationally singular: reciprocal condition number = 1.54676e-18
我有以下R代码,试图使用mlogit包对某些选择数据进行建模:
library("mlogit")
# preprocess data
raw_choice_data <- read.csv("two-factors-cont-three-choices.csv", header = TRUE)
choice.data <- mlogit.data(raw_choice_data, shape = "long", alt.var="Alt", choice="Choice", id = "Respondent")
# look at what is going on
str(choice.data)
# build model
m <- mlogit(Choice ~ 0 + ConsumerRating + Price, data=choice.data)
summary(m)
我的选择数据如下:
Respondent Alt Rand Choice ConsumerRating Price
1.1 1 1 0.8698601 FALSE 3.7 30
1.2 1 2 0.8698601 FALSE 4.2 40
1.3 1 3 0.8698601 TRUE 4.7 50
2.1 2 1 0.1490811 FALSE 3.7 30
2.2 2 2 0.1490811 TRUE 4.2 40
2.3 2 3 0.1490811 FALSE 4.7 50
完整的数据集(包含50个响应或150行)为here。这个数据集是我作为测试生成的人工数据。它对应于以下两个产品选择和相应的市场份额:
我希望mlogit可以找到这两个(按构造正确)的模型参数:
深入研究代码,我发现mlogit计算出的粗麻布为:
ConsumerRating Price
ConsumerRating 8.333333 166.6667
Price 166.666667 3333.3333
这是单数,因为第二列正好是第一列的20倍。梯度的两个分量相似地以20的因数精确关联。
我觉得我在解决问题时遗漏了一些明显的东西-有人看到我在做什么错吗?