メインコンテンツへスキップ
データ分析Basic

シーズナリティと祝日効果のモデリング:フーリエ変換の実践

売上の季節変動を「広告効果」と誤認しないために。フーリエ項と祝日ダミー変数を使ったシーズナリティのモデリング手法を解説します。

MMM Lab 編集部2026/2/232分で読める6

シーズナリティと祝日効果のモデリング:フーリエ変換の実践

シーズナリティを無視するとどうなるか?

MMMで最も見落とされる要素の一つが**シーズナリティ(季節性)**です。

例えばアパレルECでは夏に水着が売れます。この自然な売上変動を「広告効果」と混同すると、誤ったROI推定につながります。特に 夏期にTVCMを増やす企業 では、「TV=夏の売上UP」という誤った因果関係をモデルが学習してしまいます。

フーリエ項によるシーズナリティ表現

季節性を最もスムーズに表現できるのがフーリエ変換です。

import numpy as np
import pandas as pd

def fourier_terms(dates, n_order: int = 2, period: float = 52.0):
    """週次データの年次シーズナリティをフーリエ項で表現"""
    t = np.arange(len(dates)) / period
    terms = {}
    for n in range(1, n_order + 1):
        terms[f"sin_{n}"] = np.sin(2 * np.pi * n * t)
        terms[f"cos_{n}"] = np.cos(2 * np.pi * n * t)
    return pd.DataFrame(terms, index=dates)

# n_order=2: 年次の大まかな季節変動を4つの基底関数で表現
seasonality = fourier_terms(df["date"], n_order=2)

n_orderの選択指針

  • n_order=1:ゆるやかな1山(例:夏ピーク型)
  • n_order=2:2山(例:春・秋ピーク型)
  • n_order=4:より細かい変動も捉える

続きはBasicプランで読めます

この先の内容(詳細な分析結果・具体的な数値・施策の全容)はBasicプラン以上のメンバー限定です。

関連記事