内容简介:线性回归的主要目的是根据一个或多个预测变量(自变量)预测一个结果值。本文会讨论如何使用R来预测新观测值的结果。你也将学习如何展示置信区间和预测的区间。
线性回归的主要目的是根据一个或多个预测变量(自变量)预测一个结果值。本文会讨论如何使用R来预测新观测值的结果。你也将学习如何展示置信区间和预测的区间。
构建线性回归
我们首先构建一个基于汽车速度预测刹车距离的线性回归模型。
# Load the data data("cars", package = "datasets") # Build the model model <- lm(dist ~ speed, data = cars) model #> #> Call: #> lm(formula = dist ~ speed, data = cars) #> #> Coefficients: #> (Intercept) speed #> -17.58 3.93
因此线性模型公式可以写作: dist = -17.579 + 3.932*speed
.
公式中两个变量的单位需要注意
新数据集的预测
使用上面的模型,我们可以为一个新的速度值预测刹车距离。
首先创建一个新的数据框,它必须包含新的数据值,比如3个新的速度值,变量名要保持一致:
new.speeds <- data.frame( speed = c(12, 19, 24) )
通过R函数 predict()
,我们可以进行新刹车距离的预测:
predict(model, newdata = new.speeds) #> 1 2 3 #> 29.6 57.1 76.8
置信区间
置信区间反应了均值预测的不确定性。想要展示预测均值的95%置信区间,指定选项 interval = "confidence"
:
predict(model, newdata = new.speeds, interval = "confidence") #> fit lwr upr #> 1 29.6 24.4 34.8 #> 2 57.1 51.8 62.4 #> 3 76.8 68.4 85.2
输出包含下面一些列:
-
fit
: 预测的均值 -
lwr
和upr
: 预测均值的下边界与上边界,默认是95%置信区间
该如何解释呢?例如,速度为19时的95%置信区间是 (51.83, 62.44)。这意味着根据我们的模型,一个以19 mph速度行驶的汽车,它的刹车距离平均水平在 51.83到62.44 ft范围内。
预测区间
预测区间给出了单个值得不确定性。跟计算置信区间方式相同,我们可以用一下代码计算预测区间:
predict(model, newdata = new.speeds, interval = "prediction") #> fit lwr upr #> 1 29.6 -1.75 61.0 #> 2 57.1 25.76 88.5 #> 3 76.8 44.75 108.8
跟速度为19关联的95%预测区间是(25.76, 88.51)。这意味着,根据我们的模型,95%的以19 mph速度行驶的车的刹车距离在25.76和88.51之间。
注意预测区间非常依赖残差服从正态分布的假设。因此,如果你确定手里的数据基本满足这个假设才能使用它。
预测区间或置信区间?
一个预测区间反映了单个数值的不确定性,而一个置信区间反映了预测均值的不确定性。因此,一般而言,对同样的值,预测区间的范围都比置信区间大。
我们应该使用哪一种呢?这个问题的答案依赖分析的语境和目的。通常讲,我们队特定的单个预测感兴趣,这时候预测区间会比较合适。在你该使用预测区间时却使用了置信区间会极大地低估给定预测值的不确定性(P. Bruce and Bruce 2017)。
下面的R代码创建一个散点图,并带有:
- 蓝色的回归线
- 灰色的置信区间
- 红色的预测区间
# 0. Build linear model data("cars", package = "datasets") model <- lm(dist ~ speed, data = cars) # 1. Add predictions pred.int <- predict(model, interval = "prediction") #> Warning in predict.lm(model, interval = "prediction"): predictions on current data refer to _future_ responses mydata <- cbind(cars, pred.int) # 2. Regression line + confidence intervals library("ggplot2") p <- ggplot(mydata, aes(speed, dist)) + geom_point() + stat_smooth(method = lm) # 3. Add prediction intervals p + geom_line(aes(y = lwr), color = "red", linetype = "dashed")+ geom_line(aes(y = upr), color = "red", linetype = "dashed")
参考文献
Bruce, Peter, and Andrew Bruce. 2017. Practical Statistics for Data Scientists . O’Reilly Media.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- V编程语言现在是开源的 - 是不是好得让人难以置信?
- 2D AR算法新突破,亮风台提出基于约束置信度的鲁棒跟踪算法CCM
- 线段树(区间树)
- LeetCode 56,区间合并问题
- 快速区间查询算法 - 线段树
- 树形结构数据存储方案(五):区间嵌套
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
TCP/IP详解 卷1:协议
W.Richard Stevens / 范建华 / 机械工业出版社 / 2000-4-1 / 45.00元
《TCP/IP详解卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者W.Richard Stevens用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 《TCP/IP详解卷1:协议》适合作为计算机专业学......一起来看看 《TCP/IP详解 卷1:协议》 这本书的介绍吧!