Non riporre ancora quel cappotto invernale
Per finire, farai il forecast della temperatura per i prossimi 30 anni usando un modello ARMA(1,1), includendo le bande di confidenza attorno a quella stima. Tieni presente che la stima del drift avrà un impatto molto maggiore sulle previsioni di lungo periodo rispetto ai parametri ARMA.
In precedenza, hai stabilito che i dati di temperatura seguono un random walk e hai considerato la prima differenziazione dei dati. In questo esercizio userai il modulo ARIMA sui dati di temperatura (prima della differenziazione), che è equivalente a usare il modulo ARMA sulle variazioni di temperatura, per poi fare le somme cumulative di queste variazioni per ottenere il forecast della temperatura.
Poiché le temperature mostrano una tendenza crescente nel tempo, dovrai anche aggiungere una componente di trend quando definisci il modello ARIMA. Nell’esercizio userai un trend lineare nel tempo impostando l’argomento trend='t'. Puoi anche provare altri modelli di trend per vedere come cambiano le previsioni. Ad esempio, per un trend quadratico \(\small a+ bt + ct^2\), imposta trend=[0,1,1], per includere sia il termine lineare, \(\small bt\), sia il termine quadratico, \(\small ct^2\), nel modello.
I dati sono già caricati in un DataFrame chiamato temp_NY.
Questo esercizio fa parte del corso
Analisi delle serie temporali in Python
Istruzioni dell'esercizio
- Crea un’istanza della classe
ARIMAchiamatamodper un modello ARMA(1,1) integrato, cioè un modello ARIMA(1,1,1)- La
dinorder(p,d,q)è uno, dato che abbiamo differenziato una volta - Esegui il fit di
modcon il metodo.fit()e chiamaresi risultati
- La
- Esegui il forecast della serie usando il metodo
plot_predict()sures- Scegli come data di inizio
1872e come data di fine2046
- Scegli come data di inizio
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_predict
# Forecast temperatures using an ARIMA(1,1,1) model
mod = ARIMA(temp_NY, trend='t', order=(1,1,1))
___ = ___.fit()
# Plot the original series and the forecasted series
fig, ax = plt.subplots()
temp_NY.plot(ax=ax)
plot_predict(___, start='1872', end='2046', ax=ax)
plt.show()