始める無料で始める

週次データの予測

週次データでは、季節の周期が大きい(およそ 52)ため、ETS や ARIMA モデルで季節性を扱うのは難しいことがあります。そこで、サイン波とコサイン波で季節性を表現する調和回帰(harmonic regression)を使います。

fourier() 関数を使うと、必要な調和項を簡単に生成できます。次数($K$)が大きいほど、季節パターンはより「細かく」変動できるようになります。\(K=1\) なら単純な正弦曲線です。\(K\) の値は AICc を最小化するように選べます。ビデオで見たとおり、fourier() は必須の時系列、生成するフーリエ項の数、そして予測に必要な任意の行数を受け取ります。

> # fourier(x, K, h = NULL)

> fit <- auto.arima(cafe, xreg = fourier(cafe, K = 6),
                    seasonal = FALSE, lambda = 0)
> fit %>%
    forecast(xreg = fourier(cafe, K = 6, h = 24)) %>%
    autoplot() + ylim(1.6, 5.1)

あらかじめ読み込まれている gasoline データは、米国の完成モーターガソリン製品に関する週次データです。この演習では、このデータに調和回帰を適用し、今後3年間を予測します。

この演習はコースの一部です

Rで学ぶ予測入門

コースを見る

演習の手順

  • AICc を最小化するように選ばれた次数 \(K=13\) を用いて、gasoline に対して fourier() を使い、harmonics という名前の xreg 行列を作成します。
  • 動的回帰モデルを fit に当てはめます。xreg には harmonics を、季節性は回帰変数で扱うため seasonalFALSE に設定します。
  • 同様の方法で新しい xreg 行列 newharmonics を作成し、次の3年間の予測を fc として計算します。
  • 最後に、予測 fc をプロットします。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Set up harmonic regressors of order 13
harmonics <- fourier(___, K = ___)

# Fit regression model with ARIMA errors
fit <- auto.arima(___, xreg = ___, seasonal = ___)

# Forecasts next 3 years
newharmonics <- fourier(___, K = ___, h = ___)
fc <- forecast(___, xreg = ___)

# Plot forecasts fc
___
コードを編集して実行