R语言robustbase包lmrob拟合随机数据时p值异常显著问题
问题说明
在存在少量异常值的数据集上开展稳健多元回归分析时,调用robustbase包的lmrob函数(MM估计法)出现显著关联数量异常偏多的问题,使用完全随机生成的数据集做验证测试,测试代码如下:
library(robustbase) set.seed(4) ax<-data.frame(a1=rnorm(20,3), a2=rnorm(20,5), a3=rnorm(20,4), a4=rnorm(20,6), a5=rnorm(20,2)) axm<-lmrob(a1~a2*a3*a4*a5,data=ax) summary(axm)
运行结果显示第1个观测被判定为异常值、权重为0,所有自变量及各阶交互项的系数p值均远小于0.001,模型Multiple R-squared达0.9861、Adjusted R-squared达0.934,和随机变量无真实关联的逻辑矛盾。
异常结果成因
这个现象不是lmrob函数本身的bug,是模型设定错误导致自由度严重不足引发的过拟合,核心问题有两点:
- 待估参数规模远超样本量:R公式中
a2*a3*a4*a5是全交互项写法,会自动纳入所有变量的主效应、所有阶数的交互项,展开后含截距在内总共有32个待估系数,但测试数据集总样本量仅为20,待估参数数量已经大于样本量,模型本身属于不可识别的饱和模型,哪怕用普通最小二乘lm()拟合,也会出现随机噪声被完美拟合的假阳性结果。 - 稳健估计的降权机制进一步压缩有效样本:结果中第1个观测权重为0,意味着这一个样本完全不参与参数估计,实际有效样本量仅剩19,自由度不足的问题被进一步放大,模型会将所有随机波动解释为系统性关联,自然出现R方虚高、所有系数假显著的结果。
正确使用注意事项
- 稳健回归没有突破经典回归的自由度要求:无论使用哪种稳健估计方法,都需要保证有效样本量(剔除权重为0的观测后)远大于待估参数数量,通用经验是有效样本量至少达到待估参数的5~10倍,结果才具备参考性。
- 不要随意纳入全阶交互项:无理论支撑的情况下把所有变量的所有高阶交互项纳入模型,哪怕样本量足够,也会大幅提升多重共线性和假阳性概率,小样本场景下尤其要避免这类设定。
- 验证方式:保持随机种子和数据集不变,将模型公式修改为仅纳入主效应的
a1~a2+a3+a4+a5,此时待估参数仅6个,20个样本满足自由度要求,运行后就会得到随机数据应有的、无显著关联的合理结果。
内容的提问来源于stack exchange,提问作者Antón
相关产品推荐
相关产品推荐

