回归分析 | 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~
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容