📈 STEP 33: 売上予測の実践
時系列データから将来の売上を予測しよう
📋 このステップで学ぶこと
- 時系列データの3つの構成要素(トレンド・季節性・ノイズ)
- 移動平均法による売上予測
- 加重移動平均の考え方と計算
- 予測精度の評価指標(MAE、RMSE、MAPE)
- PythonとExcelでの実装方法
学習時間の目安: 2.5時間
🔍 1. 時系列データとは
売上予測が必要な理由
「来月の売上はいくらか?」はあらゆる経営判断の基盤
・予測より売れた → 欠品で機会損失
・予測より売れない → 過剰在庫でコスト増
・適切な予測で利益を最大化
2. 人員計画
・繁忙期 → アルバイトを増員
・閑散期 → 研修や休暇を計画
・シフトの最適化
3. 予算策定
・マーケティング予算の決定
・設備投資の計画
・資金繰りの調整
4. 経営判断
・新規出店の可否
・事業拡大・縮小の判断
・投資家への説明資料
時系列データの基本概念
時間の経過とともに記録されたデータ
→ 過去のパターンから未来を予測する
具体例:
・月次売上: 2024年1月100万円、2月110万円、3月105万円…
・日次訪問者数: 1日目1,000人、2日目1,200人、3日目950人…
・四半期利益: Q1 500万円、Q2 600万円、Q3 450万円…
共通点:
すべて「時間順に並んでいる」データ
時系列データの3つの構成要素
1. トレンド(Trend)- 長期的な傾向
・上昇トレンド: スマートフォン市場の成長
・下降トレンド: 固定電話の減少
・横ばい: 成熟した日用品市場
2. 季節性(Seasonality)- 周期的な変動
・夏にアイスクリーム売上増
・12月にギフト需要増
・月末に給料日特需
→ 毎年(毎月)同じパターンが繰り返される
3. 残差/ノイズ(Residual)- ランダムな変動
・天候による一時的な変動
・突発的なイベント
・予測不能な要因
売上データの分解イメージ:
実際の売上 = トレンド + 季節性 + ノイズ
分解すると:
・トレンド成分: 100万円(基本的な売上水準)
・季節性成分: +40万円(夏なので増加)
・ノイズ成分: +10万円(たまたま暑い日が多かった)
この構造が分かれば、来年の7月を予測できる!
予測 = トレンド100万 + 季節性40万 = 140万円
(ノイズは予測不能なので含めない)
📊 2. 移動平均法の基本
移動平均法とは
「直近n期間の平均」を計算し、それを次の期間の予測値とする
なぜ「移動」なのか?
時間が進むにつれて、計算に使う期間も「移動」していくから
例: 3ヶ月移動平均
・4月の予測 = (1月 + 2月 + 3月) / 3
・5月の予測 = (2月 + 3月 + 4月) / 3 ← 1期間ずれる
・6月の予測 = (3月 + 4月 + 5月) / 3 ← さらに1期間ずれる
移動平均の効果:
・ノイズを除去(平滑化)
・トレンドを把握しやすくなる
・計算が簡単でExcelでも実装可能
具体例で理解する移動平均
1月: 100万円、2月: 110万円、3月: 105万円
4月: 115万円、5月: 120万円、6月: 125万円
3ヶ月移動平均の計算:
・3月時点: (100 + 110 + 105) / 3 = 105.0万円
・4月時点: (110 + 105 + 115) / 3 = 110.0万円
・5月時点: (105 + 115 + 120) / 3 = 113.3万円
・6月時点: (115 + 120 + 125) / 3 = 120.0万円
7月の予測:
7月予測 = (4月 + 5月 + 6月) / 3
= (115 + 120 + 125) / 3
= 360 / 3
= 120万円
「直近3ヶ月の平均が、次の月の予測値になる」
移動平均の期間による違い
・メリット: 変化に敏感、トレンド転換を早く捉える
・デメリット: ノイズの影響を受けやすい
・適用: 変動の大きい商品、新商品
中期(6ヶ月):
・メリット: バランスが良い、実務で最も使いやすい
・デメリット: 特になし(汎用的)
・適用: 一般的なビジネス、迷ったらこれ
長期(12ヶ月):
・メリット: 安定、季節性を除去できる
・デメリット: 変化への反応が遅い
・適用: 季節変動の大きい商品、長期トレンド分析
Excelでの実装
⚖️ 3. 加重移動平均(WMA)
単純移動平均の問題点
単純移動平均(SMA)は、すべてのデータを同じ重みで扱う
例: 3ヶ月移動平均で7月を予測する場合
・4月の売上: 重み 1/3(33%)
・5月の売上: 重み 1/3(33%)
・6月の売上: 重み 1/3(33%)← 一番最近なのに同じ重み
これの何が問題か?
・最近の変化を十分に反映できない
・トレンド転換に気づくのが遅れる
・直感に反する(普通は最新データを重視したい)
加重移動平均の計算方法
・3期前(古い): 重み 1
・2期前(中間): 重み 2
・1期前(最新): 重み 3
・合計重み: 1 + 2 + 3 = 6
計算式:
WMA = (古いデータ×1 + 中間×2 + 最新×3) / 6
具体例: 4月100万、5月110万、6月120万
WMA = (100×1 + 110×2 + 120×3) / 6
= (100 + 220 + 360) / 6
= 680 / 6
= 113.3万円
SMAとWMAの比較
単純移動平均(SMA):
(100 + 110 + 120) / 3 = 110.0万円
加重移動平均(WMA):
(100×1 + 110×2 + 120×3) / 6 = 113.3万円
差の意味:
・SMA: 3つの単純平均(中央値に近い)
・WMA: 最新データ(120)を重視した値
・WMAの方が上昇トレンドをより正確に反映
どちらを使うべきか?
・安定した市場 → SMA(シンプル)
・変化の激しい市場 → WMA(反応が速い)
・実務では両方計算して比較することも多い
🎯 4. 予測精度の評価
なぜ精度評価が必要か
・3ヶ月移動平均 vs 6ヶ月移動平均
・どちらが精度が高いか?
・最適なモデルを選択
2. 信頼性の判断:
・予測結果をどの程度信頼できるか
・意思決定にどう活用するか
・リスクの見積もり
3. 経営への報告:
・「来月120万円の予測です」だけでは不十分
・「誤差±10%の予測です」と言えれば信頼性UP
・根拠のある意思決定
4. 改善ポイントの特定:
・どこで大きく外しているか
・季節性を考慮すべきか
・モデルの改善方向を決める
3つの主要な評価指標
・計算式: Σ|実績 – 予測| / n
・意味: 平均的に何万円ずれているか
・特徴: 解釈しやすい、単位が元と同じ
・例: MAE = 5万円 → 平均5万円の誤差
2. RMSE(Root Mean Squared Error)- 二乗平均平方根誤差
・計算式: √(Σ(実績 – 予測)² / n)
・意味: 大きな誤差をより重視した評価
・特徴: 外れ値にペナルティ
・例: RMSE = 8万円 → 大きな誤差がある可能性
3. MAPE(Mean Absolute Percentage Error)- 平均絶対パーセント誤差
・計算式: Σ|実績 – 予測| / 実績 / n × 100%
・意味: 平均的に何%ずれているか
・特徴: %表示で直感的、最もよく使う
・例: MAPE = 5% → 平均5%の誤差
MAPEの評価基準
・在庫計画・予算策定に使える
・意思決定の根拠として十分
5〜10%: 良い ★★★★☆
・実務で十分活用できる
・多くのビジネスでこのレベル
10〜20%: 普通 ★★★☆☆
・参考値として活用
・改善の余地あり
20%以上: 要改善 ★★☆☆☆
・モデルを見直す必要あり
・予測を鵜呑みにしない
MAPE計算の具体例
実績: 100, 110, 105, 115, 120万円
予測: 105, 108, 108, 112, 118万円
各期のパーセント誤差:
1期目: |100 – 105| / 100 × 100% = 5.0%
2期目: |110 – 108| / 110 × 100% = 1.8%
3期目: |105 – 108| / 105 × 100% = 2.9%
4期目: |115 – 112| / 115 × 100% = 2.6%
5期目: |120 – 118| / 120 × 100% = 1.7%
MAPE:
(5.0 + 1.8 + 2.9 + 2.6 + 1.7) / 5 = 14.0 / 5 = 2.8%
評価: ★★★★★ 非常に良い(5%以下)
このモデルは在庫計画や予算策定に十分使えるレベル
🐍 5. Pythonでの実装
データ作成と移動平均計算
予測精度の評価
次月の売上予測
可視化
📝 STEP 33 のまとめ
- 時系列データ: トレンド + 季節性 + 残差の3要素で構成
- 移動平均法: 直近n期間の平均で予測(シンプルで実用的)
- 加重移動平均: 最近のデータを重視した予測
- 精度評価: MAE、RMSE、MAPE(5%以下が目標)
- 実務活用: 在庫管理、人員計画、予算策定に活用
売上予測は、過去のパターンが未来も続くという前提に基づきます!
予測精度向上のコツ:
・季節性を必ず考慮する
・外れ値を除外または調整
・複数の手法を組み合わせる
・定期的にモデルを更新
移動平均法の長所:
・シンプルで理解しやすい
・Excelで簡単に実装可能
・説明が容易(経営層への報告向き)
移動平均法の短所:
・急激な変化に対応できない
・長期予測には不向き
・トレンド転換を捉えにくい
次のSTEP 34では、より高度な時系列分析手法を学びます!
📝 練習問題
過去6ヶ月の売上が以下の通りです。
1月: 100万円、2月: 110万円、3月: 105万円
4月: 115万円、5月: 120万円、6月: 125万円
3ヶ月移動平均法で、7月の売上を予測してください。
計算:
7月の予測 = (4月 + 5月 + 6月) / 3
= (115 + 120 + 125) / 3
= 360 / 3
= 120万円
補足:
移動平均は「平滑化」するため、トレンドを少し遅れて反映します。
もし上昇トレンドを重視するなら:
・加重移動平均を使用
・成長率を考慮(125×1.05≒131万円など)
加重移動平均(3期間、重み1:2:3)で予測してください。
データ: 4月 100万円、5月 110万円、6月 120万円
計算:
・4月(3期前): 重み 1
・5月(2期前): 重み 2
・6月(1期前): 重み 3
・合計重み: 1 + 2 + 3 = 6
WMA = (100×1 + 110×2 + 120×3) / 6
= (100 + 220 + 360) / 6
= 680 / 6
= 113.3万円
SMAとの比較:
WMA = 113.3万円
WMAの方が最新データ(120万円)を重視するため、
上昇トレンドをより反映した予測になっています。
以下の予測結果からMAPEを計算し、精度を評価してください。
実績: 100, 110, 105, 115, 120万円
予測: 105, 108, 108, 112, 118万円
計算手順:
1期目: |100 – 105| / 100 × 100% = 5.0%
2期目: |110 – 108| / 110 × 100% = 1.8%
3期目: |105 – 108| / 105 × 100% = 2.9%
4期目: |115 – 112| / 115 × 100% = 2.6%
5期目: |120 – 118| / 120 × 100% = 1.7%
MAPE = (5.0 + 1.8 + 2.9 + 2.6 + 1.7) / 5
= 14.0 / 5
= 2.8%
評価:
この精度であれば:
・在庫計画に十分使えるレベル
・予算策定の根拠として適切
・経営判断に活用できる
アイスクリーム店の売上データが以下の通りです。
・夏(7月): 150万円
・冬(1月): 60万円
・年間平均: 90万円
このデータから、時系列の3要素(トレンド、季節性、ノイズ)の特徴を説明してください。
分析:
年間平均90万円がベースライン
→ 長期的な成長/減少は不明(1年分のデータが必要)
2. 季節性(最も顕著):
・夏(7月): 150万円 → 平均+60万円(+67%)
・冬(1月): 60万円 → 平均-30万円(-33%)
・季節変動幅: 150 – 60 = 90万円
→ 平均売上と同じ幅で変動!非常に強い季節性
3. ノイズ:
・天候(猛暑/冷夏)による変動
・イベント(近くの祭りなど)
→ 具体的な数値は毎年のデータを比較して把握
予測への示唆:
1. 単純移動平均は不適切
・6ヶ月平均を使うと季節性が消える
・夏に低い予測、冬に高い予測になってしまう
2. 前年同月比法が有効
・今年7月の予測 = 昨年7月 × (1 + 成長率)
・季節パターンを正確に反映
3. 12ヶ月移動平均でトレンド把握
・季節性を除去した「純粋なトレンド」を確認
・長期的な成長/減少を判断
❓ よくある質問
期間選択の指針:
・変動が大きい(新商品、成長市場)→ 短め(3ヶ月)
・安定している(成熟市場、日用品)→ 長め(12ヶ月)
・季節性が強い(アパレル、旅行)→ 12ヶ月で季節性除去
・迷ったら → まず6ヶ月で試す
実務では複数の期間を試し、MAPEが最小になる期間を選ぶのがベストです。
方法1: 前年同月比
来年7月の予測 = 今年7月の売上 × (1 + 成長率)
例: 今年7月100万円、成長率10% → 来年7月110万円
方法2: 季節調整
1. 12ヶ月移動平均で季節性を除去
2. トレンドだけで予測
3. 予測値に季節指数を掛ける
季節性が強い場合は必ず考慮してください。無視すると大きな誤差になります。
外れ値の原因例:
・キャンペーンによる一時的な売上増
・災害や事故による売上減
・システムエラーによるデータ欠損
対処方法:
1. 原因が明確 → 調整値を使用(キャンペーン分を差し引くなど)
2. 一時的イベント → 前後の平均で補間
3. データエラー → 修正または除外
注意: 安易に除外せず、記録を残して判断基準を明確にしましょう。
報告に含めるべき内容:
1. 予測値: 「来月の売上は約120万円と予測」
2. 精度: 「過去の精度はMAPE 8%(±10万円程度の誤差)」
3. 手法: 「6ヶ月移動平均法を使用」
4. 前提条件: 「特別なキャンペーンがない場合」
5. レンジ: 「110〜130万円の範囲に収まる可能性が高い」
避けるべきこと:
・点予測だけを伝える(「来月は120万円です」)
・精度を伝えない
・100%正確であるかのように伝える
学習メモ
ビジネスデータ分析・意思決定 - Step 33