加权最小二乘,为什么不使用1e2一世1ei2作为重量?

机器算法验证 回归 异方差 加权回归
2022-04-03 08:58:25

在 Applied Linear Statistical Models (Kutner et al) 中给出了一个关于加权最小二乘的例子。

数据集:年龄与舒张压

对年龄进行 DBP 回归得到以下模型

Y^=56.157+0.58003X

但是残差图显示了类似扩音器的形状,这意味着异方差。

残差图

由于残差的绝对值与年龄预测器呈线性趋势,因此对这些残差与年龄进行了 OLS,从而导致

s^=1.54946+0.198172X

使用这些拟合值作为权重

wi=1s^i2
产生了一个新模型:
Y^=55.566+0.59634X
.

仍然存在一些问题,首先将模型表示为:

Yi=β0+β1Xi+ϵi

为什么不使用残差作为权重的估计量?

自从wi定义为1σi2在哪里ϵi=dN(0,σi2)

Var(ϵi)=σi2=E(ϵi2)E(ϵi)2=E(ϵi2)
现在自从ei=(Y^iYi)是一个估计量ϵi为什么不使用ei2作为估计者σi2? 这意味着wi=1ei2.

我真的不明白为什么我们必须再次回归残差才能找到权重。

加权最小二乘法能解决多少问题?

我在 R 中执行了上述分析并绘制了加权最小二乘拟合的新残差图,结果如下: 第二个残差图

但这似乎并没有好得多?

R代码

colnames(Blood_Pressure_Example) <- c("Age", "DBP");
attach(Blood_Pressure_Example)

plot(DBP~Age)
fit <- lm(DBP~Age)
abline(fit)
summary(fit)

plot(residuals.lm(fit)~Age)
plot(abs(residuals.lm(fit))~Age)

## Like in the book
fit.res <- lm(abs(residuals.lm(fit))~Age)
wii <- 1/predict.lm(fit.res)^2

fit.end <- lm(DBP~Age, weights = as.vector(wii))
summary(fit.end)
plot(residuals.lm(fit.end)~Age)

## why not use the residuals as weights?
residuals.lm(fit)
wii.test <- 1/(residuals.lm(fit)^2)
wii.test

fit.test <- lm(DBP~Age, weights=as.vector(wii.test))
summary(fit.test)
plot(residuals.lm(fit.test)~Age)  
2个回答

将权重估计为平方残差会太嘈杂。考虑一下:您正在使用 n 个观察值估计 n 个权重。这是每个参数的一次观察。这就像估计样本量为 1 的总体的方差。

因此,相反,您观察到方差似乎随 X 线性增加,然后您在 X 上回归。您最终仅从 n 个观察中估计了两个系数。通过这种方式,您可以获得更可靠的重量估计。

在加权最小二乘之后看起来相同的残差:这并不奇怪,因为估计的权重没有那么不同。

我怀疑这里的问题是权重wi=1/ei2会使回归估计对响应变量不够敏感,因为它几乎等同于将每个偏差视为具有单位量级。

要明白我的意思,假设你让ei是第一个模型拟合的残差,然后假设您使用指定的权重拟合新模型,并让ei是第二个模型拟合的残差。(更一般地说,我会在第二个模型的所有估计量上加上一个星号。)第二个模型拟合中的系数向量是通过最小化目标来估计的:

WRSS(β^)(yxβ^)TW(yxβ^)=i=1n(yik=0mβ^kxi,kei)2=i=1n(eiei)2.

在之前的参数估计附近进行评估β^β^这使eiei以便:

WRSS(β)i=1n(eiei)2=i=1n12=n.

因此,您可以看到,在这种方法下,当您拟合第二个模型时,您实际上是将回归线的每个偏差视为具有近似单位量级,而不管数据中的实际响应值如何。也就是说,您希望最小化加权残差,但这些加权残差(几乎按照定义)接近单位量级。