多重季節性的諧波迴歸
當時間序列同時具有多個季節性模式時,諧波迴歸也很有用。舉例來說,taylor 包含英格蘭與威爾斯在 2000 年某幾個月的半小時用電需求。其季節週期為 48(每日季節性)以及 7 × 48 = 336(每週季節性)。資料量不足以考慮年度季節性。
auto.arima() 在這類長時間序列上擬合會花很久,因此本題改用 tslm() 函式,透過 Fourier 項來擬合標準的迴歸模型。它與 lm() 非常類似,但專為處理時間序列而設計。面對多重季節性時,你需要為每個季節週期指定階數 K。
# formula 引數是將要擬合之模型的
# 符號式描述
> args(tslm)
function (formula, ...)
tslm() 是本章新介紹的函式,因此多數情況下你可以直接依照已寫好的程式碼進行。taylor 資料已載入到你的工作環境。
本練習屬於課程
R 的時間序列預測
練習說明
- 以每種季節性階數皆為 10,對
taylor擬合一個名為fit的諧波迴歸。 - 將未來 20 個工作天的預測存為
fc。記得資料是半小時頻率,以設定正確的h值。 - 繪製預測的時間圖。
- 檢查你所擬合模型的殘差。你會發現,
auto.arima()可能會做得更好。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Fit a harmonic regression using order 10 for each type of seasonality
fit <- tslm(taylor ~ fourier(___, K = c(10, 10)))
# Forecast 20 working days ahead
fc <- forecast(___, newdata = data.frame(fourier(___, K = ___, h = ___)))
# Plot the forecasts
___
# Check the residuals of fit
___