15

そのため、現在、線形モデルの信頼区間を描画しようとしています。これには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:それによって、モデル内の1つの特定の変数の信頼区間を取得できますか?もしそうなら、そのための3bは何ですか?3aで用語を指定できれば、3bで再度指定しても意味がないので、もう一度間違っていると思いますが、理由がわかりません。

皆さんの中には、「これを試してみませんか?」と思う人もいるかもしれません。そして、私は(それがここですべてを解決しないかもしれないとしても)そうします、しかし私は今その方法を知りません。newdataの目的がわからないため、使用方法がわかりません。試してみると、適切な信頼区間が得られません。どういうわけか、そのデータをどのように選択するかが非常に重要ですが、私にはわかりません。

編集:私の意図はpredict.lmがどのように機能するかを理解することであると付け加えたいと思います。つまり、私が思っているように機能するかどうかはわかりません。つまり、y-hat(予測値)を計算し、間隔の上限/下限ごとに加算/減算を使用して、いくつかのデータポイントを計算します(信頼線のように見えます)?? 次に、線形モデルと同じ長さをnewdataに含める必要がある理由がわかりません。

4

1 に答える 1

22

いくつかのデータを作成します。

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値間の線形補間によって適切に近似されない可能性があります...

「モデル内の1つの特定の変数の信頼区間」が何を意味するのかよくわかりません。パラメータの信頼区間が必要な場合は、を使用する必要がありますconfint。一部のパラメーターの変更のみに基づいて(他のパラメーターによる不確実性を無視して)変更の予測が必要な場合は、実際にを使用する必要がありますtype="terms"

interval="none"(デフォルト)Rに、信頼区間や予測区間をわざわざ計算せず、予測値だけを返すように指示するだけです。

于 2012-09-22T14:31:34.117 に答える