Previsioni semplici da un modello AR stimato
Ora che hai modellato i tuoi dati usando il comando arima(), sei pronto per fare previsioni semplici basate sul tuo modello. La funzione predict() può essere usata per ottenere previsioni da un modello AR stimato. Nell’oggetto generato dal comando predict(), il valore $pred è la previsione e il valore $se è l’errore standard della previsione.
Per fare previsioni per più periodi oltre le ultime osservazioni, puoi usare l’argomento n.ahead nel comando predict(). Questo argomento definisce l’orizzonte di previsione (h), ovvero il numero di periodi previsti. Le previsioni sono calcolate ricorsivamente da 1 fino a h passaggi in avanti a partire dalla fine della serie temporale osservata.
In questo esercizio farai previsioni semplici usando un modello AR applicato ai dati Nile, che riportano osservazioni annuali della portata del fiume Nilo dal 1871 al 1970.
Questo esercizio fa parte del corso
Analisi delle serie temporali in R
Istruzioni dell'esercizio
- Usa
arima()per adattare un modello AR alla serie temporaleNile. Salvalo comeAR_fit. - Usa
predict()per fare una previsione della portata del Nilo nel 1971. - Usa
predict_ARinsieme a$pred[1]per ottenere la previsione a 1 passo. - Fai un’altra chiamata a
predict()per ottenere previsioni da 1 a 10 passi in avanti (dal 1971 al 1980). Per farlo, imposta l’argomenton.aheaduguale a10. - Esegui il codice già scritto per tracciare i dati
Nileinsieme alle previsioni e a un intervallo di previsione al 95%.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Fit an AR model to Nile
AR_fit <- arima(___, order = ___)
print(AR_fit)
# Use predict() to make a 1-step forecast
predict_AR <- predict(___)
# Obtain the 1-step forecast using $pred[1]
# Use predict to make 1-step through 10-step forecasts
predict(___, n.ahead = ___)
# Run to plot the Nile series plus the forecast and 95% prediction intervals
ts.plot(Nile, xlim = c(1871, 1980))
AR_forecast <- predict(AR_fit, n.ahead = 10)$pred
AR_forecast_se <- predict(AR_fit, n.ahead = 10)$se
points(AR_forecast, type = "l", col = 2)
points(AR_forecast - 2*AR_forecast_se, type = "l", col = 2, lty = 2)
points(AR_forecast + 2*AR_forecast_se, type = "l", col = 2, lty = 2)