週次データの予測
週次データでは、季節の周期が大きい(およそ 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を、季節性は回帰変数で扱うためseasonalはFALSEに設定します。 - 同様の方法で新しい
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
___