ステップワイズ法の重回帰分析をRでやる方法

R/Rstudio

重回帰分析を行う際、一般的にはより少ない変数で(不要な変数を除いて)、回帰式を作れるようにします。

変数を選択する方法として、ステップワイズ法をRでやる方法について、メモとして記載します。

やり方は非常に簡単でした。

順番としては、

  1. 候補となる変数を全部組み込んだlm関数の式を作る
  2. その式をstep関数の引数として入れ、summary()で出力する。

なぜステップワイズ法を選択するのか

重回帰分析では、投入した全ての独立変数(説明変数)について、係数が有意か否かに関わらず対等に扱います。

各変数の係数は投入された他の独立変数の影響を統制したうえでの係数になります。

そのため、無関係な独立変数があった場合も、その無関係な独立変数の影響を考慮したモデルとなってしまいます。

強制投入法と呼ばれる通常の方法では、投入した変数を全て組み込むため、上記のような影響が生じます。

一方で、ステップワイズ法であれば、一定のルールにしたがって、独立変数を選別します。

ステップワイズ法を用いると、無関係な変数を除いた回帰式を作ることができます。

(なお、正確には、ステップワイズの1種類として、強制投入法があるっぽいです)

参考:IBMサポート「ステップワイズ

ステップワイズ法をやってみる。

ダミーデータをもとにやりたいと思います。

前回の「RとSPSSで重回帰分析の結果を比較してみた

で使った某賃貸物件の掲載サイトで出ていた物件の情報をもとに、ステップワイズ法で重回帰分析したいと思います。

物件駅からの時間部屋の広さ築年数家賃
A840.291410.2
B720.0327.4
C1029.74138.1
D1019.87146.3
E922.48156.4
F530.73197
G854.473810.79
H1043.94910.9
I1038.031410.3
J1065.392612.8
某賃貸物件の掲載サイトで出ていた物件の情報をもとに作成

候補となる変数を全部組み込んだlm関数の式を作る

データをdatに入れたあと、以下の式で作成します。

reg<-lm(家賃~駅からの時間+部屋の広さ+築年数, data=dat)
ちなみに、前回の記事と同じデータなので、結果としては、「駅からの時間」は非有意でそれ以外の係数は有意です。

regをstep関数の引数として入れ、summary()で出力する。

以下のように入力して出力するとステップワイズ法で変数の選定がされます。

step.reg<-step(reg)

ステップワイズ法の実施

はじめに、全ての変数を投入した状態でスタートしていますが、

次のStepのところで、「駅からの時間」が除かれているのがわかります。

最後に summary()で結果を出力すると、ステップワイズ法によって選択された変数のみが入った重回帰式の結果が出ます。

summary(step.reg)

超わずかですが、R-squaredの値がちょっと上がってます。

ステップワイズ実施後の重回帰分析の結果

まとめ

ステップワイズ法による重回帰分析をRで行う手順は以下の通りです。

  • 候補となる変数を全部組み込んだlm関数の式を作る
  • その式をstep関数の引数として入れ、summary()で出力する。

タイトルとURLをコピーしました