如何在 r 中执行稳健回归(逐步)


当我们正在处理的数据集中存在异常值或有影响的观察值时,鲁棒回归是一种可以替代普通最小二乘回归的方法。

要在 R 中执行稳健回归,我们可以使用MASS包中的rlm()函数,该函数使用以下语法:

以下分步示例展示了如何在 R 中对给定数据集执行稳健回归。

第 1 步:创建数据

首先,让我们创建一个假数据集来使用:

 #create data
df <- data. frame (x1=c(1, 3, 3, 4, 4, 6, 6, 8, 9, 3,
                      11, 16, 16, 18, 19, 20, 23, 23, 24, 25),
                 x2=c(7, 7, 4, 29, 13, 34, 17, 19, 20, 12,
                      25, 26, 26, 26, 27, 29, 30, 31, 31, 32),
                  y=c(17, 170, 19, 194, 24, 2, 25, 29, 30, 32,
                      44, 60, 61, 63, 63, 64, 61, 67, 59, 70))

#view first six rows of data
head(df)

  x1 x2 y
1 1 7 17
2 3 7 170
3 3 4 19
4 4 29 194
5 4 13 24
6 6 34 2

步骤 2:执行普通最小二乘回归

接下来,我们拟合一个普通最小二乘回归模型并创建标准化残差图。

在实践中,我们经常将绝对值大于 3 的任何标准化残差视为异常值。

 #fit ordinary least squares regression model
ols <- lm(y~x1+x2, data=df)

#create plot of y-values vs. standardized residuals
plot(df$y, rstandard(ols), ylab=' Standardized Residuals ', xlab=' y ') 
abline(h= 0 ) 

从图中我们可以看到,有两个观测值的标准化残差约为 3。

这表明数据集中存在两个潜在的异常值,因此我们可能会从稳健回归中受益。

第 3 步:执行稳健回归

接下来,让我们使用rlm()函数来拟合稳健的回归模型:

 library (MASS)

#fit robust regression model
robust <- rlm(y~x1+x2, data=df)

为了确定与 OLS 模型相比,这种稳健的回归模型是否能更好地拟合数据,我们可以计算每个模型的残差标准误差。

残差标准误差 (RSE) 是衡量回归模型中残差标准差的一种方法。 CSR 值越低,模型对数据的拟合效果越好。

以下代码显示了如何计算每个模型的 RSE:

 #find residual standard error of ols model
summary(ols)$sigma

[1] 49.41848

#find residual standard error of ols model
summary(robust)$sigma

[1] 9.369349

我们可以看到,鲁棒回归模型的RSE远低于普通最小二乘回归模型的RSE,这告诉我们鲁棒回归模型对数据提供了更好的拟合。

其他资源

如何在 R 中执行简单线性回归
如何在 R 中执行多元线性回归
如何在 R 中执行多项式回归

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注