auto.arima() und ets() bei nicht-saisonalen Daten vergleichen
Die AICc-Kennzahl ist nützlich, um zwischen Modellen innerhalb derselben Klasse zu wählen. Du kannst sie z. B. verwenden, um ein ETS-Modell auszuwählen oder ein ARIMA-Modell. Du kannst damit aber keine ETS- und ARIMA-Modelle miteinander vergleichen, weil sie unterschiedlichen Modellklassen angehören.
Stattdessen kannst du mithilfe von Zeitreihen-Cross-Validation ein ARIMA- und ein ETS-Modell auf den austa-Daten vergleichen. Da tsCV() Funktionen benötigt, die Forecast-Objekte zurückgeben, legst du einfache Funktionen an, die die Modelle fitten und die Vorhersagen zurückgeben. Die Argumente von tsCV() sind eine Zeitreihe, eine Prognosefunktion und der Prognosehorizont h. Sieh dir diesen Codeausschnitt aus dem zweiten Kapitel an:
e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
e[, h] <- tsCV(goog, naive, h = h)
...
Erinnere dich außerdem: Pipe-Operatoren in R nehmen den Wert links und übergeben ihn schrittweise als Argument an das, was rechts steht – von links nach rechts. Hier ein Beispiel basierend auf Code aus einem früheren Kapitel:
# 20-Jahres-Prognosen der Lynx-Reihe, modelliert mit ets(), plotten
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()
In dieser Übung vergleichst du die MSE von zwei Prognosefunktionen, die auf austa angewendet werden, und plottest die Vorhersagen der Funktion, die die besten Prognosen liefert. austa wurde bereits in deinen Arbeitsbereich geladen.
Diese Übung ist Teil des Kurses
Prognosen mit R
Anleitung zur Übung
- Vervollständige die Funktion
farima(), um die Ergebnisse vonauto.arima()zu prognostizieren. Folge dabei der Struktur des vorgegebenen Codes infets(), der dasselbe fürets()macht. - Berechne mithilfe von
tsCV()mit Ein-Schritt-Fehlern die kreuzvalidierten Fehler für ETS-Modelle aufaustaund speichere sie ine1. - Berechne mithilfe von
tsCV()mit Ein-Schritt-Fehlern die kreuzvalidierten Fehler für ARIMA-Modelle aufaustaund speichere sie ine2. - Berechne die kreuzvalidierte MSE für jede Modellklasse und entferne fehlende Werte. Sieh im vorherigen Kapitel nach, falls du nicht mehr weißt, wie man die MSE berechnet.
- Erzeuge und plote 10-Jahres-Prognosen der zukünftigen Werte von
austamit der besten Modellklasse.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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 %>% ___ %>% ____