Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Maak een xreg-matrix met de naam harmonics met de methode fourier() op gasoline met orde \(K=13\), gekozen om de AICc te minimaliseren.
  • Pas een dynamisch regressiemodel aan fit. Stel xreg gelijk aan harmonics en seasonal op FALSE, omdat de seizoensinvloeden door de regressoren worden opgevangen.
  • Maak op vergelijkbare wijze een nieuwe xreg-matrix met de naam newharmonics en bereken vervolgens voorspellingen voor de komende drie jaar als fc.
  • 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
___
Code bewerken en uitvoeren