したがって、私は現在、線形モデルの信頼区間を描画しようとしています。これにはpredict.lm()を使用する必要があることがわかりましたが、実際に関数を理解するのにいくつかの問題があり、何が起こっているのかを知らずに関数を使用したくありません。私はこの問題についていくつかのハウツーを見つけましたが、対応する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) interval
Type of interval calculation.
大丈夫ですが、「何もない」とは何ですか?
3a) type
Type of prediction (response or model term).
3b) terms
If type="terms", which terms (default is all terms)
3a:これにより、モデル内の特定の変数の信頼区間を取得できますか?もしそうなら、そのときの3bは何ですか? 3aで用語を指定できたとしても、3bでそれを再度行うことは意味がありません。ですから、私は再び間違っていると思いますが、理由を理解することはできません。
何人かはそう思うかもしれません:なぜこれを試してみませんか?そして、私は(ここですべてを解決しないかもしれないとしても)しますが、私は今のところ方法を知りません。現在、newdataの目的がわからないので、それを使用する方法がわかりません。試しても、正しい信頼区間が得られません。どういうわけか、そのデータをどのように選択するかが非常に重要ですが、私にはわかりません!
編集:私の意図は、predict.lmがどのように機能するかを理解することです。つまり、私が思ったとおりに機能するかどうかはわかりません。つまり、Yハット(予測値)を計算し、間隔の上限/下限のそれぞれに対して加算/減算を使用して、いくつかのデータポイントを計算します(その場合、信頼線のように見えます)??次に、なぜ線形モデルの場合と同じ長さをnewdataに含める必要があるのかを理解します。
いくつかのデータを構成します。
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")
会議と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に信頼区間や予測区間の計算に煩わされず、予測値のみを返すように指示するだけです。