Confrontare auto.arima() ed ets() su dati non stagionali
La statistica AICc è utile per scegliere tra modelli della stessa classe. Per esempio, puoi usarla per scegliere un modello ETS oppure per scegliere un modello ARIMA. Tuttavia, non puoi usarla per confrontare ETS e ARIMA perché appartengono a classi di modelli diverse.
In alternativa, puoi usare la cross-validation per serie temporali per confrontare un modello ARIMA e un modello ETS sui dati austa. Poiché tsCV() richiede funzioni che restituiscano oggetti di previsione, imposterai alcune semplici funzioni che adattano i modelli e restituiscono le previsioni. Gli argomenti di tsCV() sono una serie temporale, una funzione di previsione e l’orizzonte di previsione h. Esamina questo frammento di codice dal secondo capitolo:
e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
e[, h] <- tsCV(goog, naive, h = h)
...
Ricorda inoltre che gli operatori pipe in R prendono il valore a sinistra e lo passano come argomento a ciò che si trova a destra, passo dopo passo, da sinistra a destra. Ecco un esempio basato su codice che hai visto in un capitolo precedente:
# Rappresenta le previsioni a 20 anni della serie lynx modellata con ets()
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()
In questo esercizio confronterai la MSE di due funzioni di previsione applicate a austa, e traccerai le previsioni della funzione che produce le previsioni migliori. Anche qui, austa è stato caricato nel tuo workspace.
Questo esercizio fa parte del corso
Previsioni in R
Istruzioni dell'esercizio
- Compila la funzione
farima()per prevedere i risultati diauto.arima(). Segui la struttura del codice pre-scritto infets()che fa lo stesso perets(). - Calcola gli errori cross-validati per i modelli ETS su
austausandotsCV()con errori a un passo e salva il risultato ine1. - Calcola gli errori cross-validati per i modelli ARIMA su
austausandotsCV()con errori a un passo e salva il risultato ine2. - Calcola la MSE cross-validata per ciascuna classe di modelli e rimuovi i valori mancanti. Se non ricordi come si calcola la MSE, fai riferimento al capitolo precedente.
- Produci e traccia previsioni a 10 anni dei valori futuri di
austautilizzando la classe di modelli migliore.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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 %>% ___ %>% ____