[英]Plotting a 95% confidence interval for a lm object
如何計算和繪制 r 中回歸的置信區間? 到目前為止,我有兩個等長的數值向量 (x,y) 和一個回歸對象 (lm.out)。 我制作了給定 x 的 y 散點圖,並將回歸線添加到該圖中。 我正在尋找一種方法將 lm.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
謝謝!
編輯:我已經查看了建議的副本,但無法完全了解它的底部。
您可以將 predict 用於新的數據向量,這里是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 在評論中提到的,這可以使用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 變量在新數據框中的名稱與原始數據框中的名稱相同。 這更容易弄清楚,因為您確實會遇到錯誤,但提前知道可能會為您節省一輪調試。
注意:嘗試將此添加為評論,但沒有足夠的聲望點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.