Comparer auto.arima() et ets() sur des données non saisonnières
La statistique AICc est utile pour choisir entre des modèles d'une même classe. Par exemple, vous pouvez l'utiliser pour choisir un modèle ETS ou pour choisir un modèle ARIMA. Cependant, vous ne pouvez pas l'utiliser pour comparer des modèles ETS et ARIMA, car ils appartiennent à des classes de modèles différentes.
À la place, vous pouvez utiliser la validation croisée en séries chronologiques pour comparer un modèle ARIMA et un modèle ETS sur les données austa. Comme tsCV() requiert des fonctions qui retournent des objets de prévision, vous allez définir quelques fonctions simples qui ajustent les modèles et retournent les prévisions. Les arguments de tsCV() sont une série chronologique, une fonction de prévision et l'horizon de prévision h. Examinez cet extrait de code du deuxième chapitre :
e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
e[, h] <- tsCV(goog, naive, h = h)
...
Rappelez-vous aussi que les opérateurs pipe en R prennent la valeur de ce qui est à gauche et la transmettent comme argument à ce qui est à droite, étape par étape, de gauche à droite. Voici un exemple basé sur du code vu dans un chapitre précédent :
# Tracer des prévisions sur 20 ans de la série lynx modélisée par ets()
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()
Dans cet exercice, vous allez comparer la MSE de deux fonctions de prévision appliquées à austa, puis tracer les prévisions de la fonction qui donne les meilleurs résultats. Encore une fois, austa a été chargé dans votre espace de travail.
Cette activité fait partie du cours
Prévision en R
Instructions de l’exercice
- Complétez la fonction
farima()pour prévoir les résultats deauto.arima(). Suivez la structure du code déjà écrit dansfets()qui fait la même chose pourets(). - Calculez les erreurs validées croisé pour les modèles ETS sur
austaà l'aide detsCV()avec des erreurs à un pas, et enregistrez le résultat danse1. - Calculez les erreurs validées croisé pour les modèles ARIMA sur
austaà l'aide detsCV()avec des erreurs à un pas, et enregistrez le résultat danse2. - Calculez la MSE validée croisée pour chaque classe de modèles et retirez les valeurs manquantes. Reportez-vous au chapitre précédent si vous ne vous rappelez plus comment calculer la MSE.
- Produisez et tracez des prévisions sur 10 ans des valeurs futures de
austaen utilisant la meilleure classe de modèles.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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 %>% ___ %>% ____