実験で測定できる因子は多い。温度・時間・添加剤・湿度・圧力……でも、全部を重回帰モデルに突っ込んでも、余計な変数がノイズになって精度が下がる。「必要な変数だけ残す」——そのための手続きが変数選択法です。
この記事では、最もよく使われる3つの方法を、15サンプルの金属部品データを例に解説します。
- 前進選択法(Forward Selection):変数を一つずつ追加する
- 後退除去法(Backward Elimination):全変数から一つずつ除く
- ステップワイズ法:追加と除去を交互に繰り返す
選択基準はAIC(赤池情報量規準)を使います。p値との違いも最後に整理します。
なぜ変数を選ぶのか
変数が多いほど訓練データへの当てはまりは良くなります。でも、実際に使うときの予測精度は落ちる——これが過学習(overfitting)の問題です。
10サンプルのデータに10変数を入れれば、R²は1.0になります。ただしその回帰式は「そのデータを暗記した」だけで、新しいサンプルには使えません。変数選択は、モデルの「説明力」と「無駄な複雑さへのペナルティ」のバランスを取る作業です。
また変数が多いと多重共線性のリスクも高まります。相関の高い変数が複数入ると、個々の係数が不安定になり、解釈できなくなります。
AIC(赤池情報量規準)とは
AICは、モデルの「当てはまりの良さ」と「パラメータ数のコスト」を一つの数値にまとめた指標です。\[ \text{AIC} = n \ln\!\left(\frac{\text{RSS}}{n}\right) + 2k \]
ここで \( n \) はサンプルサイズ、RSSは残差平方和(モデルの当てはまり誤差)、\( k \) は推定するパラメータ数(切片+説明変数の係数)です。
- RSSが小さい(当てはまりが良い)ほどAICは小さくなる
- 変数を増やすと \( k \) が増えてAICが大きくなる(ペナルティ)
- AICが小さいモデルが良いモデル
AIC差が2未満の場合は「ほぼ同等」と判断します。10以上の差があれば、小さい方のモデルが明らかに優れています。
例題:金属部品の引張強度を予測する
焼成工程の条件4つから、金属部品の引張強度(MPa)を予測するモデルを作ります。
| 変数 | 内容 | 単位 |
|---|---|---|
| y | 引張強度(目的変数) | MPa |
| x1 | 焼成温度 | °C |
| x2 | 焼成時間 | min |
| x3 | 添加剤量 | % |
| x4 | 湿度(ノイズ変数として混入) | % |
| No. | x1(温度) | x2(時間) | x3(添加剤) | x4(湿度) | y(引張強度) |
|---|---|---|---|---|---|
| 1 | 850 | 30 | 1.0 | 56 | 410 |
| 2 | 900 | 35 | 2.0 | 43 | 444 |
| 3 | 850 | 40 | 1.5 | 67 | 436 |
| 4 | 950 | 30 | 3.0 | 51 | 466 |
| 5 | 900 | 50 | 1.0 | 71 | 461 |
| 6 | 1000 | 30 | 2.5 | 48 | 480 |
| 7 | 850 | 60 | 2.0 | 63 | 474 |
| 8 | 950 | 45 | 1.5 | 45 | 472 |
| 9 | 1000 | 55 | 3.0 | 59 | 528 |
| 10 | 900 | 40 | 2.0 | 54 | 458 |
| 11 | 850 | 50 | 3.0 | 66 | 462 |
| 12 | 1000 | 40 | 1.0 | 47 | 479 |
| 13 | 950 | 60 | 2.5 | 61 | 510 |
| 14 | 900 | 30 | 3.0 | 50 | 456 |
| 15 | 850 | 35 | 2.5 | 72 | 433 |
x4(湿度)は引張強度と無関係な変数として混入させてあります。変数選択法でこれを除けるか確認します。
前進選択法(Forward Selection)
変数ゼロから始めて、AICを最も改善する変数を一つずつ追加する方法です。
Step 1:各変数の単回帰モデルを比較する
変数を1つずつ入れた単回帰モデルのAICを比較します。
| モデル | RSS | R² | AIC |
|---|---|---|---|
| 切片のみ(変数なし) | 12,029.6 | — | 102.306 |
| x1(焼成温度) | 5,617.8 | 0.5336 | 92.867 |
| x2(焼成時間) | 7,425.0 | 0.3825 | 97.075 |
| x3(添加剤量) | 10,183.7 | 0.1543 | 101.793 |
| x4(湿度) | 11,887.3 | 0.0118 | 104.128 |
x1のAICが92.867で最小 → x1を選択
Step 2:x1に1変数を追加する
残り3変数(x2・x3・x4)を1つずつ加えた2変量モデルを比較します。
| モデル | R² | AIC | ΔAIC |
|---|---|---|---|
| x1 + x2 | 0.9059 | 70.854 | −22.013 |
| x1 + x4 | 0.6622 | 90.027 | −2.840 |
| x1 + x3 | 0.6241 | 91.630 | −1.237 |
x2を加えると AIC が70.854に下がり改善幅が最大 → x2を選択
Step 3:x1+x2に1変数を追加する
残り2変数(x3・x4)を加えたモデルを比較します。
| モデル | R² | AIC | ΔAIC |
|---|---|---|---|
| x1 + x2 + x3 | 0.9907 | 38.168 | −32.686 |
| x1 + x2 + x4 | 0.9075 | 72.590 | +1.736 |
x3を加えると AIC が38.168に大幅に改善 → x3を選択
Step 4:x1+x2+x3にx4を追加する
残り1変数(x4)を加えた4変量モデルを確認します。
| モデル | AIC | ΔAIC(vs x1+x2+x3) |
|---|---|---|
| x1 + x2 + x3 + x4 | 40.051 | +1.883(悪化) |
x4を加えてもAICが改善しない(むしろ悪化) → x4は採用せず、終了
前進選択法の結果:x1・x2・x3の3変数モデルを採用
後退除去法(Backward Elimination)
全変数を入れたモデルから始めて、AICを最も改善できる変数を一つずつ除く方法です。
Step 1:全変数モデルから各変数を除く
まず4変数の全モデルを確認します。AIC = 40.051。
| 全変数モデル (x1+x2+x3+x4) | 係数 | t値 |
|---|---|---|
| 切片 | 51.607 | 2.35 |
| x1(焼成温度) | 0.349 | 17.54 |
| x2(焼成時間) | 1.626 | 16.70 |
| x3(添加剤量) | 11.280 | 9.49 |
| x4(湿度) | 0.038 | 0.28 |
x4のt値が0.28と極端に小さく、ほとんど説明力がないことがわかります。次に各変数を除いたときのAICを確認します。
| 除去した変数 | 残りのモデル | AIC | ΔAIC |
|---|---|---|---|
| x4(湿度) | x1+x2+x3 | 38.168 | −1.883(改善) |
| x3(添加剤量) | x1+x2+x4 | 72.590 | +32.540 |
| x2(焼成時間) | x1+x3+x4 | 88.507 | +48.456 |
| x1(焼成温度) | x2+x3+x4 | 89.933 | +49.882 |
x4を除くとAICが40.051→38.168に改善 → x4を除去
Step 2:x1+x2+x3モデルで継続確認
残り3変数の中からさらに除去できる変数があるか確認します。x1・x2・x3を1つずつ除いたモデルは、いずれもAICが大幅に増加(悪化)するため、これ以上の除去は行いません。
後退除去法の結果も:x1・x2・x3の3変数モデルを採用
ステップワイズ法(両方向選択)
前進選択と後退除去を組み合わせた方法です。変数を追加したあとに「既存の変数で不要になったものがないか」も確認します。
変数を追加すると既存変数との相関関係が変化し、前のステップでは有効だった変数が不要になることがあります。この問題を防ぐのがステップワイズ法の役割です。ただし、今回の例題では前進選択の各ステップで不要な変数が生じなかったため、前進選択と同じ結果になります。
最終モデルの解釈
3変数モデルの回帰結果です。
| 変数 | 回帰係数 | 標準誤差 | t値 |
|---|---|---|---|
| 切片 | 56.258 | 13.805 | 4.07 |
| x1(焼成温度) | 0.3456 | 0.0148 | 23.36 |
| x2(焼成時間) | 1.6401 | 0.0788 | 20.80 |
| x3(添加剤量) | 11.317 | 1.131 | 10.00 |
\[ \hat{y} = 56.26 + 0.3456 \cdot x_1 + 1.6401 \cdot x_2 + 11.317 \cdot x_3 \]
R² = 0.9907、自由度調整済み R² = 0.9870。3変数で引張強度の変動の99%を説明できています。t値はすべて10以上で、各変数の寄与は統計的に明確です。
係数の読み方:温度1°C上昇で引張強度が0.35 MPa増加。焼成時間1分延長で1.64 MPa増加。添加剤1%増加で11.3 MPa増加——添加剤量の影響が最も大きいことがわかります。
ExcelでAICを使った変数選択をする手順
Excelの分析ツールには自動ステップワイズ機能はありません。でも、手動でAICを計算しながら選択する手順は以下の通りです。
- 単回帰から始める:データ → 分析 → 回帰分析で各変数を1つずつ試す。出力の「残差平方和」をメモする
- AICを計算するセルを用意する:
=n*LN(RSS/n)+2*k(n=サンプル数、k=パラメータ数) - AICが最小の変数を選ぶ:Step 1の表を作り、最小AICの変数を確定する
- 選んだ変数に次の変数を追加する:「選んだ変数 + 候補変数」の2変量回帰を試す
- AICが改善しなくなるまで繰り返す:前のモデルよりAICが大きくなったら終了
RSSはExcelの回帰出力の「残差平方和」で確認できます。
AIC基準とp値基準の違い
変数選択の基準としてp値(有意水準α=0.05や0.10)を使う方法もあります。現場でよく使われるのはp値ベースですが、AICにはいくつかの利点があります。
| 比較項目 | AIC基準 | p値基準 |
|---|---|---|
| 意味 | 予測精度のバランスを最適化 | 帰無仮説の棄却 |
| カットオフ | ΔAIC < 0(改善) | p < 0.05(または0.10) |
| 多重検定の問題 | なし | あり(変数が多いと偽陽性増加) |
| サンプルサイズ依存性 | あり(小標本では慎重に) | 強い(n大で何でも有意になる) |
| Excelで計算できるか | 手動で可(上記の式) | 回帰出力に直接表示される |
p値基準の場合、追加時は p < 0.05(または0.10)で採用、除去時は p > 0.10(または0.15)で除去、という二段階の閾値を使うのが一般的です。ただし複数の変数を同時に検定することで偽陽性が増えるため、AIC基準の方が理論的な根拠が明確です。
変数選択で注意すること
変数選択は便利ですが、使い方を間違えると誤った結論につながります。実務で気をつけるべき点を3つ挙げます。
過学習への注意:候補変数が多いと、たまたまデータに当てはまる変数が選ばれることがあります。サンプルサイズは「変数1つにつき10〜20以上」が目安です。15サンプルなら変数は2〜3個が限界と考えてください。サンプルサイズの決め方も参考にしてください。
多重共線性の確認:変数選択の前にVIF(分散膨張因子)で多重共線性をチェックしてください。相関の高い変数が複数入ると、選択結果が不安定になります。
結果の解釈には慎重に:選択されなかった変数は「効果がない」ではなく、「このデータではモデルに必要ない」という意味です。サンプルが変われば結果も変わりえます。
まとめ
変数選択法の3つの方法を整理します。
- 前進選択法:変数ゼロから始め、AICを最も下げる変数を一つずつ追加する。追加してもAICが改善しなくなったら終了
- 後退除去法:全変数から始め、AICを最も改善できる変数を一つずつ除く。除いてもAICが改善しなくなったら終了
- ステップワイズ法:前進選択に「追加後の再確認除去」を加えた方法。前進・後退の両方が一致することを確認できる
今回の例題では、x4(湿度)がノイズ変数として混入していましたが、AIC基準の変数選択で正しく除外できました。最終モデルは3変数(焼成温度・時間・添加剤量)で R² = 0.9907 を達成しました。
Excelでは手動でAICを計算しながら変数を絞り込む手順になります。候補変数が多い場合や自動化が必要な場合は、PythonのstepwiseなどRやPythonの統計ライブラリを活用してください。
重回帰分析の基礎は重回帰分析の結果の読み方と変数選択、多重共線性の診断は多重共線性(VIF)とは|重回帰分析の問題を診断・解消する手順も合わせてご覧ください。回帰モデルの前提確認には回帰分析の前提条件と残差分析が役立ちます。

