Aan de slagGa gratis aan de slag

auto.arima() en ets() vergelijken op niet-seizoensgebonden data

De AICc-statistiek is handig om te kiezen tussen modellen binnen dezelfde modelklasse. Zo kun je er een ETS-model mee selecteren of een ARIMA-model. Je kunt er echter geen ETS- en ARIMA-modellen mee vergelijken, omdat die in verschillende modelklassen vallen.

In plaats daarvan kun je time series cross-validatie gebruiken om een ARIMA-model en een ETS-model op de austa-data te vergelijken. Omdat tsCV() functies vereist die forecast-objecten teruggeven, stel je een paar simpele functies op die de modellen fitten en de forecasts teruggeven. De argumenten van tsCV() zijn een tijdreeks, een forecast-functie en de voorspellingshorizon h. Bekijk deze code uit hoofdstuk 2:

e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
  e[, h] <- tsCV(goog, naive, h = h)
  ...

Bedenk verder dat pipe-operators in R de waarde van wat links staat stap voor stap doorgeven als argument aan wat rechts staat, van links naar rechts. Hier is een voorbeeld gebaseerd op code die je eerder zag:

# Maak 20-jaars-voorspellingen van de lynx-reeks gemodelleerd met ets()
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()

In deze oefening vergelijk je de MSE van twee forecast-functies toegepast op austa, en plot je forecasts van de functie die de beste voorspellingen maakt. Ook nu is austa al in je werkomgeving geladen.

Deze oefening maakt deel uit van de cursus

Voorspellen in R

Cursus bekijken

Oefeninstructies

  • Vul de functie farima() aan om de resultaten van auto.arima() te forecasten. Volg de structuur van de voorgeschreven code in fets() die hetzelfde doet voor ets().
  • Bereken cross-gevalideerde fouten voor ETS-modellen op austa met tsCV() met one-step errors en sla dit op in e1.
  • Bereken cross-gevalideerde fouten voor ARIMA-modellen op austa met tsCV() met one-step errors en sla dit op in e2.
  • Bereken de cross-gevalideerde MSE voor elke modelklasse en verwijder missende waarden. Raadpleeg het vorige hoofdstuk als je niet meer weet hoe je MSE berekent.
  • Maak en plot 10-jaars-voorspellingen van toekomstige waarden van austa met de beste modelklasse.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Set up forecast functions for ETS and ARIMA models
fets <- function(x, h) {
  forecast(ets(x), h = h)
}
farima <- function(x, h) {
  forecast(___, ___)
}

# Compute CV errors for ETS on austa as e1
e1 <- tsCV(austa, ___, ___)

# Compute CV errors for ARIMA on austa as e2
e2 <- tsCV(___, ___, ___)

# Find MSE of each model class
mean(___, ___)
mean(___, ___)

# Plot 10-year forecasts using the best model class
austa %>% ___ %>% ____
Code bewerken en uitvoeren