開始使用免費開始

多重季節性的諧波迴歸

當時間序列同時具有多個季節性模式時,諧波迴歸也很有用。舉例來說,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
___
編輯並執行程式碼