Wekelijkse data voorspellen
Bij wekelijkse data is het lastig om seizoenspatronen te modelleren met ETS- of ARIMA-modellen, omdat de seizoenslengte te groot is (ongeveer 52). In plaats daarvan kun je harmonische regressie gebruiken, die sinussen en cosinussen gebruikt om de seizoensinvloeden te modelleren.
De functie fourier() maakt het makkelijk om de benodigde harmonischen te genereren. Hoe hoger de orde (\(K\)), hoe "golvender" het seizoenspatroon mag zijn. Met \(K=1\) is het een eenvoudige sinuscurve. Je kunt de waarde van \(K\) kiezen door de AICc te minimaliseren. Zoals je in de video zag, neemt fourier() een vereiste tijdreeks, het vereiste aantal te genereren Fourittermen en optioneel het aantal rijen dat nodig is voor de voorspelling:
> # 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)
De vooraf geladen gasoline-gegevens bevatten wekelijkse gegevens over Amerikaanse eindproducten van motorbenzine. In deze oefening pas je een harmonische regressie toe op deze gegevensset en voorspel je de komende 3 jaar.
Deze oefening maakt deel uit van de cursus
Voorspellen in R
Oefeninstructies
- Maak een
xreg-matrix met de naamharmonicsmet de methodefourier()opgasolinemet orde \(K=13\), gekozen om de AICc te minimaliseren. - Pas een dynamisch regressiemodel aan
fit. Stelxreggelijk aanharmonicsenseasonalopFALSE, omdat de seizoensinvloeden door de regressoren worden opgevangen. - Maak op vergelijkbare wijze een nieuwe
xreg-matrix met de naamnewharmonicsen bereken vervolgens voorspellingen voor de komende drie jaar alsfc. - Plot tot slot de voorspellingen
fc.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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
___