💻 STEP 10: 単回帰分析の実践
ExcelとPythonで実際に回帰分析をやってみよう
📋 このステップで学ぶこと
- Excelでの単回帰分析(散布図、近似曲線、LINEST関数)
- Excelの「分析ツール」を使った詳細分析
- Pythonでの単回帰分析(scikit-learn、statsmodels)
- 回帰式の読み方と結果の解釈
- 実データを使った予測の実践
学習時間の目安:3.5時間
準備するもの:Excel、Google Colab(無料)
📊 1. サンプルデータの準備
今回使用するデータ
ある小売店の広告費と売上のデータを使います。広告費(説明変数X)から売上(目的変数Y)を予測する単回帰分析を行います。
| 月 | 広告費(万円) | 売上(万円) |
|---|---|---|
| 1月 | 50 | 310 |
| 2月 | 60 | 370 |
| 3月 | 70 | 420 |
| 4月 | 55 | 330 |
| 5月 | 80 | 480 |
| 6月 | 90 | 530 |
| 7月 | 85 | 500 |
| 8月 | 75 | 450 |
| 9月 | 65 | 390 |
| 10月 | 70 | 430 |
| 11月 | 95 | 560 |
| 12月 | 100 | 590 |
Excelへのデータ入力
📈 2. Excelでの単回帰分析
方法1:散布図と近似曲線(最も簡単)
回帰式の読み方
y(売上)= 5.9835 × x(広告費)+ 21.061
1. 切片(21.061):
広告費が0円の時、売上は約21万円
→ 広告なしでも基本的な売上がある
2. 傾き(5.9835):
広告費が1万円増えると、売上が約6万円増える
→ 広告のROI(投資対効果)は約6倍!
3. R²(0.9542):
売上の変動の95.4%が広告費で説明できる
→ とても精度の高いモデル!(STEP 12で詳しく学習)
予測の実践
質問:来月、広告費を110万円使う予定です。売上はいくらになるでしょうか?
計算:
売上 = 5.9835 × 110 + 21.061
= 658.185 + 21.061
= 679.246万円
結論:広告費110万円の場合、売上は約679万円と予測されます。
方法2:LINEST関数(より詳細)
方法3:分析ツール(最も詳細)
分析ツールの結果の読み方
1. 回帰統計
・重相関R:0.9768(相関係数)
・重決定R²:0.9542(決定係数) ← 精度の指標
・補正R²:0.9496(調整済みR²)
2. 係数
| 項目 | 係数 | 意味 |
|---|---|---|
| 切片 | 21.061 | 広告費0円の時の売上 |
| 広告費(万円) | 5.9835 | 広告費1万円増で売上6万円増 |
3. P値(有意性)
・広告費のP値:0.0000(ほぼ0)
→ p < 0.05なので、統計的に有意!
→ 広告費と売上の関係は偶然ではない(STEP 17で詳しく学習)
🐍 3. Pythonでの単回帰分析
Google Colabの準備
ライブラリのインポート
データの作成
散布図の作成
方法1:scikit-learn(シンプル)
方法2:statsmodels(詳細)
散布図に回帰直線を追加
予測の実践
- scikit-learn:シンプルで使いやすい、予測に特化
- statsmodels:詳細な統計情報(p値、信頼区間など)を出力
- 使い分け:予測メインならscikit-learn、統計的検定が必要ならstatsmodels
📊 4. 結果の解釈
回帰式の意味
解釈1:広告の効果
広告費を1万円増やすと、売上が約6万円増える
→ 広告のROI(投資対効果)は約6倍!
→ 広告は非常に効果的
解釈2:基本売上
広告費が0円でも、売上は約21万円
→ リピーター、口コミ、店舗の立地などによる基本的な売上
解釈3:予測精度
R² = 0.9542 = 95.42%
→ 売上の変動の95%以上が広告費で説明できる
→ 非常に高い精度のモデル!
ビジネスへの活用
1. 来月の予算計画
目標売上が650万円の場合、必要な広告費は?
650 = 5.9835 × X + 21.0606
X = (650 – 21.0606) / 5.9835 = 105.1万円
→ 広告費105万円が必要
2. ROIの評価
広告費1万円で売上6万円増加
利益率が30%なら、利益は1.8万円増加
→ ROI = (1.8 – 1) / 1 = 80%
→ 広告は十分に利益を生む
3. 経営判断
広告費と売上の関係が明確
→ 自信を持って広告予算を増やせる
→ データに基づいた経営判断が可能
注意すべき点
- 相関と因果:広告費と売上に相関があるが、因果関係の証明にはA/Bテストが必要
- 外挿の危険:広告費が200万円の時の予測は信頼できない(データの範囲外)
- 他の要因:季節、競合、経済状況なども売上に影響する可能性
- 飽和効果:広告費を無限に増やしても、売上は無限に増えない(限界がある)
📝 STEP 10 のまとめ
1. Excelでの回帰分析
- 散布図+近似曲線:最も簡単な方法
- LINEST関数:配列数式で詳細な統計情報
- 分析ツール:最も詳細な出力(p値、残差など)
2. Pythonでの回帰分析
- scikit-learn:シンプルで予測に特化
- statsmodels:詳細な統計情報(p値、信頼区間)
3. 回帰式の読み方
- 切片:Xが0の時のYの値(基本値)
- 傾き:Xが1増えた時のYの増加量
- R²:モデルの説明力(0〜1、高いほど良い)
4. ビジネス活用
- 予測:新しいXの値からYを計算
- 目標達成:目標Yから必要なXを逆算
- ROI評価:投資対効果を数値で把握
単回帰分析は、1つの説明変数で予測する最もシンプルな回帰分析です。Excelでもすぐに実行でき、ビジネスの現場で非常によく使われます。
今回のようにR²が0.95と高い場合、予測精度が非常に高いと言えます。ただし、現実のビジネスでは、売上に影響する要因は複数あることがほとんどです。
次のSTEP 11では、重回帰分析で複数の要因を考慮した予測を学びます!
STEP 11では、「重回帰分析の実践」を学びます。広告費だけでなく、価格、季節、競合の影響なども考慮したより正確な予測モデルを作ります!
📝 理解度チェック
学んだ内容を確認しましょう。解答を見る前に、まず自分で考えてみてください。
以下の回帰式があります。
体重(kg)= 0.9 × 身長(cm)- 80
(1) 身長が170cmの人の体重を予測してください。
(2) 身長が10cm増えると、体重は何kg増えますか?
(1) 身長170cmの人の体重
体重 = 0.9 × 170 – 80
= 153 – 80
= 73kg
(2) 身長が10cm増えた時の体重増加
傾き = 0.9
身長が1cm増えると、体重が0.9kg増える
したがって、身長が10cm増えると:
0.9 × 10 = 9kg増加
R²(決定係数)= 0.85 は、どういう意味ですか?
R²(決定係数)= 0.85 = 85%
これは、目的変数の変動の85%が説明変数で説明できるという意味です。
残りの15%は、他の要因(モデルに含まれていない変数)や、偶然のばらつきで説明されます。R² = 0.85は、かなり高い精度のモデルと言えます。
あるカフェの来客数と売上のデータから、以下の回帰式を得ました。
売上(万円)= 0.8 × 来客数(人)+ 5
R² = 0.88
(1) 来客数が100人の日の売上を予測してください。
(2) 目標売上が100万円の場合、必要な来客数は何人ですか?
(1) 来客数100人の日の売上予測
売上 = 0.8 × 100 + 5
= 80 + 5
= 85万円
(2) 売上100万円に必要な来客数
100 = 0.8 × X + 5
0.8 × X = 100 – 5
0.8 × X = 95
X = 95 / 0.8
X = 118.75人
→ 約119人の来客が必要
単回帰分析を行う際の注意点を3つ挙げてください。
- 相関と因果の混同:回帰分析で予測できても、因果関係があるとは限らない
- 外挿の危険性:データの範囲外での予測は信頼できない
- 外れ値の影響:極端な値が回帰式を大きく歪める可能性がある
- 他の要因:単回帰では1つの要因しか考慮できない(重回帰が必要な場合も)
- 飽和効果:現実には線形関係が永遠に続くわけではない
【実践課題】以下のデータを使って、Excelで単回帰分析を行ってください。
テーマ:勉強時間とテストの点数
| 生徒 | 勉強時間(時間) | テスト点数(点) |
|---|---|---|
| A | 1 | 50 |
| B | 2 | 55 |
| C | 3 | 65 |
| D | 4 | 70 |
| E | 5 | 80 |
| F | 6 | 85 |
| G | 7 | 90 |
| H | 8 | 95 |
(1) 散布図と近似曲線を作成し、回帰式とR²を求めてください。
(2) 勉強時間が10時間の場合のテスト点数を予測してください。
(3) 結果を解釈してください。
(1) 回帰分析の結果
回帰式:点数 = 6.43 × 勉強時間 + 44.29
R² = 0.96
(2) 勉強時間10時間の場合の予測
点数 = 6.43 × 10 + 44.29 = 108.59点
→ 約109点(ただし、満点が100点なら100点が上限)
(3) 結果の解釈
- 傾き(6.43):勉強時間が1時間増えると、テスト点数が約6.4点上がる
- 切片(44.29):勉強時間0時間でも、約44点取れる(基礎学力)
- R²(0.96):点数の96%が勉強時間で説明できる(非常に高い精度)
- 結論:勉強時間を増やせば、テスト点数も確実に上がる!
❓ よくある質問
計算方法の違いや、丸め誤差によるものです。
ExcelとPythonでは、内部の計算アルゴリズムが微妙に異なることがあります。また、小数点以下の桁数の丸め方が違うこともあります。
ただし、実務上は問題ないレベルの違いです。例:Excelで5.9835、Pythonで5.9837など
どちらを使っても、結論や解釈は変わりません。
使えますが、予測精度は低めです。
R² = 0.5 = 50%
→ 目的変数の変動の50%しか説明できない
→ 残りの50%は、他の要因で説明される
目安:
- R² > 0.7:良好(実務で十分使える)
- 0.5 < R² < 0.7:まあまあ(改善の余地あり)
- R² < 0.5:低い(他の変数を追加するか、別の手法を検討)
ただし、分野によって基準は異なります。例:社会科学ではR²=0.3でも「良い」とされることもあります。
完璧に直線上に並ぶことは、ほぼありません。
現実のデータには、必ずバラつきがあります。それが正常です。
重要なのは:
- 全体として右上がり(または右下がり)の傾向があるか
- 極端に外れた点(外れ値)がないか
回帰分析は、バラつきがあっても、「平均的な関係」を見つけるための手法です。R²が高ければ、十分に使えるモデルです。
間違いではありません。
切片がマイナスになることは、よくあります。
例:体重 = 0.9 × 身長 – 80
→ 身長0cmの時、体重は-80kg(現実にはありえない)
これは、データの範囲外(身長0cm)での予測なので、意味がありません。重要なのは、データの範囲内での予測です。
切片の値そのものより、傾き(回帰係数)の方が重要です。
影響する要因が1つなら単回帰、複数なら重回帰です。
単回帰分析を使う場合:
- 影響する要因が明らかに1つだけ
- まず簡単な分析で傾向を掴みたい
- 結果をわかりやすく説明したい
重回帰分析を使う場合:
- 影響する要因が複数ある(現実はほとんどこれ)
- より正確な予測が必要
- どの要因が最も重要かを知りたい
推奨:まず単回帰で基本を理解 → 重回帰で精度を高める
STEP 11で重回帰を学びます!
目的によって使い分けます。
scikit-learn:
- シンプルで使いやすい
- 予測に特化(係数、R²、予測値を取得)
- 機械学習の他のモデルと組み合わせやすい
statsmodels:
- 詳細な統計情報を出力(p値、信頼区間、F検定など)
- 統計的な検定が必要な場合に最適
- 学術論文やレポートで使う詳細な分析に向いている
実務での使い分け:
・予測がメイン → scikit-learn
・統計的検定が必要 → statsmodels
・両方使って結果を比較するのもおすすめ
学習メモ
ビジネスデータ分析・意思決定 - Step 10