⚠️ STEP 15: 多重共線性の対処
説明変数間の相関問題を解決しよう
📋 このステップで学ぶこと
- 多重共線性(Multicollinearity)とは何か
- 多重共線性がもたらす問題
- VIF(分散拡大要因)による検出方法
- 多重共線性の対処法(変数選択、次元削減)
- 実務での変数選択のベストプラクティス
学習時間の目安:3時間
🔍 1. 多重共線性とは
基本概念
説明変数同士が強く相関している状態
例:
・広告費と広告回数(ほぼ同じ情報)
・身長と体重(強く相関)
・売上と利益(ほぼ比例)
問題:
どちらの変数が本当に重要なのか判断できなくなる
わかりやすい例
状況:学生の成績を予測したい
- 変数1:「勉強時間(時間/日)」
- 変数2:「勉強時間(分/日)」
→ 2つの変数は完全に相関(片方がわかれば、もう片方もわかる)
→ どちらが重要かを判断できない
→ 係数が不安定になる
これが多重共線性の問題!
多重共線性の種類
1. 完全多重共線性
説明変数の1つが、他の変数の完璧な線形結合
例:X2 = 2 × X1
→ 回帰分析ができない(計算エラー)
2. 高い多重共線性
説明変数同士が強く相関している(完璧ではない)
例:相関係数 r = 0.9
→ 回帰分析はできるが、問題が起きる
⚠️ 2. 多重共線性の問題
どんな問題が起きるか
1. 回帰係数が不安定
データが少し変わるだけで、係数が大きく変わる
→ 解釈が困難
2. 標準誤差が大きくなる
係数の信頼区間が広くなる
→ 統計的に有意にならない(p値が大きい)
3. 係数の符号が逆転
本来プラスのはずの変数が、マイナスになる
→ 理論と矛盾
4. R²は高いのに、個別の変数が有意でない
モデル全体は良いが、各変数の重要性が判断できない
具体例
状況:売上を予測
説明変数:広告費(万円)、広告費(千円)
| ケース | 広告費(万円)の係数 | 広告費(千円)の係数 |
|---|---|---|
| データA | +100 | -9 |
| データB | -50 | +6 |
→ データが少し変わるだけで、係数が大きく変化
→ 符号まで逆転!
→ これでは解釈できない
原因:広告費(万円)と広告費(千円)が完全に相関
対処:どちらか1つだけを使う
R²への影響
多重共線性があっても、R²や予測精度には大きな影響はありません。
問題は:
・各変数の重要性を判断できない
・係数の解釈ができない
・モデルが不安定
予測だけが目的なら、多重共線性は許容できることもあります。
でも、要因分析が目的なら、必ず対処が必要です!
🔍 3. 多重共線性の検出方法
方法1:相関行列
基準:
- |相関係数| > 0.8 → 多重共線性の疑い
- |相関係数| > 0.9 → 多重共線性あり
対処:
相関が高い変数のペアを見つけたら、どちらか1つを削除
方法2:VIF(分散拡大要因)
各説明変数の多重共線性の度合いを数値化
計算方法:
1つの説明変数を目的変数として、他の説明変数で回帰
VIF = 1 / (1 – R²)
判定基準:
・VIF < 5:問題なし ✓
・5 ≤ VIF < 10:注意が必要
・VIF ≥ 10:多重共線性あり → 対処が必要
意味:
VIF = 10 → 多重共線性がない場合に比べて、標準誤差が√10 = 3.16倍に拡大
VIF計算の関数化
🔧 4. 多重共線性の対処法
対処法1:相関の高い変数を削除
手順:
- VIFが10以上の変数を特定
- 相関が高いペアを見つける
- どちらか1つを削除(重要度が低い方)
- 再度VIFを計算
- すべてのVIF < 10 になるまで繰り返す
どちらを残すか:
・ビジネス的に重要な方
・理論的に意味がある方
・p値が小さい方
対処法2:変数を結合
方法:
- 平均:新変数 = (X1 + X2) / 2
- 合計:新変数 = X1 + X2
- 主成分分析:複数の変数を1つの主成分に
例:
「TV広告費」と「Web広告費」→「総広告費」にまとめる
対処法3:次元削減(PCA)
複数の相関変数を、少数の独立した成分に変換
利点:
・すべての情報を保ちながら、変数を減らせる
・多重共線性を完全に排除
欠点:
・解釈が難しくなる
・「主成分1」は何を意味するのかわかりにくい
対処法4:正則化(Ridge、Lasso回帰)
多重共線性に強い回帰手法
Ridge回帰:
係数を小さくすることで、多重共線性の影響を緩和
→ 変数は残るが、係数が安定する
Lasso回帰:
重要でない変数の係数を0にする
→ 自動的に変数選択
✅ 5. 変数選択のベストプラクティス
変数選択の手順
ステップ1:ビジネス的な重要性で絞る
まず、理論的に意味がある変数だけを選ぶ
・売上に影響するはずの変数
・過去の研究や経験で重要とされる変数
ステップ2:相関行列をチェック
説明変数同士の相関係数を確認
・|r| > 0.8 のペアを見つける
・どちらか1つを削除
ステップ3:VIFをチェック
すべてのVIF < 10 を確認
・VIF ≥ 10 の変数があれば削除
・削除後、再度VIFを計算
ステップ4:回帰分析を実行
残った変数で回帰分析
・p値をチェック(p < 0.05)
・有意でない変数は削除を検討
ステップ5:テストデータで評価
予測精度を確認
・MAE、RMSE、MAPEを計算
・過学習していないか確認
ステップ6:最終モデルの決定
・調整済みR²が最も高いモデルを選ぶ
・ビジネス的な解釈可能性も考慮
実践例
📝 STEP 15 のまとめ
1. 多重共線性とは
- 説明変数同士が強く相関している状態
- 係数が不安定、標準誤差が大きい、解釈が困難になる
2. 検出方法
- 相関行列:|r| > 0.8 で疑い
- VIF:≥ 10 で多重共線性あり
3. 対処法
- 変数削除:重要度が低い方を削除
- 変数結合:相関の高い変数を1つにまとめる
- PCA:次元削減
- 正則化:Ridge、Lasso回帰
4. 変数選択フロー
- ビジネス的重要性 → 相関 → VIF → p値 → テストデータ評価
多重共線性は、予測精度には大きな影響はないですが、各変数の重要性を判断するのが困難になります。
対処の基本:
- VIFで多重共線性を検出
- VIF ≥ 10 の変数を見つける
- 相関が高いペアのうち、重要度が低い方を削除
- 再度VIFを計算
- すべてのVIF < 10 になるまで繰り返す
重要:
・予測だけが目的なら、多重共線性は許容できることもある
・要因分析が目的なら、必ず対処する
・ビジネス的な解釈可能性を最優先
次のSTEP 16では、ロジスティック回帰入門を学びます!
STEP 16では、「ロジスティック回帰入門」を学びます。成約する/しない、離脱する/しないなど、2値分類問題の分析方法を習得します!
📝 練習問題
多重共線性とは何ですか?また、どんな問題が起きますか?
多重共線性とは:
重回帰分析で、説明変数同士が強く相関している状態
例:広告費と広告回数、身長と体重など
起きる問題:
- 係数が不安定:データが少し変わるだけで、係数が大きく変わる
- 標準誤差が大きい:信頼区間が広くなる
- p値が大きい:統計的に有意にならない
- 係数の符号が逆転:理論と矛盾する結果が出る
- 解釈が困難:どの変数が本当に重要かわからない
VIF(分散拡大要因)とは何ですか?判定基準を説明してください。
VIFとは:
VIF(Variance Inflation Factor、分散拡大要因)
各説明変数の多重共線性の度合いを数値化した指標
計算方法:
・1つの説明変数を目的変数として、他の説明変数で回帰
・VIF = 1 / (1 – R²)
判定基準:
- VIF < 5:問題なし ✓
- 5 ≤ VIF < 10:注意が必要
- VIF ≥ 10:多重共線性あり → 対処が必要
VIF = 25 の変数があります。この変数にどのような問題がありますか?どう対処すべきですか?
問題:
VIF = 25 は判定基準の10を大きく超えており、強い多重共線性があります。
影響:
・標準誤差が √25 = 5倍に拡大
・係数が不安定
・p値が大きくなり、統計的有意性が得られにくい
対処法:
- 相関の高いペアを特定:相関行列で、この変数と強く相関している他の変数を見つける
- どちらか1つを削除:ビジネス的に重要度が低い方、理論的に意味が薄い方を削除
- 再度VIFを計算:削除後、すべてのVIF < 10 になるまで繰り返す
- 代替案:変数を結合、PCA、Ridge/Lasso回帰を検討
以下の相関行列があります。多重共線性の問題がありますか?ある場合、どの変数を削除すべきですか?
広告費
価格
気温
従業員数
広告費 1.00 -0.85 0.15 0.92
価格 -0.85 1.00 -0.12 -0.78
気温 0.15 -0.12 1.00 0.18
従業員数 0.92 -0.78 0.18 1.00
| 広告費 | 価格 | 気温 | 従業員数 | |
|---|---|---|---|---|
| 広告費 | 1.00 | -0.85 | 0.15 | 0.92 |
| 価格 | -0.85 | 1.00 | -0.12 | -0.78 |
| 気温 | 0.15 | -0.12 | 1.00 | 0.18 |
| 従業員数 | 0.92 | -0.78 | 0.18 | 1.00 |
問題のあるペア:
- 広告費と従業員数:r = 0.92(非常に高い)
- 広告費と価格:r = -0.85(高い)
- 価格と従業員数:r = -0.78(やや高い)
削除すべき変数:
従業員数を削除することを推奨
理由:
・広告費と r = 0.92 で最も高い相関
・価格とも r = -0.78 と高い相関
・従業員数は売上への直接的な影響が不明確
・広告費や価格の方が、売上への影響が理論的に明確
削除後、VIFを計算してすべて < 10 であることを確認
あなたはマーケティング効果を分析しています。説明変数として「TV広告費」「Web広告費」「総広告回数」「認知度」を検討していますが、これらの変数間に多重共線性があることがわかりました。予測モデルと要因分析モデル、それぞれの場合でどう対処すべきか説明してください。
予測モデルの場合:
目的が「将来の売上を予測する」なら、多重共線性は許容できることがあります。
対処法:
・Ridge回帰やLasso回帰を使用(係数が安定)
・すべての変数を残してもOK
・テストデータでの予測精度を重視
・VIFが高くても、予測精度が良ければ問題なし
要因分析モデルの場合:
目的が「どの施策が効果的か分析する」なら、多重共線性を必ず対処する必要があります。
対処法:
1. 変数削除:VIF ≥ 10 の変数を削除
・「総広告回数」は「TV広告費+Web広告費」と相関が高いため削除
・「認知度」は広告費の結果であり、共線性の原因になるため削除検討
2. 変数結合:「TV広告費」と「Web広告費」を「総広告費」に統合
3. 段階的分析:
・まず広告費→認知度の関係を分析
・次に認知度→売上の関係を分析
・因果関係を段階的に検証
まとめ:
・予測目的:多重共線性は許容可能、Ridge/Lasso推奨
・分析目的:多重共線性は必ず対処、変数削除or結合
❓ よくある質問
例:
X1とX2の相関は高い(r = 0.8)が、X3、X4との相関は低い
→ X1のVIFは、X2との相関だけでなく、X3、X4との関係も考慮されるため、思ったほど高くならないことがある
重要:
VIFはすべての説明変数との関係を総合的に評価します。相関行列とVIFの両方をチェックするのがベストプラクティスです。
残す理由:
・ビジネス的に非常に重要な変数
・理論的に必須の変数
・p値が小さい(統計的に有意)
削除する理由:
・他に似た情報を持つ変数がある
・ビジネス的な重要度が低い
・モデルをシンプルにしたい
推奨:
両方のモデル(残す/削除)を作って、調整済みR²、テストデータでの精度を比較して判断
多重共線性の影響:
・予測精度(R²、MAE、RMSE)にはほぼ影響なし
・各変数の重要性の判断が困難
・係数の解釈が不安定
使える場合:
・予測だけが目的なら、多重共線性は許容できる
・例:売上予測、需要予測など
使えない場合:
・要因分析が目的なら、必ず対処が必要
・例:「どの要因が最も重要か」を知りたい
結論:
目的が予測なら問題ない、解釈なら対処必須
1. 変数を結合
相関の高い変数を1つにまとめる
例:TV広告費 + Web広告費 → 総広告費
2. 主成分分析(PCA)
複数の変数を少数の主成分に変換
・すべての情報を保ちながら、変数を減らせる
・ただし、解釈が難しくなる
3. Ridge回帰(正則化)
係数を小さくすることで、多重共線性の影響を緩和
・変数は残るが、係数が安定する
4. Lasso回帰(正則化+変数選択)
重要でない変数の係数を自動的に0にする
・自動的に変数選択してくれる
推奨:
まずはシンプルに変数削除を試してみましょう。それでも解決しない場合に、上記の手法を検討します。
手動計算の手順:
例:広告費のVIFを計算
1. 広告費を目的変数、他の変数(気温、価格)を説明変数として回帰分析
2. R²を確認(例:R² = 0.85)
3. VIF = 1 / (1 – R²) = 1 / (1 – 0.85) = 1 / 0.15 = 6.67
これを各変数について繰り返す。
欠点:
・変数が多いと面倒
・計算ミスのリスク
推奨:
・Pythonを使うのが簡単
・Google Colab(無料)で簡単にVIFを計算できる
予測が目的の場合:
・予測精度にはほとんど影響なし
・モデルは使える
・ただし、係数の解釈は信頼できない
要因分析が目的の場合:
・各変数の重要性が判断できない
・係数の符号が逆転する可能性
・「広告費が売上に与える影響」などの解釈が不正確
・ビジネス上の意思決定を誤る可能性
具体例:
「広告費を増やすと売上が上がる」はずなのに、
多重共線性のせいで係数がマイナスになり、
「広告費を減らすべき」という誤った結論を出してしまう
結論:
要因分析や係数の解釈が必要な場合は、必ず多重共線性に対処しましょう!
学習メモ
ビジネスデータ分析・意思決定 - Step 15