Não jogue fora aquele casaco de inverno ainda
Por fim, você fará uma previsão da temperatura nos próximos 30 anos usando um modelo ARMA(1,1), incluindo faixas de confiança em torno dessa estimativa. Lembre-se de que a estimativa da deriva terá um impacto muito maior nas previsões de longo prazo do que os parâmetros do ARMA.
Anteriormente, você determinou que os dados de temperatura seguem um passeio aleatório e analisou a primeira diferença entre os dados. Neste exercício, você usará o módulo ARIMA nos dados de temperatura (antes da diferenciação), o que é idêntico ao uso do módulo ARMA nas alterações de temperatura, seguido da obtenção de somas cumulativas dessas alterações para obter a previsão de temperatura.
Como as temperaturas estão tendendo a subir ao longo do tempo, você também precisará adicionar um componente de tendência ao definir o modelo ARIMA. No exercício, você usará uma tendência linear com o tempo, definindo o argumento trend='t'
. Você também pode experimentar outros modelos de tendência para ver como as previsões mudam. Por exemplo, para uma tendência quadrática \(\small a+ bt + ct^2\), defina trend=[0,1,1]
, para incluir um termo linear, \(\small bt\), e um termo quadrático, \(\small ct^2\), no modelo.
Os dados são pré-carregados em um DataFrame chamado temp_NY
.
Este exercício faz parte do curso
Análise de séries temporais em Python
Instruções de exercício
Crie uma instância da classe
ARIMA
chamadamod
para um modelo integrado ARMA(1,1) ou ARIMA(1,1,1)O
d
emorder(p,d,q)
é um, já que diferenciamos uma vezAjuste
mod
usando o método.fit()
e chame os resultados.res
Preveja a série usando o método
plot_predict()
emres
- Escolha a data de início como
1872
e a data de término como2046
- Escolha a data de início como
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# 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()