R でのステップバイステップ回帰の完全ガイド
段階的回帰は、統計的に有効な入力または入力の理由がなくなるまでモデルに段階的に予測子を入力および削除することにより、一連の予測子変数から回帰モデルを構築するために使用できる手順です。さらに削除します。
段階的回帰の目的は、 応答変数と統計的に有意に関連するすべての予測変数を含む回帰モデルを作成することです。
このチュートリアルでは、R で次の段階的な回帰手順を実行する方法を説明します。
- 段階的に進む選択
- 段階的に後方選択
- 両方向での段階的な選択
各例では、組み込みのmtcarsデータセットを使用します。
#view first six rows of mtcars
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
応答変数としてmpg (ガロンあたりのマイル数) を使用し、データセット内の他の 10 個の変数を潜在的な予測変数として使用して、重線形回帰モデルを近似します。
各例では、stats パッケージの組み込みstep()関数を使用して、次の構文を使用する段階的な選択を実行します。
ステージ(迎撃モデルのみ、方向、範囲)
金:
- オリジナルモデルのみ: オリジナルモデルのみの計算式
- 方向:ステップ検索モードは「両方」、「後方」または「前方」のいずれかです。
- スコープ:モデルに入力しようとする予測子を指定する式
例 1: 段階的な前方選択
次のコードは、選択を段階的に実行する方法を示しています。
#define intercept-only model intercept_only <- lm(mpg ~ 1, data=mtcars) #define model with all predictors all <- lm(mpg ~ ., data=mtcars) #perform forward stepwise regression forward <- step(intercept_only, direction=' forward ', scope= formula (all), trace=0) #view results of forward stepwise regression forward$anova Step Df Deviance Resid. Df Resid. Dev AIC 1 NA NA 31 1126.0472 115.94345 2 + wt -1 847.72525 30 278.3219 73.21736 3 + cyl -1 87.14997 29 191.1720 63.19800 4 + hp -1 14.55145 28 176.6205 62.66456 #view final model forward$coefficients (Intercept) wt cyl hp 38.7517874 -3.1669731 -0.9416168 -0.0180381
注: trace=0 引数は、段階的な選択の完全な結果を表示しないように R に指示します。予測変数が多数ある場合、これは多くのスペースを占有する可能性があります。
結果を解釈する方法は次のとおりです。
- まず、切片のみのモデルを当てはめます。このモデルの AIC は115.94345でした。
- 次に、考えられるすべてのモデルを予測子に適合させます。最低の AIC を生成し、ベースラインのみのモデルと比較して AIC が統計的に有意に減少したモデルは、 wt予測子を使用しました。このモデルの AIC は73.21736でした。
- 次に、考えられるすべてのモデルを 2 つの予測子で近似します。最も低い AIC を生成し、単一予測子モデルと比較して AIC が統計的に有意に減少したモデルには、 cyl予測子が追加されました。このモデルの AIC は63.19800でした。
- 次に、考えられるすべてのモデルを 3 つの予測子に当てはめます。最低の AIC を生成し、2 予測子モデルと比較して AIC が統計的に有意に減少したモデルには、 hp予測子が追加されました。このモデルの AIC は62.66456でした。
- 次に、考えられるすべてのモデルを 4 つの予測子に当てはめます。これらのモデルのいずれも AIC の大幅な減少をもたらさないことが判明したため、手順を中止しました。
最終的なモデルは次のようになります。
mpg ~ 38.75 – 3.17*重量 – 0.94*気筒 – 0.02*hyp
例 2: 段階的な後方選択
次のコードは、後退する方法を示しています。
#define intercept-only model intercept_only <- lm(mpg ~ 1, data=mtcars) #define model with all predictors all <- lm(mpg ~ ., data=mtcars) #perform backward stepwise regression backward <- step(all, direction=' backward ', scope= formula (all), trace=0) #view results of backward stepwise regression backward$anova Step Df Deviance Resid. Df Resid. Dev AIC 1 NA NA 21 147.4944 70.89774 2 - cyl 1 0.07987121 22 147.5743 68.91507 3 - vs 1 0.26852280 23 147.8428 66.97324 4 - carb 1 0.68546077 24 148.5283 65.12126 5 - gear 1 1.56497053 25 150.0933 63.45667 6 - drat 1 3.34455117 26 153.4378 62.16190 7 - available 1 6.62865369 27 160.0665 61.51530 8 - hp 1 9.21946935 28 169.2859 61.30730 #view final model backward$coefficients (Intercept) wt qsec am 9.617781 -3.916504 1.225886 2.935837
結果を解釈する方法は次のとおりです。
- まず、すべてのp予測子を使用してモデルを近似します。これを M pとして定義します。
- 次に、 k = p、p-1、…1 の場合、M kに 1 つを除くすべての予測子を含むすべての k モデルを当てはめ、合計 k-1 個の予測子変数を求めます。次に、これらの k 個のモデルの中から最適なものを選択し、それを M k-1と呼びます。
- 最後に、AIC を使用して M 0 … M pから最適なモデルを選択します。
最終的なモデルは次のようになります。
mpg ~ 9.62 – 3.92*重量 + 1.23*qsec + 2.94*午前
例 3: 両方向での段階的な選択
次のコードは、両方向で段階的な選択を実行する方法を示しています。
#define intercept-only model intercept_only <- lm(mpg ~ 1, data=mtcars) #define model with all predictors all <- lm(mpg ~ ., data=mtcars) #perform backward stepwise regression both <- step(intercept_only, direction=' both ', scope= formula (all), trace=0) #view results of backward stepwise regression both$anova Step Df Deviance Resid. Df Resid. Dev AIC 1 NA NA 31 1126.0472 115.94345 2 + wt -1 847.72525 30 278.3219 73.21736 3 + cyl -1 87.14997 29 191.1720 63.19800 4 + hp -1 14.55145 28 176.6205 62.66456 #view final model both$coefficients (Intercept) wt cyl hp 38.7517874 -3.1669731 -0.9416168 -0.0180381
結果を解釈する方法は次のとおりです。
- まず、切片のみのモデルを当てはめます。
- 次に、段階的な選択の場合と同様に、モデルに予測子を順番に追加しました。ただし、各予測子を追加した後、モデルの適合性が向上しなくなった予測子も削除しました。
- 最終モデルが完成するまで、このプロセスを繰り返しました。
最終的なモデルは次のようになります。
mpg ~ 9.62 – 3.92*重量 + 1.23*qsec + 2.94*午前
順方向ステップ選択と両方向のステップ選択では同じ最終パターンが生成されますが、逆方向ステップ選択では異なるパターンが生成されることに注意してください。