Prognozarea datelor săptămânale
În cazul datelor săptămânale, gestionarea sezonalității prin modele ETS sau ARIMA este dificilă, deoarece lungimea sezonului este prea mare (aproximativ 52). În schimb, poți folosi regresia armonică, care utilizează sinusuri și cosinusuri pentru a modela sezonalitatea.
Funcția fourier() simplifică generarea armonicilor necesare. Cu cât ordinul (\(K\)) este mai mare, cu atât modelul de sezonalitate poate fi mai „ondulat". La \(K=1\), obții o simplă curbă sinusoidală. Valoarea lui \(K\) se poate alege prin minimizarea valorii AICc. Așa cum ai văzut în videoclip, fourier() primește ca argumente seria de timp necesară, numărul de termeni Fourier de generat și, opțional, numărul de rânduri pentru prognoză:
> # 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)
Setul de date preîncărcat gasoline conține date săptămânale despre produsele petroliere finite pentru motoare din SUA. În acest exercițiu, vei aplica o regresie armonică pe acest set de date și vei prognoza următorii 3 ani.
Acest exercițiu face parte din cursul
Prognoze în R
Instrucțiuni pentru exercițiu
- Creează o matrice
xregnumităharmonicsfolosind metodafourier()aplicată pegasoline, cu ordinul \(K=13\), ales pentru a minimiza AICc. - Antrenează un model de regresie dinamică în
fit. SeteazăxreglaharmonicsșiseasonallaFALSE, deoarece sezonalitatea este gestionată de regresori. - Creează o nouă matrice
xregnumitănewharmonicsîn mod similar, apoi calculează prognozele pentru următorii trei ani și stochează-le înfc. - În final, reprezintă grafic prognozele
fc.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
___