回归模型中的同时异方差和重尾

机器算法验证 回归 残差 异方差 强大的 rlm
2022-03-19 05:40:37

我正在尝试使用回归创建预测模型。这是我在 R 中使用 lm() 得到的模型的诊断图: 来自 R 的诊断图

我从 QQ 图中读到的是残差具有重尾分布,残差与拟合图似乎表明残差的方差不是恒定的。我可以通过使用稳健的模型来驯服残差的重尾:

fitRobust = rlm(formula, method = "MM", data = myData)

但这就是事情停止的地方。稳健模型的权重为 0。删除这些点后,稳健模型的残差和拟合值如下所示:残差与拟合稳健模型

异方差性似乎仍然存在。使用

logtrans(model, alpha) 

从 MASS 包中,我试图找到一个α这样

rlm(formula, method = "MM") 

公式为log(Y+α)X1++Xn具有恒定方差的残差。一旦我找到α,为上述公式获得的稳健模型具有以下残差与拟合图:

残差与拟合对数转换响应

在我看来,残差似乎仍然没有恒定的方差。我尝试过其他的响应转换(包括 Box-Cox),但它们似乎也不是一种改进。我什至不确定我正在做的第二阶段(即在稳健模型中找到响应的转换)是否得到任何理论的支持。我非常感谢任何意见、想法或建议。

1个回答

异方差性和尖峰态在数据分析中很容易混为一谈。将生成错误项的数据模型作为 Cauchy。这符合同方差的标准。柯西分布具有无限方差。柯西错误是模拟器包含异常值采样过程的方式。

有了这些重尾误差,即使您拟合了正确的均值模型,异常值也会导致较大的残差。在该模型下,异方差性检验极大地夸大了 I 类错误。柯西分布也有一个尺度参数。生成规模线性增加的误差项会产生异方差数据,但检测这种影响的能力实际上是无效的,因此 II 型误差也被夸大了。

那么让我建议,正确的数据分析方法不是陷入测试的泥潭。统计检验主要是误导性的。没有比旨在验证二次建模假设的测试更明显的了。它们不能替代常识。对于您的数据,您可以清楚地看到两个较大的残差。如果任何残差与残差与拟合图中的 0 线呈线性偏离,则它们对趋势的影响很小。这就是你需要知道的。

然后需要一种估计灵活方差模型的方法,该模型将允许您在一系列拟合响应上创建预测区间。有趣的是,这种方法能够处理大多数正常形式的异方差和峰度。为什么不使用平滑样条方法来估计均方误差。

举个例子:

set.seed(123)
x <- sort(rexp(100))
y <- rcauchy(100, 10*x)

f <- lm(y ~ x)
abline(f, col='red')
p <- predict(f)
r <- residuals(f)^2

s <- smooth.spline(x=p, y=r)

phi <- p + 1.96*sqrt(s$y)
plo <- p - 1.96*sqrt(s$y)

par(mfrow=c(2,1))
plot(p, r, xlab='Fitted', ylab='Squared-residuals')
lines(s, col='red')
legend('topleft', lty=1, col='red', "predicted variance")

plot(x,y, ylim=range(c(plo, phi), na.rm=T))
abline(f, col='red')
lines(x, plo, col='red', lty=2)
lines(x, phi, col='red', lty=2)

给出以下预测区间,该区间“扩大”以适应异常值。它仍然是方差的一致估计量,并且有用地告诉人们,“嘿,在 X=4 附近有这么大的、不稳定的观察结果,我们无法在那里非常有用地预测值。”

在此处输入图像描述