R中的Predict.lm() – 如何在擬合值周圍獲得不穩定的預測帶
所以我目前正試圖繪製線性模型的置信區間.我發現我應該使用predict.lm()這個,但我有一些問題真正理解的功能,我不喜歡使用功能,而不知道發生了什麼.我在這個問題上發現了幾個how-to,但是隻有相應的R程式碼,沒有真正的解釋.
這是函式本身:
## S3 method for class 'lm' predict(object, newdata, se.fit = FALSE, scale = NULL, df = Inf, interval = c("none", "confidence", "prediction"), level = 0.95, type = c("response", "terms"), terms = NULL, na.action = na.pass, pred.var = res.var/weights, weights = 1, ...)
現在,我難以理解:
1) newdata An optional data frame in which to look for variables with which to predict. If omitted, the fitted values are used.
所有人似乎都在使用newdata,但我不太明白為什麼.為了計算置信區間,我顯然需要這個間隔的資料(如觀測數,x的平均值等),所以不能說是什麼意思.但是那是什麼意思呢?
2)間隔
間隔計算型別
好的,但是什麼是“無”?
3a)型別
預測型別(響應或模型項).
3b)條款
如果type =“terms”,哪些術語(預設是所有術語)
> 3a:我可以通過我的模型獲得一個特定變數的置信區間嗎?如果是這樣,那麼3b呢?如果我可以在3a中指定這個術語,那麼在3b中再做一次就沒有意義了,所以我想我再錯了,但是我不明白為什麼.
我想你們中有些人可能會想:為什麼不試試這個?我會(即使這可能不是在這裡解決一切),但我現在不知道如何.因為我現在不知道newdata是什麼,我不知道如何使用它,如果我嘗試,我沒有得到正確的置信區間.不知怎的,你如何選擇資料是非常重要的,但我只是不明白!
編輯:我想補充一點,我的意圖是要了解forecast.lm的工作原理.我的意思是我不明白,如果它的工作方式我認為它.那就是計算y-hat(預測值),而不是使用間隔的每個upr / lwr界限的加/減來計算幾個資料點(看起來像一個置信線)?那麼我會不明白為什麼在新資料中與線性模型有相同的長度是必要的.
組成一些資料:
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")
CONF.和pred.間隔與新的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不要計算任何置信度或預測間隔,只返回預測值.
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/12544090/predict-lm-in-r-how-to-get-nonconstant-prediction-bands-around-fitted-values