用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值越小,估计值越重要。
可以看出
youtube
和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
模型精度
一旦确定至少一个预测变量与结果显着相关,就应该通过检查模型对数据的拟合程度来继续诊断。此过程也称为拟合优度
可以使用以下三个数量来评估线性回归拟合的整体质量,这些数量显示在模型摘要中:
- 残留标准误差(RSE),
- R平方(R2)和调整后的R2,
- F统计量,已在上一节中进行了描述
## rse r.squared f.statistic p.value
## 1 2.11 0.89 644 5.64e-77
- 残留标准误差(RSE)。
与预测误差相对应的RSE(或模型sigma)大致代表模型观察到的结果值和预测值之间的平均差。RSE越低,模型就越适合我们的数据。
将RSE除以结果变量的平均值将为您提供预测误差率,该误差率应尽可能小。
在我们的示例中,仅使用youtube和facebook预测变量,RSE = 2.11,这意味着观察到的销售值与预测值的平均偏差约为2.11个单位。
这对应于2.11 / mean(train.data $ sales)= 2.11 / 16.77 = 13%的错误率,这很低。
- 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,这很好。
- F统计:
回想一下,F统计量给出了模型的整体重要性。它评估至少一个预测变量是否具有非零系数。
在简单的线性回归中,此检验并不是真正有趣的事情,因为它只是复制了系数表中可用的t检验给出的信息。
一旦我们开始在多元线性回归中使用多个预测变量,F统计量就变得更加重要。
大的F统计量将对应于统计上显着的p值(p <0.05)。在我们的示例中,F统计量644产生的p值为1.46e-42,这是非常重要的。
做出预测
我们将使用测试数据进行预测,以评估回归模型的性能。
步骤如下:
- 根据测试数据中的新广告预算预测销售价值
- 通过计算评估模型性能:
- 预测误差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~
上一篇: 探究多元线性回归的有效性
推荐阅读
-
多元回归分析:理解相关关系并预测结果 - 一、多元回归分析旨在研究自变量X与因变量Y之间的关联,以揭示Y形成的机制,并利用X进行预测。共有五种常见的回归分析方法,包括线性回归、0‐1回归(逻辑回归)、定序回归、计数回归和生存回归,它们的划分依据是因变量Y的不同类型。因变量还可分为连续数值型变量等多种类别。
-
用R语言探究保险投资风险敞口:广义线性模型和广义相加模型的多元平滑回归分析
-
用R语言进行多元线性回归的回归分析教程
-
理解R语言中的广义线性模型和广义相加模型:如何进行多元平滑回归分析以评估保险投资组合的信用风险敞口
-
用Python的sklearn库实现多元线性回归分析
-
Python和R中多元线性回归的实证分析
-
使用SPSS进行逐步回归分析的多元线性回归方法
-
预测武汉流动人口趋势:利用R语言的GM(1,1)灰模型、ARIMA时间序列及logistic逻辑回归分析实战教程 | 包含详细代码与数据
-
高端 tecdat|R 语言非线性回归 nls 河流阶段流量数据和等级曲线的探索性分析,流量预测可视化
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON