2012-09-22 8 views
14

現在、線形モデルの信頼区間を描こうとしています。このためにpredict.lm()を使うべきであることが判明しましたが、実際に関数を理解するにはいくつかの問題があり、何が起きているのかわからなくても関数を使うのは嫌です。私は、このテーマについていくつかのハウツーを見つけましたが、対応するRコードだけで、実際の説明はありません。RのPredict.lm() - フィッティングされた値の周りの非定常予測バンドを取得する方法

## 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でそれをやり直すのは理にかなっていないはずです。だから私は再び間違っていると思いますが、理由を理解できません。

私はあなたが思うかもしれないと思います:なぜこれを試してみませんか?そして、私は(たとえそれがここですべてを解決しなくても)、しかし私は今、どのようにするのか分からない。私は新しいデータのためのものではないので、私はそれを使う方法を知らないし、試してみると正しい信頼区間を得られない。どういうわけか、そのデータをどのように選択するかは非常に重要ですが、わかりません!

編集:私の意図は、predict.lmの仕組みを理解することです。それが私が思うように動作するかどうか分からないということです。つまり、yハット(予測値)を計算し、インターバルのupr/lwr境界ごとに加算/減算を使用して複数のデータポイントを計算します(信頼ラインのように見えます)?それで、なぜ私は線形モデルのように新データに同じ長さを持つ必要があるのか​​と疑問に思う。

+0

ドキュメントの「詳細」セクションでは、ある程度の長さの 'newdata'引数について説明します。その議論のどの部分が依然として混乱していますか? – joran

+0

私はこれが私を混乱させていると思います: "predict.lmはフレームnewdataの回帰関数を評価することによって得られる予測値を生成します"(一般的な説明で)、 "newdataが省略された場合、予測はフィット。"新しいデータのために。なぜ私は実際の回帰でつながっていない信頼区間を取得しようとしますか?これが私がこの文章を理解する方法です、これが私を混乱させるものです。 この場合、欠損値がどのように処理されるかを説明していますが、私は最初の部分とすでに闘っています! – lisa

+2

新しい観測値の_prediction_間隔に興味があるかもしれません。 – joran

答えて

21

いくつかのデータをメイク:

d <- data.frame(x=c(1,4,5,7), 
       y=c(0.8,4.2,4.7,8)) 

は、モデルのフィット:オリジナルのx値と

lm1 <- lm(y~x,data=d) 

信頼と予測区間:

p_conf1 <- predict(lm1,interval="confidence") 
p_pred1 <- predict(lm1,interval="prediction") 

コンファレンスを。およびpred。

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) 

は一緒にすべてをプロット:新しいx値(外挿より細かく/均等に元のデータよりも離間した)との間隔

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) 

enter image description here

新しいデータを使用して、元超えて外挿を可能にしますデータ;元のデータがまばらであるか不均一な場合でも、予測区間(直線ではない)は、元のx値の線形補間ではよく近似できません。

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

interval="none"(デフォルト)は、信頼性や予測間隔を計算したり、予測値だけを返さないようにRに指示します。

+0

多分いくつかの単語で予測と信頼区間の違いを説明しようとすることはできますか?これは私がそれを理解した方法です。CIは、使用された人口の平均が95%になる可能性があることについての手がかりを与えます。一方、PIは平均値ではなく、将来の値については、これはあなたのデータにまだ入っていないy値です。これはどういうわけか正しいですか? – lisa

+2

私はあなたにGoogleの「予測間隔」「信頼区間」「...?答えはそこにあります。あなたがそこに必要なものを手に入れなければ、プログラミングの領域を超えて、http://stats.stackexchange.comで尋ねるべきでしょう。 ://stackoverflow.com/questions/9406139/r-programming-predict-prediction-vs-confidence –

+0

はい、私はそれを読んだ、とにかく感謝 – lisa

関連する問題