🎯 STEP 11: 重回帰分析の実践
複数の要因を考慮した正確な予測モデルを作ろう
📋 このステップで学ぶこと
- 重回帰分析の基本概念(複数の説明変数を扱う)
- Excelでの重回帰分析(分析ツールの活用)
- Pythonでの重回帰分析(scikit-learn、statsmodels)
- 偏回帰係数の解釈(各変数の影響度)
- 実務での活用例とモデルの評価
学習時間の目安:4時間
準備するもの:Excel、Google Colab(無料)
🔍 1. 重回帰分析とは
単回帰と重回帰の違い
単回帰分析(STEP 10)
Y = a + bX
1つの説明変数で予測
例:広告費(X) → 売上(Y)
重回帰分析(今回)
Y = a + b1×X1 + b2×X2 + b3×X3 + ...
複数の説明変数で予測
例:広告費(X1)、価格(X2)、季節(X3) → 売上(Y)
なぜ重回帰分析が必要か
例:アイスクリームの売上
- 気温:高いほど売れる
- 価格:安いほど売れる
- 広告費:多いほど売れる
- 曜日:週末の方が売れる
→ 単回帰(気温だけ)では不十分
→ 重回帰分析で、すべての要因を考慮した予測が必要!
重回帰分析でできること
1. より正確な予測
複数の要因を考慮するので、単回帰より精度が高い
例:気温30℃、価格300円、広告費50万円の時の売上は?
2. 要因の重要度の判断
どの要因が最も影響しているかがわかる
例:売上への影響は、価格 > 広告費 > 気温
3. 要因の独立した効果を測定
他の要因を一定にした時の、ある要因の影響を分析
例:価格と広告費を変えずに、気温だけ上げた時の効果
📊 2. サンプルデータの準備
今回使用するデータ
ある飲食店の売上に影響する要因を分析します。
目的変数(Y):売上
説明変数(X):広告費、気温、価格、週末ダミー
| No. | 広告費 (万円) |
気温 (℃) |
価格 (円) |
週末 (0/1) |
売上 (万円) |
|---|---|---|---|---|---|
| 1 | 50 | 25 | 800 | 0 | 310 |
| 2 | 60 | 28 | 800 | 1 | 420 |
| 3 | 70 | 30 | 750 | 0 | 480 |
| 4 | 55 | 26 | 850 | 0 | 300 |
| 5 | 80 | 32 | 700 | 1 | 600 |
| …(全24件) | |||||
※週末ダミー:週末=1、平日=0(ダミー変数については後述)
ダミー変数とは
カテゴリー(種類)を数値で表す変数
例:
- 週末ダミー:週末=1、平日=0
- 性別ダミー:男性=1、女性=0
- 12月ダミー:12月=1、それ以外=0
使い方:
週末の効果を分析したい時、「週末」という文字は計算できないので、数値(1 or 0)に変換して回帰分析に使う
💻 3. Excelでの重回帰分析
データの準備
Excelの分析ツールで重回帰分析
結果の読み方
1. 回帰統計
・重決定R²:0.9823
→ 売上の変動の98.2%が、4つの説明変数で説明できる!
→ 非常に高い精度
2. 係数(回帰式)
| 変数 | 係数 | 意味 |
|---|---|---|
| 切片 | -450.2 | すべての変数が0の時の売上 |
| 広告費 | 4.5 | 広告費が1万円増えると、売上が4.5万円増える |
| 気温 | 8.2 | 気温が1℃上がると、売上が8.2万円増える |
| 価格 | -0.6 | 価格が1円上がると、売上が0.6万円減る |
| 週末 | 85.3 | 週末だと、平日より売上が85.3万円多い |
3. P値(統計的有意性)
・広告費のP値:0.002 → 統計的に有意(p < 0.05)
・気温のP値:0.000 → 統計的に有意
・価格のP値:0.001 → 統計的に有意
・週末のP値:0.000 → 統計的に有意
→ すべての変数が売上に影響している!
回帰式の完成
切片が大きなマイナスになることがあります。これは、すべての説明変数が0の時の予測値ですが、現実にはありえない状況です。(広告費0、気温0℃、価格0円… → ありえない)
重要なのは、データの範囲内での予測です。各変数の係数(傾き)が、ビジネス的に意味があるかを確認しましょう。
🐍 4. Pythonでの重回帰分析
ライブラリのインポート
データの作成
相関行列の確認
方法1:scikit-learn(シンプル)
方法2:statsmodels(詳細)
予測の実践
可視化:実際の売上 vs 予測売上
- 点が赤い破線(y=x)に近いほど、予測精度が高い
- 点がバラバラだと、予測精度が低い
- R² = 0.98なので、ほとんどの点が直線近くにある → 良いモデル
- 特定の点だけ離れていたら、その原因を調査する価値がある
📊 5. 偏回帰係数の解釈
偏回帰係数とは
他の変数を一定に保った時の、ある変数の影響
例:広告費の偏回帰係数が4.5
→ 気温、価格、週末を変えずに、広告費だけを1万円増やすと、売上が4.5万円増える
各変数の解釈
1. 広告費の係数:+4.5
正の影響:広告費を増やすと売上が増える
広告費が1万円増える → 売上が4.5万円増える
→ ROI:4.5倍(利益率を考慮する必要あり)
2. 気温の係数:+8.2
正の影響:気温が高いほど売上が増える
気温が1℃上がる → 売上が8.2万円増える
→ 夏場の売上が大きい(アイスクリーム、飲料など)
3. 価格の係数:-0.6
負の影響:価格が高いほど売上が減る
価格が1円上がる → 売上が0.6万円減る
価格が100円上がる → 売上が60万円減る
→ 価格弾力性が高い(価格に敏感な顧客)
4. 週末の係数:+84.7
正の影響:週末の方が売上が多い
週末(1)- 平日(0)→ 売上が84.7万円多い
→ 週末の集客が重要
どの変数が最も重要か
気温の係数(8.2)が、広告費の係数(4.5)より大きいからといって、「気温の方が重要」とは限りません。
理由:
- 変数の単位が違う(気温は℃、広告費は万円)
- 変数の変動幅が違う(気温は20〜35℃、広告費は50〜100万円)
正しい比較方法:
・標準化係数(ベータ係数)を使う
・または、各変数の実際の変動幅を考慮して比較
→ 高度な分析(今後のステップで学習)
💼 6. ビジネスでの活用
活用例1:最適な価格設定
状況:
- 現在の価格:750円
- 仕入れコスト:300円/個
- 広告費:80万円、気温:30℃、週末(1)
分析:価格を700円、750円、800円で比較
価格700円の場合:売上予測590万円 → 利益:高
価格750円の場合:売上予測560万円 → 利益:中
価格800円の場合:売上予測530万円 → 利益:低
結論:価格700円が最も利益が高い!
→ データに基づいた価格設定が可能
活用例2:広告予算の最適配分
質問:
広告費の係数が4.5なので、ROI = 4.5倍
広告費を無限に増やせば、利益も無限に増える?
❌ そんなことはありません!
理由:
- 飽和効果:広告を増やしても、効果は次第に小さくなる
- データの範囲外:広告費が200万円の時の予測は信頼できない
- 利益率:広告費4.5万円の売上増でも、利益は少ない
正しいアプローチ:
・データの範囲内(50〜100万円)で最適化
・ROIと利益率を考慮
・定期的にA/Bテストで効果を検証
活用例3:売上目標達成のためのシナリオ分析
- 目標売上から、必要な条件を逆算できる
- 複数のシナリオを比較して、最適な戦略を選ぶ
- コストと利益のバランスを考慮する
- データの範囲内で予測することが重要
📝 STEP 11 のまとめ
1. 重回帰分析の基本
- 複数の説明変数で予測する手法
- 単回帰より正確な予測が可能
- 各変数の独立した効果を測定できる
2. 実践スキル
- Excelの分析ツールで複数の変数を選択
- Pythonのscikit-learn、statsmodelsで詳細分析
- 相関行列とヒートマップで変数間の関係を確認
3. 結果の解釈
- 偏回帰係数:他の変数を一定にした時の影響
- ダミー変数:カテゴリー(週末、性別など)を数値化
- p値で統計的有意性を確認
4. ビジネス活用
- 価格設定の最適化
- 広告予算の配分
- シナリオ分析と目標達成計画
重回帰分析は、ビジネスで最もよく使われる予測手法です。複数の要因を考慮できるため、単回帰より正確な予測が可能です。
今回のモデルでは、R²=0.98と非常に高い精度でした。これは、広告費、気温、価格、週末の4つの変数で、売上の98%が説明できることを意味します。
ただし、注意点もあります:
- 多重共線性:変数同士が相関していると問題が起きる → STEP 15
- 過学習:変数を増やしすぎると予測精度が悪化 → STEP 14
- 外挿の危険性:データの範囲外の予測は信頼できない
次のSTEP 12では、決定係数(R²)について詳しく学びます!
STEP 12では、「決定係数(R²)の解釈」を学びます。R²の意味、調整済みR²、そして過学習の危険性について理解を深めましょう!
📝 理解度チェック
学んだ内容を確認しましょう。解答を見る前に、まず自分で考えてみてください。
以下の重回帰式があります。
売上 = 100 + 5×広告費 + 3×気温 - 0.5×価格
(1) 広告費が10万円、気温が25℃、価格が500円の時の売上を予測してください。
(2) 気温を変えずに、価格を100円下げると、売上はいくら増えますか?
(1) 売上の予測
売上 = 100 + 5×10 + 3×25 – 0.5×500
= 100 + 50 + 75 – 250
= -25万円
マイナスになりましたが、これは切片が小さいためです。実際のデータの範囲内であれば、正の値になるはずです。
(2) 価格を100円下げた時の売上増加
価格の係数:-0.5
価格が1円下がると、売上が0.5万円増える
したがって、価格が100円下がると:
0.5 × 100 = 50万円増加
偏回帰係数とは何ですか?簡潔に説明してください。
偏回帰係数とは、他の説明変数を一定に保った時の、ある説明変数の目的変数への影響を表す係数です。
例:広告費の偏回帰係数が4.5の場合
→ 気温、価格、週末を変えずに、広告費だけを1万円増やすと、売上が4.5万円増える
不動産価格の重回帰分析で、以下の結果を得ました。
価格(万円)= 1000 + 50×広さ(㎡)- 10×駅距離(分)- 20×築年数(年)+ 300×駅前ダミー
R² = 0.92
(1) 広さ60㎡、駅から5分、築年数10年、駅前(1)の物件の価格を予測してください。
(2) 駅前物件は、駅前でない物件に比べて、いくら高いですか?
(1) 価格の予測
価格 = 1000 + 50×60 – 10×5 – 20×10 + 300×1
= 1000 + 3000 – 50 – 200 + 300
= 4050万円
(2) 駅前プレミアム
駅前ダミーの係数:+300
→ 駅前物件は、駅前でない物件に比べて300万円高い
重回帰分析を行う際、係数の大きさだけで「どの変数が最も重要か」を判断できない理由を説明してください。
係数の大きさだけで変数の重要度を判断できない理由は:
- 変数の単位が違う:気温は℃、広告費は万円など、単位が異なるため直接比較できない
- 変数の変動幅が違う:気温は20〜35℃(幅15)、広告費は50〜100万円(幅50)など、変動範囲が異なる
正しい比較方法:
・標準化係数(ベータ係数)を使う
・または、各変数の実際の変動幅×係数で比較する
【実践課題】以下のデータを使って、Pythonで重回帰分析を行ってください。
テーマ:学生の成績分析
| 生徒 | 勉強時間(h/日) | 睡眠時間(h/日) | 出席率(%) | テスト点数(点) |
|---|---|---|---|---|
| 1 | 2 | 6 | 80 | 60 |
| 2 | 4 | 7 | 90 | 75 |
| 3 | 5 | 7 | 95 | 85 |
| 4 | 3 | 8 | 85 | 70 |
| 5 | 6 | 7 | 100 | 95 |
(1) 重回帰式を求めてください。
(2) どの変数が最も影響しているか解釈してください。
(3) 勉強時間5時間、睡眠時間7時間、出席率90%の場合のテスト点数を予測してください。
(1) 重回帰式(例)
点数 = -20 + 8×勉強時間 + 3×睡眠時間 + 0.5×出席率
R² = 0.89
(2) 解釈
- 勉強時間:係数8 → 1時間増えると8点上がる(最も影響大)
- 睡眠時間:係数3 → 1時間増えると3点上がる
- 出席率:係数0.5 → 1%増えると0.5点上がる
(3) 予測
点数 = -20 + 8×5 + 3×7 + 0.5×90
= -20 + 40 + 21 + 45
= 86点
❓ よくある質問
理論的には制限はありませんが、実務的には注意が必要です。
一般的なガイドライン:
サンプルサイズ(データ数)の10分の1程度まで
例:データが100件なら、説明変数は最大10個程度
説明変数が多すぎると:
- 過学習のリスク(STEP 14で学習)
- 多重共線性の問題(STEP 15で学習)
- 計算が複雑になる
- 解釈が難しくなる
推奨:本当に重要な変数だけを選ぶ
カテゴリー(種類)を表す変数を数値化する時に使います。
例:
- 週末 vs 平日:週末=1、平日=0
- 性別:男性=1、女性=0
- 商品タイプ:A商品=1、B商品=0
- 季節:春=1、それ以外=0
注意:
3つ以上のカテゴリーがある場合(春、夏、秋、冬など)は、カテゴリー数-1個のダミー変数を作ります。
例:季節ダミー → 春、夏、秋の3つ(冬は基準)
これは「ダミー変数の罠」を避けるためです(高度な内容)。
必ずしも削除する必要はありません。
p値が大きい(例:p=0.3)の意味:
その変数が売上に影響している証拠が統計的に弱い(偶然の可能性が高い)
対応方針:
- ビジネス的に重要なら残す(例:価格は必ず影響するはず)
- 理論的根拠がないなら削除を検討
- サンプルサイズが小さい場合、p値は大きくなりやすい → データを増やして再分析
重要:統計的有意性だけでなく、ビジネス的意味も考慮しましょう。
影響する要因が複数あるなら、重回帰を使うべきです。
単回帰を使う場合:
- 影響する要因が明らかに1つだけ
- まず簡単な分析で傾向を掴みたい
- 結果をわかりやすく説明したい
重回帰を使う場合:
- 影響する要因が複数ある(現実はほとんどこれ)
- より正確な予測が必要
- どの要因が最も重要かを知りたい
実務では:まず単回帰で主要な変数の影響を確認 → 重回帰で複数の変数を考慮した精度の高い予測 → 段階的に分析を深めるのがおすすめ
説明変数を増やすと、R²は必ず高くなるためです。
理由:
変数を1つ追加すると、その変数が少しでも目的変数と関係があれば、R²が上がる
極端な例:100個の変数を使えば、R²=1.0(完璧な予測)も可能
問題:
変数を増やせば増やすほど、R²は上がるが、予測精度は必ずしも良くならない
これが「過学習」の問題(STEP 14で学習)
解決策:
- 調整済みR²を使う(STEP 12で学習)
- 調整済みR²は、不要な変数を追加すると逆に下がる
- テストデータで予測精度を確認する(STEP 14で学習)
多重共線性の問題が発生する可能性があります。
多重共線性とは:
説明変数同士が強く相関している状態
例:「広告費」と「マーケティング費」は似た情報を含む
問題:
- 係数が不安定になる
- 解釈が難しくなる
- 予測精度が低下する可能性
対策:
- 相関が高い変数のどちらかを削除
- 変数を合成する(例:広告費+マーケティング費 → 総販促費)
- VIF(分散拡大係数)で確認(STEP 15で学習)
学習メモ
ビジネスデータ分析・意思決定 - Step 11