簡體   English   中英

繪制 lm 對象的 95% 置信區間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM