Comparer auto.arima() et ets() sur des données non saisonnières
La statistique AICc est utile pour sélectionner entre des modèles de la même classe. Par exemple, vous pouvez l’utiliser pour choisir un modèle ETS ou pour choisir un modèle ARIMA. En revanche, vous ne pouvez pas l’utiliser pour comparer ETS et ARIMA, car il s’agit de classes de modèles différentes.
À la place, vous pouvez utiliser la validation croisée en séries temporelles pour comparer un modèle ARIMA et un modèle ETS sur les données austa. Comme tsCV() nécessite des fonctions qui renvoient des objets de prévision, vous allez définir de simples fonctions qui ajustent les modèles et renvoient les prévisions. Les arguments de tsCV() sont une série temporelle, une fonction de prévision et l’horizon de prévision h. Examinez cet extrait 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 également que les opérateurs pipe en R prennent la valeur située à gauche et la passent comme argument à ce qui est à droite, étape par étape, de gauche à droite. Voici un exemple basé sur un code vu dans un chapitre précédent :
# Tracer des prévisions à 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. Une fois encore, austa a été chargé dans votre espace de travail.
Cet exercice fait partie du cours
Prévision en R
Instructions
- Complétez la fonction
farima()pour produire les prévisions deauto.arima(). Suivez la structure du code préécrit dansfets()qui fait la même chose pourets(). - Calculez les erreurs avec validation croisée pour les modèles ETS sur
austaà l’aide detsCV()avec des erreurs à un pas, et enregistrez le résultat danse1. - Calculez les erreurs avec validation croisée pour les modèles ARIMA sur
austaà l’aide detsCV()avec des erreurs à un pas, et enregistrez le résultat danse2. - Calculez la MSE avec validation croisée pour chaque classe de modèles et supprimez les valeurs manquantes. Reportez-vous au chapitre précédent si vous ne vous souvenez plus comment calculer la MSE.
- Produisez et tracez des prévisions à 10 ans des valeurs futures de
austaen utilisant la meilleure classe de modèles.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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 %>% ___ %>% ____