其他
第四十讲 R-线性回归:预测模型及可信区间
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
在前面几讲,我们介绍了线性回归及R的实现(第三十九讲 R-线性回归:自变量中存在分类变量时、第三十八讲 R-线性回归模型的假设条件检验、第三十七讲 R-多元线性回归中的多重共线性和方差膨胀因子、第三十六讲 R-多元线性回归中的交互作用及更优模型选择、第三十五讲 R-多元线性回归)。今天的课程将继续带大家学习R-线性回归:预测模型及可信区间。# 加载数据
data("cars", package="datasets")
# 建立模型
model<-lm(dist~speed, data=cars)
model
## Call:
## lm(formula = dist ~ speed, data = cars)
## Coefficients:
## (Intercept) speed
## -17.58 3.93
变量speed和dist的单位分别是mph和ft。
new.speeds<-data.frame(
speed=c(12, 19, 24)
)
predict(model, newdata=new.speeds)
## 1 2 3
## 29.6 57.1 76.8
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
例如,与速度19相关的95%置信区间为(51.83,62.44),平均预测值为57.1。根据我们的模型,一辆时速为19 mph的汽车的平均制动距离为51.83到62.44ft,即平均值落在51.83到62.44到概率为95%。
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
注意,预测区间依赖于假设:残留误差正态分布为常数。因此,只有在您认为手边的数据近似满足假设的情况下,才可以使用预测区间。
我们应该使用哪一个?
# 0. 建立预测模型
data("cars", package="datasets")
model<-lm(dist~speed, data=cars)
# 1. 添加预测区间
pred.int<-predict(model, interval="prediction")
mydata<-cbind(cars, pred.int)
# 2. 绘制回归线和置信区间
library("ggplot2")
p<-ggplot(mydata, aes(speed, dist))+
geom_point()+
stat_smooth(method=lm)
# 3. 绘制预测区间
p+geom_line(aes(y=lwr), color="red", linetype="dashed")+
geom_line(aes(y=upr), color="red", linetype="dashed")