补一些数据:
d <- data.frame(x=c(1,4,5,7),
y=c(0.8,4.2,4.7,8))
拟合模型:
lm1 <- lm(y~x,data=d)
原始 x 值的置信区间和预测区间:
p_conf1 <- predict(lm1,interval="confidence")
p_pred1 <- predict(lm1,interval="prediction")
会议。和预测。具有新 x 值的间隔(外推且比原始数据间隔更细/均匀):
nd <- data.frame(x=seq(0,8,length=51))
p_conf2 <- predict(lm1,interval="confidence",newdata=nd)
p_pred2 <- predict(lm1,interval="prediction",newdata=nd)
将所有内容绘制在一起:
par(las=1,bty="l") ## cosmetics
plot(y~x,data=d,ylim=c(-5,12),xlim=c(0,8)) ## data
abline(lm1) ## fit
matlines(d$x,p_conf1[,c("lwr","upr")],col=2,lty=1,type="b",pch="+")
matlines(d$x,p_pred1[,c("lwr","upr")],col=2,lty=2,type="b",pch=1)
matlines(nd$x,p_conf2[,c("lwr","upr")],col=4,lty=1,type="b",pch="+")
matlines(nd$x,p_pred2[,c("lwr","upr")],col=4,lty=2,type="b",pch=1)
使用新数据可以在原始数据之外进行推断;此外,如果原始数据稀疏或间隔不均匀,则预测间隔(不是直线)可能无法通过原始 x 值之间的线性插值很好地近似......
我不太清楚“模型中一个特定变量的置信区间”是什么意思;如果您想要置信区间范围,那么你应该使用confint
。如果您希望仅根据某些参数的变化来预测变化(忽略其他参数引起的不确定性),那么您确实想使用type="terms"
.
interval="none"
(默认)只是告诉 R 不要计算任何置信度或预测区间,而只返回预测值。