開始使用免費開始

每週資料的預測

對於每週資料,用 ETS 或 ARIMA 模型處理季節性會很困難,因為季節長度太大(約 52)。你可以改用諧波迴歸(harmonic regression),以正弦與餘弦來刻畫季節性。

fourier() 函式能輕鬆產生所需的諧波項。階數($K$)越高,允許的季節型態就越「彎曲」。當 \(K=1\) 時,就是一條單純的正弦曲線。你可以透過最小化 AICc 值來選擇合適的 $K$。如同影片所示,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 的時間序列預測

檢視課程

練習說明

  • 使用 fourier() 套用在 gasoline 上,並將階數設為 $K=13$(此值可最小化 AICc),建立名為 harmonicsxreg 矩陣。
  • 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
___
編輯並執行程式碼