Tornando séries temporais estacionárias

Modelos ARIMA em Python

James Fulton

Climate informatics researcher

Visão geral

  • Testes estatísticos de estacionariedade
  • Tornar um conjunto de dados estacionário
Modelos ARIMA em Python

O teste de Dickey-Fuller aumentado

  • Testes para não estacionariedade por tendência
  • Hipótese nula: a série temporal é não estacionária
Modelos ARIMA em Python

Aplicando o teste adfuller

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
Modelos ARIMA em Python

Interpretando o resultado

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • O 0º elemento é a estatística de teste (-1.34)
    • Quanto mais negativa, maior a chance de ser estacionária
  • O 1º elemento é o p-valor: (0.60)
    • Se o p-valor é pequeno $\rightarrow$ rejeite a hipótese nula. Rejeite a não estacionariedade.
  • O 4º elemento são as estatísticas críticas do teste
Modelos ARIMA em Python

Interpretando o resultado

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • O 0º elemento é a estatística de teste (-1.34)
    • Quanto mais negativa, maior a chance de ser estacionária
  • O 1º elemento é o p-valor: (0.60)
    • Se o p-valor é pequeno $\rightarrow$ rejeite a hipótese nula. Rejeite a não estacionariedade.
  • O 4º elemento são as estatísticas críticas do teste
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
Modelos ARIMA em Python

O valor de plotar

  • Plotar séries temporais evita suposições equivocadas
Modelos ARIMA em Python

O valor de plotar

Modelos ARIMA em Python

Tornando uma série temporal estacionária

Modelos ARIMA em Python

Aplicando a diferença

Diferença: $\Delta y_t = y_t - y_{t-1}$

Modelos ARIMA em Python

Aplicando a diferença

df_stationary = df.diff()
            city_population
date                       
1969-09-30              NaN
1970-03-31        -0.116156
1970-09-30         0.050850
1971-03-31        -0.153261
1971-09-30         0.108389
Modelos ARIMA em Python

Aplicando a diferença

df_stationary = df.diff().dropna()
            city_population
date                       
1970-03-31        -0.116156
1970-09-30         0.050850
1971-03-31        -0.153261
1971-09-30         0.108389
1972-03-31        -0.029569
Modelos ARIMA em Python

Aplicando a diferença

Modelos ARIMA em Python

Outras transformações

Exemplos de outras transformações

  • Tirar o log
    • np.log(df)
  • Tirar a raiz quadrada
    • np.sqrt(df)
  • Tirar a variação proporcional
    • df.shift(1)/df
Modelos ARIMA em Python

Vamos praticar!

Modelos ARIMA em Python

Preparing Video For Download...