- ベストアンサー
統計ソフトRのlm関数とpredict関数について
- 統計ソフトRを使って回帰分析を行い、予測値を出力しようとしていますが、うまくいっていません。
- データフレーム1とデータフレーム2には異なる変数が存在し、さらに外部変数もあります。
- 具体的な質問として、説明変数としてデータフレーム1のA、データフレーム2のB、外部変数aを使って目的変数Xを予想する方法や、回帰分析の正しさを確認する方法、予測値をデータフレーム1に出力する方法について質問しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> 寄与率がどうなれば、また、残査がどうなれば > 回帰は成功した、と言えるのでしょうか??? 寄与率は決定係数ともよばれますが、これは従属変数、例でいうところのXの変動を回帰式でどの程度説明できているかを表す指標です。 No.1の例で、 summary(kaiki) とタイプして表示された中に「Multiple R-squared: 0.9048」とありますが、これがその寄与率です。 この例ですと、Xの変動の内90.48%を回帰式で説明できるということになります。 変動の9割以上も説明できるので良いように思えますが、p値をみますと 0.1394と0.05を上回っていますので、XはA,Bにより値が決まったのではなくたまたま例のようになったのかもしれません。 (p値は誤差分布が正規分布に従っていないとあまり意味がありません。) 残差は、 kaiki$residuals とタイプすると表示されますが、これは従属変数の値と得られた回帰式による予測値との差です。 当然、予測値と実際に得られた値との差は小さいほうが良いので、全ての残差の絶対値が許容できる値以下であれば、その回帰式は使えるものといえるでしょう。 他に回帰式の妥当性の確認方法としては、標準化残差やてこ比を用いる方法もありますので、調べてみてください。
その他の回答 (1)
念のためお聞きしますが、データフレーム1のAとデータフレーム2のBのXは同じものですよね? 2)は寄与率や残差の値を確認してください。 1), 3)は下のようなことがしたいのでしょうか? # データフレームの作成 # Xの並びは同じ (frame1 <- data.frame(X = c(2:5, 1), B = 3:7)) (frame2 <- data.frame(X = c(2:5, 1), A = 6:2)) # データフレームの統合 # 並びが同じなのでmergeでなくてもいい (frame3 <- merge(frame1, frame2, by = "X", sort = FALSE)) # 定数の設定 a <- 1 # 切片をaに固定して回帰分析 # kaiki <- with(frame3, lm(X ~ A*B+a-1))でも可 kaiki <- with(frame3, lm(X-a ~ A*B-1)) summary(kaiki) plot(kaiki) # predictを使わず予測値を求める (Yosoku <- with(kaiki, fitted.values + a)) # predictを使い予測値を求める (Yosoku2 <- predict(kaiki, newdata = frame3[,c("A", "B")]) + a) # 予測値をframe1に統合 # 並びが同じなのでcbindでOK (frame1 <- cbind(frame1, Yosoku))
お礼
返答をお伺いして、分かりずらい文章で申し訳ないと思いました。。。 お返事ありがとうございます。 たくさんヒントを頂いたので、 これをもとに勉強させて下さい! もし、お時間があれば一つお聞きしたいのですが、 >2)は寄与率や残差の値を確認してください。 に関してです。 自分は統計は完全独学で実践がありません。 なので、単純に教えて頂きたいのですが、 寄与率がどうなれば、また、残査がどうなれば 回帰は成功した、と言えるのでしょうか??? お時間のある時にでも、ご教示頂ければ幸いです。 お礼が遅くなり、大変申し訳ありませんでした。
お礼
お礼が遅くなりました。 あぁ、なるほど! よく分かりました。 丁寧な解説をありがとうございます!!!