R-绘制LM对象的95%置信区间



如何计算和绘制我在R中回归的置信区间?到目前为止,我有两个相等长度(x,y)的数值向量和一个回归对象(lm.out)。我制作了y给定X的散点图,并将回归线添加到了该图中。我正在寻找一种将L.Out添加95%的预测信心段的方法。我已经尝试使用预测功能,但是我什至不知道从哪里开始:/。这是我的代码:

x=c(1,2,3,4,5,6,7,8,9,0)
y=c(13,28,43,35,96,84,101,110,108,13)
lm.out <- lm(y ~ x)
plot(x,y)
regression.data = summary(lm.out) #save regression summary as variable
names(regression.data) #get names so we can index this data
a= regression.data$coefficients["(Intercept)","Estimate"] #grab values
b= regression.data$coefficients["x","Estimate"]
abline(a,b) #add the regression line

谢谢!

编辑:我已经看了提出的副本,无法完全陷入困境。

您对新的数据向量进行了预测,请参见newx

x=c(1,2,3,4,5,6,7,8,9,0)
y=c(13,28,43,35,96,84,101,110,108,13)
lm.out <- lm(y ~ x)
newx = seq(min(x),max(x),by = 0.05)
conf_interval <- predict(lm.out, newdata=data.frame(x=newx), interval="confidence",
                         level = 0.95)
plot(x, y, xlab="x", ylab="y", main="Regression")
abline(lm.out, col="lightblue")
lines(newx, conf_interval[,2], col="blue", lty=2)
lines(newx, conf_interval[,3], col="blue", lty=2)

编辑

Ben在Coments中提到的,可以使用matlines进行以下操作:

plot(x, y, xlab="x", ylab="y", main="Regression")
abline(lm.out, col="lightblue")
matlines(newx, conf_interval[,2:3], col = "blue", lty=2)

我将添加一个提示,在尝试@Alejandro Andrade给出的方法时,我会为我节省很多挫败感:如果您的数据在数据框架中,那么当您使用lm()构建模型,使用data=参数而不是$表示法。例如,使用

lm.out <- lm(y ~ x, data = mydata)

而不是

lm.out <- lm(mydata$y ~ mydata$x)

如果您执行后者,则此语句

predict(lm.out, newdata=data.frame(x=newx), interval="confidence", level = 0.95)

似乎忽略了使用newdata=传递的新值,或者存在静音错误。无论哪种方式,输出都是来自原始数据的预测,而不是新数据。

另外,请确保您的X变量在其具有的新数据框中获得相同的名称在原来的。这很容易弄清楚,因为您确实会遇到错误,但是提前知道它可能会节省您的调试。

注意:尝试将其添加为评论,但没有足够的声誉点。

最新更新