回归分析 | R语言 -- 多元线性回归

多元线性回归

多元线性回归 是 简单线性回归 的扩展,用于基于多个不同的预测变量(x)预测结果变量(y)。

例如,对于三个预测变量(x),y​​的预测由以下等式表示: y = b0 + b1*x1 + b2*x2 + b3*x3

回归贝塔系数测量每个预测变量与结果之间的关联。“ b_j”可以解释为“ x_j”每增加一个单位对y的平均影响,同时保持所有其他预测变量不变。

在本节中,依然使用datarium包中的 marketing 数据集,我们将建立一个多元回归模型,根据在三种广告媒体(youtube,facebook和报纸)上投入的预算来预测销售。计算公式如下:sales = b0 + b1*youtube + b2*facebook + b3*newspaper

library(tidyverse)
library(caret)
data("marketing", package = "datarium")
> head(marketing)
  youtube facebook newspaper sales
1  276.12    45.36     83.04 26.52
2   53.40    47.16     54.12 12.48
3   20.64    55.08     83.16 11.16
4  181.80    49.56     70.20 22.20
5  216.96    12.96     70.08 15.48
6   10.44    58.68     90.00  8.64

您可以如下计算R中的多个回归模型系数:

  • 将数据分为训练组和测试组,按 8:2 的比例
set.seed(1998) # 设置随机种子使结果可重复
idx = sample(nrow(marketing), 0.8 * nrow(marketing))
trainData  <- marketing[idx, ]
testData   <- marketing[-idx, ]
  • 建模
model <- lm(sales ~ youtube + facebook + newspaper, 
            data = trainData)

请注意,如果您的数据中包含许多预测变量,则可以使用~.以下命令将模型中的所有可用变量简单地包括在内:

> summary(model)$coef
                Estimate  Std. Error   t value     Pr(>|t|)
(Intercept)  3.541060149 0.452633944  7.823232 7.263960e-13
youtube      0.045518663 0.001663864 27.357206 2.052074e-61
facebook     0.191177591 0.009717858 19.672812 4.219260e-44
newspaper   -0.001838604 0.006975243 -0.263590 7.924437e-01

从上面的输出中,系数表显示β系数估计值及其显着性水平。列为:

  • Estimate:与每个预测变量相关的截距(b0)和beta系数估计
  • Std.Error:系数估算值的标准误差。这代表了系数的准确性。标准误差越大,我们对估计的信心就越差。
  • t value:t统计量,即系数估算值(第2列)除以估算值的标准误(第3列)
  • Pr(>|t|):对应于t统计量的p值。p值越小,估计值越重要。

可以看出youtubefacebook 变量结果显著,而 newspaper不显著,这个结果从上一篇文章的散点图中也能预知。

如前所述,您可以使用R函数轻松进行预测predict()

# New advertising budgets
newdata <- data.frame(
  youtube = 2000, facebook = 1000,
  newspaper = 1000
)
# Predict sales values
predict(model, newdata)
##   1 
## 283

解释

在使用模型进行预测之前,您需要评估模型的统计显着性。通过显示模型的统计摘要,可以轻松地进行检查。

模型汇总

对于summary()的解读有一篇不错的文章:R语言:summary()函数解读

显示模型的统计摘要,如下所示:

> summary(model)
Call:
lm(formula = sales ~ youtube + facebook + newspaper, data = trainData)

Residuals:
     Min       1Q   Median       3Q      Max 
-10.7249  -1.0821   0.2716   1.4824   3.4149 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  3.541060   0.452634   7.823 7.26e-13 ***
youtube      0.045519   0.001664  27.357  < 2e-16 ***
facebook     0.191178   0.009718  19.673  < 2e-16 ***
newspaper   -0.001839   0.006975  -0.264    0.792    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.116 on 156 degrees of freedom
Multiple R-squared:  0.8888,    Adjusted R-squared:  0.8867 
F-statistic: 415.7 on 3 and 156 DF,  p-value: < 2.2e-16

摘要输出显示6个​​组件,包括:

  • Call。显示用于计算回归模型的函数调用。
  • Residuals。快速查看残差的分布,根据定义,这些均值为零。因此,中位数不应远离零,并且最小值和最大值的绝对值应大致相等。
  • Coefficients。显示回归系数β及其统计意义。与结果变量显着相关的预测变量以星号标记。
  • 残留标准误差(RSE),R平方(R2)和F统计量是用于检查模型与我们的数据拟合程度的指标。

解释多元回归分析的第一步是在模型摘要的底部检查F统计量和关联的p值。

在我们的示例中,可以看出F统计量的p值<2.2e-16,这是非常重要的。这意味着 至少一个预测变量与结果变量显着相关

系数意义

要查看哪些预测变量很重要,您可以检查系数表,该表显示了回归beta系数和相关的t统计p值的估计。

summary(model)$coef
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)  3.39188    0.44062   7.698 1.41e-12
## youtube      0.04557    0.00159  28.630 2.03e-64
## facebook     0.18694    0.00989  18.905 2.07e-42
## newspaper    0.00179    0.00677   0.264 7.92e-01

对于给定的预测变量,t统计量评估预测变量和结果变量之间是否存在显着关联,即,预测变量的beta系数是否显着不同于零。

可以看出,youtube和facebook广告预算的变化与销售的变化显着相关,而报纸预算的变化与销售却没有显着相关。

对于给定的预测变量,系数(b)可以解释为预测变量增加一个单位,同时保持所有其他预测变量固定的对y的平均影响。

例如,对于固定数量的youtube和报纸广告预算,在Facebook广告上花费额外的1000美元,平均可以使销售额增加大约0.1885 * 1000 = 189个销售单位。

youtube系数表明,在所有其他预测变量保持不变的情况下,youtube广告预算每增加1000美元,我们平均可以预期增加0.045 * 1000 = 45个销售单位。

我们发现报纸在多元回归模型中并不重要。这意味着,对于固定数量的youtube和报纸广告预算,报纸广告预算的变化不会显着影响销售单位。

由于报纸变量不重要,因此可以 将其从模型中删除,以提高模型精度:

model <- lm(sales ~ youtube + facebook, data = trainData)
summary(model)
## 
## Call:
## lm(formula = sales ~ youtube + facebook, data = train.data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -10.481  -1.104   0.349   1.423   3.486 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.43446    0.40877     8.4  2.3e-14 ***
## youtube      0.04558    0.00159    28.7  < 2e-16 ***
## facebook     0.18788    0.00920    20.4  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.11 on 159 degrees of freedom
## Multiple R-squared:  0.89,   Adjusted R-squared:  0.889 
## F-statistic:  644 on 2 and 159 DF,  p-value: <2e-16

最后,我们的模型公式可以写成如下:。 sales = 3.43+ 0.045*youtube + 0.187*facebook

模型精度

一旦确定至少一个预测变量与结果显着相关,就应该通过检查模型对数据的拟合程度来继续诊断。此过程也称为拟合优度

可以使用以下三个数量来评估线性回归拟合的整体质量,这些数量显示在模型摘要中:

  1. 残留标准误差(RSE),
  2. R平方(R2)和调整后的R2,
  3. F统计量,已在上一节中进行了描述
##    rse r.squared f.statistic  p.value
## 1 2.11      0.89         644 5.64e-77
  1. 残留标准误差(RSE)。

与预测误差相对应的RSE(或模型sigma)大致代表模型观察到的结果值和预测值之间的平均差。RSE越低,模型就越适合我们的数据。

将RSE除以结果变量的平均值将为您提供预测误差率,该误差率应尽可能小。

在我们的示例中,仅使用youtube和facebook预测变量,RSE = 2.11,这意味着观察到的销售值与预测值的平均偏差约为2.11个单位。

这对应于2.11 / mean(train.data $ sales)= 2.11 / 16.77 = 13%的错误率,这很低。

  1. R平方和调整后的R平方

R平方(R2)的范围是0到1,代表结果变量中的变化比例,可以用模型预测变量来解释。

对于简单的线性回归,R2是结果与预测变量之间的皮尔森相关系数的平方。在多元线性回归中,R2表示观察到的结果值与预测值之间的相关系数。

R2衡量模型拟合数据的程度。R2越高,模型越好。然而,R2的一个问题是,即使将更多变量添加到模型中,R2总是会增加,即使这些变量与结果之间的关联性很小(James等,2014)。解决方案是通过考虑预测变量的数量来调整R2。

摘要输出中“已调整的R平方”值中的调整是对预测模型中包含的x变量数量的校正。

因此,您应该主要考虑调整后的R平方,对于更多数量的预测变量,它是受罚的R2。

  • (调整后的)R2接近1表示回归模型已解释了结果中很大一部分的可变性。
  • 接近0的数字表示回归模型无法解释结果的大部分可变性。

在我们的示例中,调整后的R2为0.88,这很好。

  1. F统计

回想一下,F统计量给出了模型的整体重要性。它评估至少一个预测变量是否具有非零系数。

在简单的线性回归中,此检验并不是真正有趣的事情,因为它只是复制了系数表中可用的t检验给出的信息。

一旦我们开始在多元线性回归中使用多个预测变量,F统计量就变得更加重要。

大的F统计量将对应于统计上显着的p值(p <0.05)。在我们的示例中,F统计量644产生的p值为1.46e-42,这是非常重要的。

做出预测

我们将使用测试数据进行预测,以评估回归模型的性能。

步骤如下:

  1. 根据测试数据中的新广告预算预测销售价值
  2. 通过计算评估模型性能:
    • 预测误差RMSE((Root Mean Squared Error, 均方根误差),代表测试数据中观察到的已知结果值与模型预测的结果值之间的平均差。RMSE越低,模型越好。
    • R平方(R2),代表观察到的结果值与预测结果值之间的相关性。R2越高,模型越好。
# Make predictions
predictions <- predict(model, testData)

# Model performance
# (a) Compute the prediction error, RMSE
> RMSE(predictions, testData$sales)
[1] 1.612069
# (b) Compute R-square
> R2(predictions, testData$sales)
[1] 0.9281111

从上面的输出中,R2为 0.9281111,这意味着观察到的结果值与预测的结果值高度相关,这非常好。

预测误差RMSE为1.612069,表示误差率为1.612069 / mean(testData $ sales) = 1.612069/ 15.567 = 10.35 %,这很好。

讨论区

本章介绍了线性回归的基础,并提供了R中用于计算简单和多个线性回归模型的实例。我们还描述了如何评估模型的性能以进行预测。


> 觉得有用老铁们麻烦双击666~

你可能感兴趣的:(回归分析 | R语言 -- 多元线性回归)