10.5 動学的ハーモニック回帰

季節周期が長い場合、フーリエ項を持つ動学的回帰が、本書で検討してきた他のモデルよりも良いことがよくあります。19

例えば、日次データには長さが365の年次季節性が、週次データには長さが約52の季節周期がある一方、半日単位のデータには複数の季節周期があり得、その一番短いものは長さ48の日次パターンです。

ARIMAモデルやETSモデルの季節性のあるバージョンはより短い季節周期、例えば、月次データの12や四半期データの4、向けに設計されています。ETS()モデルは、季節周期を最大24に制約しており、時間単位のデータまでは扱えますが、それより長い季節周期のデータは扱えません。\(m\)を季節周期とすると、初期の季節状態を表すのに\(m-1\)個のパラメータ推計が必要になることが問題になります。ですから、\(m\)が大きいと、推計はほぼ不可能になるのです。

ARIMA()関数は、\(m=350\)までの季節周期を許容しますが、実際には、季節周期がおおよそ200を超えるといつもメモリー不足になってしまいます。どんなケースであれ、ラグ数が大きい季節差分化はあまり意味を成しません。日次データでは、季節差分は今日起こったことと、丁度一年前に起こったこととの比較になる上、季節パターンを平滑にする制約もないので、意味があるように思えません。

ですから、そうした時系列には、ハーモニック回帰のアプローチが向いています。季節パターンはフーリエ項を使ってモデル化し、時系列の短期の強弱はARMA誤差で取り扱うのです。

このアプローチの利点は、以下の通りです。

  • どんな長さの季節性でも扱える。
  • 季節周期が複数あるデータでは、異なる周期のフーリエ項を含めることができる。
  • 季節パターンの平滑さは、フーリエ項のサインとコサインのペア数である\(K\)で調整できる。\(K\)を小さくすると、季節パターンはより平滑になる。
  • 短期の強弱は単純なARMA誤差で容易に扱える。

(季節性ARIMAモデルと比較して)唯一本当の欠点は、固定された季節性を想定することです。つまり、季節パターンは時とともに変化できません。しかし、実際には、季節性は通常驚くほど一定なので、長い時系列でなければ大きな欠点になりません。

事例: オーストラリアの外食支出

この事例では、データ内の季節性を取り込むフーリエ項と、その他強弱を取り込むARIMA誤差の組み合わせを実演します。話を簡単にするため、月次データの事例を使います。週次データを使った同じモデル化のアプローチについては、13.1節で議論します。

オーストラリアのカフェ、レストラン、テイクアウト・フードでの月次総支出(10億ドル)の2004年から2018年までのデータを使い、24カ月先まで予測します。フーリエ項のサインとコサインのペア数である\(K\)を、\(K=1\)から\(K=6\)(季節ダミーを含めるのと同値です)まで変えます。図10.11は、\(K\)を増やしたときに先まで推定された季節パターンを示しています。\(K\)が増えると、フーリエ項はより「魔法めいた」季節パターンを取り込んで推定し、その他の強弱を取り込むARIMAモデルはより単純になっていくことに留意してください。AICc値は、\(K=4\)から\(K=5\)にかけて大きく減少し、\(K=6\)で最小になっています。ですから、\(K=6\)のモデルからの予測を使うことになるでしょう。

aus_cafe <- aus_retail %>%
  filter(
    Industry == "Cafes, restaurants and takeaway food services",
    year(Month) %in% 2004:2018
  ) %>%
  summarise(Turnover = sum(Turnover))

fit <- model(aus_cafe,
  `K = 1` = ARIMA(log(Turnover) ~ fourier(K=1) + PDQ(0,0,0)),
  `K = 2` = ARIMA(log(Turnover) ~ fourier(K=2) + PDQ(0,0,0)),
  `K = 3` = ARIMA(log(Turnover) ~ fourier(K=3) + PDQ(0,0,0)),
  `K = 4` = ARIMA(log(Turnover) ~ fourier(K=4) + PDQ(0,0,0)),
  `K = 5` = ARIMA(log(Turnover) ~ fourier(K=5) + PDQ(0,0,0)),
  `K = 6` = ARIMA(log(Turnover) ~ fourier(K=6) + PDQ(0,0,0))
)

fit %>%
  forecast(h = "2 years") %>%
  autoplot(aus_cafe, level = 95) +
  facet_wrap(vars(.model), ncol = 2) +
  guides(colour = "none", fill = "none", level = "none") +
  geom_label(
    aes(x = yearmonth("2007 Jan"), y = 4250,
        label = paste0("AICc = ", format(AICc))),
    data = glance(fit)
  ) +
  labs(title= "月次外食支出",
       y="10億ドル")
オーストラリアの月次外食支出のフーリエ項とARIMA誤差を使った予測

図 10.11: オーストラリアの月次外食支出のフーリエ項とARIMA誤差を使った予測

参考文献

Young, P. C., Pedregal, D. J., & Tych, W. (1999). Dynamic harmonic regression. Journal of Forecasting, 18, 369–394. [DOI]

  1. 「動学的ハーモニック回帰」という用語は、時点ごとに異なるパラメータを持つハーモニック回帰にも使われることがあります。 (Young et al., 1999) ↩︎