IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un’istanza della classe ARIMA chiamata mod per un modello ARMA(1,1) integrato, cioè un modello ARIMA(1,1,1)
    • La d in order(p,d,q) è uno, dato che abbiamo differenziato una volta
    • Esegui il fit di mod con il metodo .fit() e chiama res i risultati
  • Esegui il forecast della serie usando il metodo plot_predict() su res
    • Scegli come data di inizio 1872 e come data di fine 2046

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()
Modifica ed esegui il codice