[(株)数理システム]

(S-PLUS) S-PLUS mini course 第28回


S-PLUS mini course の28回目をお届けします。

まず最初に、関西圏のユーザーの皆様にお知らせです。
7/1(木)、2(金)に S-PLUS の紹介セミナーと定例トレーニングを大阪で開催いたします。この機会にどうぞご参加のほどお願い申し上げます。

詳しくは S-PLUS のウェッブページトップをご覧ください。
http://www.msi.co.jp/splus/

さて、前回の課題になっていた、回帰同士の比較ですが、まず、R-Squared (決定係数などと呼ばれたりしますよね)の比較は関数 summary を使って計算すればよいですね。

それ以外では、関数 anova で、分散分析表を作成することができます。

fit21 <- lm(Fuel ~ Weight, data=fuel.frame)
fit22 <- lm(Fuel ~ Weight + Disp., data=fuel.frame)
fit23 <- lm(Fuel ~ Weight + Disp. + Type, data=fuel.frame)


といように、説明変数を1つ1つ加えた回帰分析があったとき、

> summary(fit21)$r.squared
[1] 0.7425006
> summary(fit22)$r.squared
[1] 0.7438243
> summary(fit23)$r.squared
[1] 0.8486413
# R-Squared の計算

> anova(fit21,fit22,fit23)
(実は、anova(fit23) とほぼ同等です)

は、説明変数を1個1個加えていったときの分散分析表を作成し、残差の Mean Sq と比較して、Mean Sq が等しいかをF検定しています。
結果、Pr(F) の値を見て、「Mean Sqが等しい」が棄却できれば、その変数は加えることによって、元のモデルと違うモデルを生成している(まあ、平たく言うと、改善されたということですよね、変数を増やしているので)ことが言えます。

この関数を使えば、SAS ユーザーの方がよく使われる、TypeIII の平方和なども計算できますから、お試しください。

このように、ある程度変数候補が数個に決まっていて、そのなかからどの変数をモデルに加えたらよいか選択するのであれば、それほど問題ないのですが、説明変数の候補がたくさんあって、どれを選んだらよいか分からない、主効果だけでなく、交互作用も取り入れたい、などというとき、不便です。それに、R-squared だけを調べるのなら、変数の数は単純に多ければ多いほど、R-squared の値がよくなり、局所的なモデルが選択されてしまいます。

じゃ、自動的に、最小限の説明変数で最大の効果をあげるようなモデル作成をするにはどうしたらよいでしょうか?
これを、次回の課題にしましょう。
お楽しみに。

----------------------------------------------------------------

? お問い合わせ/資料請求はお気軽に。
(株)数理システム《S-PLUS》グループ <splus-info@ml.msi.co.jp>