No tires todavía ese abrigo de invierno
Por último, pronosticarás la temperatura durante los próximos 30 años utilizando un modelo ARMA(1,1), incluyendo bandas de confianza en torno a esa estimación. Ten en cuenta que la estimación de la deriva tendrá un impacto mucho mayor en las previsiones a largo plazo que los parámetros ARMA.
Anteriormente, determinaste que los datos de temperatura siguen un camino aleatorio y estudiaste la primera diferenciación de los datos. En este ejercicio, utilizarás el módulo ARIMA en los datos de temperatura (antes de diferenciar), lo que es idéntico a utilizar el módulo ARMA en los cambios de temperatura, seguido de tomar las sumas acumuladas de estos cambios para obtener la previsión de temperatura.
Como las temperaturas tienden a subir con el tiempo, también tendrás que añadir un componente de tendencia cuando definas el modelo ARIMA. En el ejercicio, utilizarás una tendencia lineal con el tiempo estableciendo el argumento trend='t'
. También puedes probar otros modelos de tendencia para ver cómo cambian las previsiones. Por ejemplo, para una tendencia cuadrática \(\small a+ bt + ct^2\), establece trend=[0,1,1]
, para incluir tanto un término lineal, \(\small bt\), como un término cuadrático, \(\small ct^2\), en el modelo.
Los datos se cargan previamente en un DataFrame llamado temp_NY
.
Este ejercicio forma parte del curso
Análisis de Series Temporales en Python
Instrucciones de ejercicio
- Crea una instancia de la clase
ARIMA
llamadamod
para un modelo ARMA(1,1) integrado, o modelo ARIMA(1,1,1)- El
d
enorder(p,d,q)
es uno, ya que primero diferenciamos una vez - Ajusta
mod
utilizando el método.fit()
y llama a los resultadosres
- El
- Pronostica la serie utilizando el método
plot_predict()
enres
- Elige como fecha de inicio
1872
y como fecha final2046
- Elige como fecha de inicio
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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()