使用mlogit构建多项选择模型时solve.default报错求助
解决mlogit建模中的奇异矩阵错误
错误原因分析
你遇到的Lapack routine dgesv: system is exactly singular错误,本质是自变量存在完全多重共线性,或部分变量无任何变异,导致模型信息矩阵不可逆,无法估计系数。从你的数据可明确看到:
- 变量
L、S、I所有观测值均为0,无任何变异,无法估计其对选择行为的影响 - 变量
AZ和P的取值完全一致(均为[1,0,0,0,1,0]),属于完全共线性变量,同时纳入模型会导致矩阵奇异
解决步骤
- 移除无变异变量:删除
L、S、I三个无变化的变量 - 移除完全共线性变量:删除
AZ或P中的一个(二者信息完全重复) - 重新拟合模型
修改后的代码
# 移除问题变量后重新建模 Permitmodel <- mlogit(Choice ~ ML+M+MM+AZ+NCR+NR+NNZ+LC+D+DC+NC | 0, Permitdata)
额外检查建议
- 用
apply(Permitdata[, c("ML","L","S",...)], 2, var)检查每个自变量的方差,方差为0的变量必须移除 - 用
cor(Permitdata[, your_variable_list])查看变量间相关系数,绝对值为1的变量对需保留其一
内容的提问来源于stack exchange,提问作者Aidan du Preez
相关产品推荐
相关产品推荐

