季節性分析

英語名 Seasonality Analysis
読み方 シーズナリティ アナリシス
難易度
所要時間 2〜4時間
提唱者 統計学・経済学の時系列分析から発展
目次

ひとことで言うと
#

売上やアクセス数などのデータに含まれる季節的・周期的なパターンを見つけ出し、「いつ増えて、いつ減るか」を予測可能にする分析手法。感覚ではなくデータで繁忙期と閑散期を把握できる。

押さえておきたい用語
#

押さえておきたい用語
季節指数(Seasonal Index)
各月(または週・日)の平均値を全体平均で割った季節変動の大きさを示す係数のこと。100%が平均、130%なら平均の1.3倍の需要がある。
トレンド(Trend)
データの長期的な増減の方向性を指す。季節変動とは別に存在し、分離して分析する必要がある。
移動平均(Moving Average)
一定期間(例: 12ヶ月)のデータを平均することで、季節変動を平滑化しトレンドを抽出する手法である。
STL分解(Seasonal-Trend Decomposition)
時系列データをトレンド・季節成分・残差の3つに分解する統計手法のこと。Pythonのstatsmodelsで実行可能。

季節性分析の全体像
#

季節性分析の流れ:データ収集→分離→可視化→予測活用
元の時系列データ = トレンド + 季節変動 + ノイズ↓ 分解トレンド長期的な方向性+季節変動繰り返すパターン+残差(ノイズ)説明できない変動予測・計画への活用トレンド予測 × 季節指数 = 月別予測値
季節性分析の進め方フロー
1
データ収集
最低2年分の月別データを集める
2
トレンド分離
移動平均でトレンドと季節変動を分ける
3
季節指数算出
月別の季節パターンを可視化
予測・意思決定
季節指数で来期の数値を予測し施策に活用

こんな悩みに効く
#

  • 毎年同じ時期に売上が急落するが、原因がわからない
  • 「今月は好調だ」と喜んでも、実は例年通りの季節変動だった
  • 在庫を持ちすぎたり、足りなくなったりを繰り返している

基本の使い方
#

ステップ1: 時系列データを収集する

分析したい指標の最低2年分、できれば3年分以上のデータを月別(または週別)で集める。

  • 例: 月別売上、週別サイトアクセス数、日別注文数など
  • 期間が短すぎると、季節パターンなのか偶然なのか区別できない
  • 外部要因(消費増税、コロナなど)があった期間にはフラグを立てておく

ポイント: まずはExcelやスプレッドシートに月別データを並べるだけでOK。

ステップ2: トレンドと季節変動を分離する

データを「トレンド(長期的な増減)」と「季節変動(周期的な上下)」に分ける。

  • 簡易手法: 12ヶ月移動平均を計算し、それをトレンドとする。元のデータからトレンドを引いた残りが季節変動
  • 季節指数の計算: 各月の平均値を全体平均で割る
    • 例: 12月の平均売上が全体平均の1.3倍 → 季節指数 130%

ポイント: Excelなら移動平均は AVERAGE 関数で、PythonならstatsmodelsのSTL分解が便利。

ステップ3: 季節パターンを可視化する

季節指数を月別の棒グラフまたは折れ線グラフにして、パターンを視覚的に確認する。

  • 例: アイスクリーム店の季節指数
    • 1月: 60% / 4月: 90% / 7月: 160% / 10月: 95% / 12月: 80%
  • 年ごとに折れ線を重ねると、パターンの安定性がわかる

「毎年同じ形」なら信頼度が高い。年によってバラバラなら他の要因が大きい。

ステップ4: 予測と意思決定に活用する

季節指数を使って来期の数値を予測し、具体的なアクションにつなげる。

  • 需要予測: トレンド予測値 × 季節指数 = 月別予測値
  • 在庫計画: 繁忙期の2ヶ月前から在庫を積み増す
  • 広告予算: 季節指数が高い月に予算を厚く配分する
  • 人員計画: 繁忙期に合わせてシフトを調整する

予測は必ず実績と比較し、季節指数を定期的にアップデートすること。

具体例
#

例1:アパレルECの広告予算を季節性に基づいて最適化する

状況: 年商5億円のアパレルEC。毎月均等に広告予算(月100万円)を配分しているが、ROIが月によって1.2〜3.5倍と大きく異なる。

季節性分析の結果(過去3年の売上季節指数):

季節指数特徴
1月130%初売り・福袋需要
2〜3月110%春物の立ち上がり
4〜5月85%端境期
6月75%閑散期
7月95%セール需要
8〜9月80%端境期
10〜11月105%秋冬物の立ち上がり
12月140%クリスマス・年末需要

アクション: 月100万円の均等配分をやめ、季節指数に比例して配分を変更。12月: 168万円、6月: 60万円。年間総額は変えず需要の高い月に集中投下。

広告ROIは1.8倍→2.5倍に改善。閑散期の無駄な出稿が減り、繁忙期の機会損失が解消された。同じ予算でも「いつ使うか」で効果は激変する。

例2:飲食チェーンが人員配置を季節性で最適化する

状況: 全国25店舗の居酒屋チェーン。人件費が売上の35%を占めており、閑散期にスタッフが余り、繁忙期に不足するパターンが続いている。

季節性分析の結果(過去3年の来客数季節指数):

季節指数必要スタッフ数/店
1月70%8名
3月125%15名(歓送迎会)
4月130%15名(歓迎会)
7月110%13名(ビアガーデン)
8月90%10名
12月155%18名(忘年会)

アクション:

  • 12月と3〜4月に短期バイトを重点募集(2ヶ月前から採用開始)
  • 1月と8月の閑散期はシフト削減とスタッフ研修期間に設定
  • 季節指数に基づいた月別の人件費予算を策定

では、季節性に合わせた配置は何を変えたか。人件費率は35%→31%に改善(年間約2,800万円の削減)。繁忙期の人手不足による機会損失もなくなり、12月の売上は前年比**8%**増加した。

例3:学習塾が入塾タイミングの季節パターンを活用する

状況: 生徒数400名の学習塾。年間を通じて均等に広告を出しているが、入塾問い合わせの波が大きく、営業効率が悪い。

季節性分析(過去3年の月別問い合わせ数):

季節指数主な要因
2月180%新年度準備
3月200%新学年最大ピーク
4月140%新学期開始
7月120%夏期講習
9月90%やや落ち着く
11〜12月60%最閑散期

アクション:

  • 広告予算: 2〜4月に年間予算の50%を集中投下。11〜12月は最小限に
  • 体験授業: 1月から開始(ピークの1ヶ月前に仕込む)
  • 閑散期対策: 11〜12月は既存生徒の紹介キャンペーンに注力

問い合わせ単価は年間平均で38%改善。2〜4月の入塾者数は前年比25%増。生徒数は400名→480名に。ピーク月への集中投下が、この成長を実現した。

やりがちな失敗パターン
#

  1. 1年分のデータだけで季節性を判断する — たまたまその年だけ特殊だった可能性がある。最低2年、理想は3年分のデータで複数年に共通するパターンを確認する
  2. トレンドと季節変動を混同する — 「毎月売上が伸びている」のはトレンド(成長)であって季節性ではない。トレンドを除去してから季節パターンを見るのが正しい手順
  3. 外部要因を無視する — コロナ禍やキャンペーン施策など、一時的な外部要因で歪んだデータをそのまま使うと季節指数が狂う。異常値は除外またはフラグを立てて処理する
  4. 季節指数を固定して更新しない — 消費者行動やビジネス環境は変化する。毎年新しいデータを加えて季節指数を更新し、パターンの変化を検知する

まとめ
#

季節性分析は、データに潜む周期的なパターンを見つけ出し、需要予測や資源配分の精度を高める分析手法。「いつ増えて、いつ減るか」がわかれば、在庫・広告・人員の計画が格段に立てやすくなる。まずは自社の売上データを月別に3年分並べて、季節指数を計算するところから始めよう。