如何在 r 中执行多元线性回归


本指南展示了如何在 R 中执行多元线性回归的示例,包括:

  • 在拟合模型之前检查数据
  • 型号调整
  • 检查模型假设
  • 解释模型输出
  • 评估模型的拟合优度
  • 使用模型进行预测

我们走吧!

设施

在本例中,我们将使用内置的 R 数据集mtcars ,其中包含 32 辆不同汽车的各种属性的信息:

 #view first six lines of mtcars
head(mtcars)

# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

在此示例中,我们将构建一个多元线性回归模型,使用mpg作为响应变量,使用disphpdrat作为预测变量。

 #create new data frame that contains only the variables we would like to use to
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#view first six rows of new data frame
head(data)

# mpg disp hp drat
#Mazda RX4 21.0 160 110 3.90
#Mazda RX4 Wag 21.0 160 110 3.90
#Datsun 710 22.8 108 93 3.85
#Hornet 4 Drive 21.4 258 110 3.08
#Hornet Sportabout 18.7 360 175 3.15
#Valiant 18.1 225 105 2.76

数据审核

在拟合模型之前,我们可以查看数据以更好地理解它,并直观地评估多元线性回归是否是拟合该数据的良好模型。

特别是,我们需要检查预测变量与响应变量是否具有线性关联,这表明多元线性回归模型可能是合适的。

为此,我们可以使用pairs()函数创建每个可能的变量对的散点图:

 pairs(data, pch = 18, col = "steelblue")

从这对图中我们可以看到以下内容:

  • mpg可用性似乎具有很强的负线性相关性
  • mpghp似乎具有很强的正线性相关性
  • mpgdrat似乎具有适度的负线性相关性

请注意,我们还可以使用GGally库中的ggpairs()函数创建一个类似的图,其中包含每对变量的实际线性相关系数

 #install and load the GGally library
install.packages("GGally")
library(GGally)

#generate the pairs plot
ggpairs(data)

每个预测变量似乎与响应变量mpg具有显着的线性相关性,因此我们将继续将线性回归模型拟合到数据。

型号调整

在 R 中拟合多元线性回归模型的基本语法是:

 lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)

使用我们的数据,我们可以使用以下代码来拟合模型:

 model <- lm(mpg ~ disp + hp + drat, data = data)

检查模型假设

在继续验证模型结果之前,我们必须首先验证模型假设是否得到满足。也就是说,我们需要检查以下内容:

1. 模型残差的分布应近似正态。

我们可以通过创建一个简单的残差直方图来检查是否满足这个假设:

 hist(residuals(model), col = "steelblue")

尽管分布稍微右偏,但还没有异常到引起重大关注的程度。

2. 所有观测值的残差方差必须一致。

这种优选条件称为同方差。违反这一假设称为异方差

为了检查是否满足这个假设,我们可以创建一个调整/残值图:

 #create fitted value vs residual plot
plot(fitted(model), residuals(model))

#add horizontal line at 0
abline(h = 0, lty = 2)

理想情况下,我们希望残差在每个拟合值上均匀分布。从图中我们可以看到,拟合值越大,离差往往会变大一些,但这种趋势还没有极端到引起太多关注。

解释模型输出

一旦我们验证了模型假设得到充分满足,我们就可以使用summary()函数检查模型输出:

 summary(model)

#Call:
#lm(formula = mpg ~ disp + hp + drat, data = data)
#
#Residuals:
# Min 1Q Median 3Q Max 
#-5.1225 -1.8454 -0.4456 1.1342 6.4958 
#
#Coefficients:
#Estimate Std. Error t value Pr(>|t|)   
#(Intercept) 19.344293 6.370882 3.036 0.00513 **
#disp -0.019232 0.009371 -2.052 0.04960 * 
#hp -0.031229 0.013345 -2.340 0.02663 * 
#drat 2.714975 1.487366 1.825 0.07863 . 
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 3.008 on 28 degrees of freedom
#Multiple R-squared: 0.775, Adjusted R-squared: 0.7509 
#F-statistic: 32.15 on 3 and 28 DF, p-value: 3.28e-09

从结果中我们可以看到以下内容:

  • 模型的总体 F 统计量为32.15 ,相应的 p 值为3.28e-09 。这表明整体模型具有统计显着性。换句话说,回归模型作为一个整体是有用的。
  • disp在 0.10 显着性水平上具有统计显着性。特别是,模型结果的系数表明,假设马力油耗保持不变,可用性增加 1 个单位与平均mpg减少 -0.019 个单位相关。 。
  • hp在 0.10 显着性水平上具有统计显着性。特别是,模型结果的系数表明,假设dispdrat保持不变,则马力每增加 1 个单位,平均mpg就会减少 -0.031 个单位。
  • drat在 0.10 显着性水平上具有统计显着性。特别是,模型结果的系数表明,假设流量马力保持不变,汽油消耗增加 1 个单位与平均 2,715 单位mpg的增加相关。

评估模型的拟合优度

为了评估回归模型对数据的拟合程度,我们可以查看一些不同的指标:

1. 多个R方

这衡量了预测变量和响应变量之间线性关系的强度。 R 平方倍数为 1 表示完美线性关系,而 R 平方倍数为 0 表示没有线性关系。

倍数 R 也是 R 平方的平方根,它是响应变量中可以由预测变量解释的方差的比例。在此示例中,R 平方倍数为0.775 。所以 R 平方为 0.775 2 = 0.601 。这表明mpg60.1%的方差可以通过模型预测变量来解释。

相关: 什么是好的 R 平方值?

2. 残差标准误差

这测量了观测值和回归线之间的平均距离。在此示例中,观测值与回归线平均偏差3.008 个单位

有关的:   了解回归的标准误差

使用模型进行预测

由模型结果可知,拟合的多元线性回归方程为:

英里/加仑 = -19.343 – 0.019*disp – 0.031*hp + 2.715*drat

我们可以使用这个方程来预测新观察mpg是多少。例如,我们可以找到具有以下属性的汽车的预测mpg值:

  • 显示= 220
  • 通道= 150
  • 德拉= 3
 #define the coefficients from the model output
intercept <- coef(summary(model))["(Intercept)", "Estimate"]
disp <- coef(summary(model))["disp", "Estimate"]
hp <- coef(summary(model))["hp", "Estimate"]
drat <- coef(summary(model))["drat", "Estimate"]

#use the model coefficients to predict the value for mpg
intercept + disp*220 + hp*150 + drat*3

#[1] 18.57373

对于disp = 220、 hp = 150 且drat = 3 的汽车,模型预测汽车的油耗为18.57373 mpg

您可以在此处找到本教程中使用的完整 R 代码。

其他资源

以下教程解释了如何在 R 中拟合其他类型的回归模型:

如何在 R 中执行二次回归
如何在 R 中执行多项式回归
如何在 R 中执行指数回归

添加评论

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