mlogit:solve.default(H,g [!fixed])中的错误:系统在计算上是奇异的

时间:2019-01-21 22:04:49

标签: r mlogit

尝试使用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。这个数据集是我作为测试生成的人工数据。它对应于以下两个产品选择和相应的市场份额:

products

我希望mlogit可以找到这两个(按构造正确)的模型参数:

params

深入研究代码,我发现mlogit计算出的粗麻布为:

               ConsumerRating     Price
ConsumerRating       8.333333  166.6667
Price              166.666667 3333.3333

这是单数,因为第二列正好是第一列的20倍。梯度的两个分量相似地以20的因数精确关联。

我觉得我在解决问题时遗漏了一些明显的东西-有人看到我在做什么错吗?

0 个答案:

没有答案