我正在尝试对我的数据集运行多项式回归,以查看渠道和接触点对选择的影响,价格和设备作为控件,但不幸的是收到错误消息。
在已经运行 mlogit.data 之后,我的 data.frame 的前几行看起来像这样:
ORDER_ID PRODUCT_ID DEVICE PRICE TOUCHPOINT CHANNEL 1_or_2 CHOICE chid alt
123 566 laptop 99 paid offline 1 TRUE 33 1
123 566 laptop 99 paid offline 1 FALSE 33 2
123 534 phone 56 paid offline 2 FALSE 45 1
123 534 phone 56 paid offline 2 TRUE 45 2
124 876 laptop 85 unpaid online 1 TRUE 111 1
124 876 laptop 85 unpaid online 1 FALSE 111 2
我尝试运行的代码是:
Choice_mlg <- mlogit(Choice_A_or_B ~ 1 | Channel + Touchpoint + Price + Device,
data = ml_choice_1, reflevel = 1, na.action = na.exclude)
然后我收到的是以下错误消息:
Error in solve.default(H, g[!fixed]) : Lapack routine dgesv: system is exactly singular: U[6,6] = 0
谁能帮助我在这里做错了什么?
谢谢你,最好
该误差意味着黑森矩阵是奇异的,即行列式等于零。实际上,您无法获得方差矩阵,该矩阵等于黑森州的负逆矩阵。
查看您的模型和数据,可能有几个原因导致了它。您没有提供MWE,所以我只能删除您提供的信息。
- 查看您的
alt
变量,它在 1 和 2 之间变化,但两个备选方案是相同的。这意味着在解释选择的替代方案之间绝对没有差异。这可能会导致计算上单一的黑森(另一个原因是替代方案之间的相关性非常强(。 - 您的选择变量称为
Choice_A_or_B
。它不是数据的一部分,很难看到,但在长格式中,它应该取值TRUE/FALSE
.在每个选择场合,应TRUE
所选备选方案,FALSE
所有未选择的备选方案。查看您的CHOICE
变量,它看起来是在此处使用的正确变量。 - 查看
ORDER_ID
变量,两个chid
是相同的。这是否意味着同一客户购买了两件商品? - 您是否有理由指定
Channel
、Touchpoint
、Price
和Device
为替代特定?这对于上面的示例无关紧要(请参阅第 1 点(,但在最终模型中应仔细考虑。
通常,当您设置数据(长格式(时,您可能希望每个备选方案有一行,其中包含个人、选择场合和备选方案的索引。