[(株)数理システム]

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


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

今年も、データ・ウェアハウス・Expo が開催されます。http://www.dwh-crm.jp/

株式会社数理システムは、S-PLUS、データマイニングソフトウエア Visual Mining Studio などの製品を出展しておりますので、ぜひお越しください。招待券をお持ちでない方は splus-info@ml.msi.co.jpにご請求ください。
7/8(木) 13:30 ~ 14:30
7/9(金) 13:30 ~ 14:30
には、S-PLUS と Visual Mining Studio の PRセミナーも行いますので、こちらも併せてお越しいただけますと幸いに存じます。

前回は関数 stepwise を利用して、RSS(residuals sum of square,残差平方和)が小さい変数の組み合わせを選ぶ方法をご紹介しました。

手軽で便利な方法ですが

  1. RSS ではモデルの自由度(データ個数と変数の数から計算されます)は考慮されないので、説明変数の個数が同じ場合では、最適な組み合わせを選ぶことができますが、個数が異なるとどちらがよりよい組み合わせか、判別できません。一般に、説明変数の数が増えれば、RSS が小さくなるためです。
  2. 関数 lm などでデフォルトで利用可能な、因子を含む説明変数をモデルに加えられない(他の関数を併せて利用すると、対応可能です)

という弱点があります。

では、もう一方の関数 step ではどうでしょうか?

1. はモデルの自由度を考慮した統計量 AIC 基準を用いてモデル同士を比較しますから、説明変数の数が違うものも比較可能です。

2. は与えられる変数としては、まったく lm と同じです。

では、早速、fuel.frame を使って、2次の項まで含む線形回帰を行い、step で最適な変数を調べてみましょう。

options(contrasts=c("contr.treatment", "contr.poly"))
# ダミー行列を分かりやすいように、通常の1,0 にかえる

fitall <- lm(Fuel ~(Weight + Disp. + Type)^2, data=fuel.frame)
# Weight, Disp. Type(因子)とその2次の交互作用項までを含む回帰を行う

fits <- step(fitall)
# 変数選択

と、手順はいたって簡単です。すると、step は3つの変数の2次モデルから、モデルの増減を繰り返しながら、最適のモデルを探します。そのときに、変数の増減候補に統計量 Cp を用い、モデルが改善されるかどうかの判定には AIC を用います。結果、総当りの計算をするわけではありませんが、効率よく必要な変数の選択を行うことができるわけです。

次回は step のこまごました設定についてご説明したいと思います。お楽しみに!

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

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