原因:
1. 分布假设不当
若参数实际应服从对数正态分布(如价格系数需保持正号),但误设为正态分布,可能导致均值或标准差估计异常。
2. 模型未收敛
问题:若模型未达到收敛标准,参数估计可能不准确,包括标准差为负。
3. 数据质量问题
问题:数据中存在极端值、共线性或类别不平衡时,参数估计可能偏离理论预期。
4. 初始值敏感性与优化算法
问题:最大似然估计对初始值敏感,若初始值设定不当,可能陷入局部最优解。
解决方案与建议:
1. 调整分布假设
方法:将可能需保持正号的参数(如价格、时间成本)设为对数正态分布,而非正态分布。
操作示例:
# 假设"cost"变量需保持正效应,设为对数正态分布
mlogit_model <- mlogit(choice ~ var1 + var2 | 0, data = data,
rpar = c(cost = "ln", var2 = "n"), R = 1000)
2. 提高模型收敛性
- 增加抽样次数:使用Halton序列替代伪随机数,减少抽样误差。
- 调整优化参数:指定初始值或增加最大迭代次数:
mlogit_model <- mlogit(..., start = c(0.1, 0.1, 0.1),
control = list(iterlim = 2000))
3. 数据预处理
标准化变量:对连续变量进行中心化或标准化,减少尺度差异对优化的影响。
检查共线性:使用方差膨胀因子(VIF)或相关矩阵排除高度相关的变量。
4. 验证模型设定
简化模型:逐步添加随机参数,观察标准差变化,定位问题变量。
固定部分参数:将部分变量设为固定参数(如ASC),减少随机效应维度。
5. 使用替代软件验证
跨软件验证:在Stata(`mixlogit`命令)或Python(`pylogit`库)中重复分析,确认是否为`mlogit`包特定问题。