No guardes todavía ese abrigo de invierno
Por último, vas a pronosticar la temperatura de los próximos 30 años usando un modelo ARMA(1,1), incluyendo bandas de confianza alrededor de esa estimación. Ten en cuenta que la estimación de la deriva (drift) tendrá un impacto mucho mayor en los pronósticos a largo plazo que los parámetros ARMA.
Antes, determinaste que los datos de temperatura siguen un paseo aleatorio y analizaste la primera diferenciación de los datos. En este ejercicio, usarás el módulo ARIMA sobre los datos de temperatura (antes de diferenciar), lo cual es equivalente a usar el módulo ARMA sobre los cambios en la temperatura y luego tomar las sumas acumuladas de esos cambios para obtener el pronóstico de temperatura.
Como las temperaturas muestran una tendencia al alza con el tiempo, también tendrás que añadir un componente de tendencia al definir el modelo ARIMA. En el ejercicio, usará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 los pronósticos. 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 uno cuadrático, \(\small ct^2\), en el modelo.
Los datos están precargados en un DataFrame llamado temp_NY.
Este ejercicio forma parte del curso
Análisis de series temporales en Python
Instrucciones del ejercicio
- Crea una instancia de la clase
ARIMAllamadamodpara un modelo ARMA(1,1) integrado, es decir, un modelo ARIMA(1,1,1)- La
denorder(p,d,q)es uno, ya que hemos diferenciado una vez - Ajusta
modusando el método.fit()y llamaresa los resultados
- La
- Pronostica la serie usando el método
plot_predict()sobreres- Elige la fecha de inicio como
1872y la fecha de fin como2046
- Elige la fecha de inicio como
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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()