Teste dickey-fuller aumentado em python (com exemplo)
Uma série temporal é dita “estacionária” se não tem tendência, apresenta uma variância constante ao longo do tempo e tem uma estrutura de autocorrelação constante ao longo do tempo.
Uma maneira de testar se uma série temporal é estacionária é realizar um teste Dickey-Fuller aumentado , que usa as seguintes hipóteses nulas e alternativas:
H 0 : A série temporal é não estacionária. Em outras palavras, sua estrutura depende do tempo e sua variação não é constante ao longo do tempo.
HA : A série temporal é estacionária.
Se o valor p do teste estiver abaixo de um certo nível de significância (por exemplo, α = 0,05), então podemos rejeitar a hipótese nula e concluir que a série temporal é estacionária.
O exemplo passo a passo a seguir mostra como realizar um teste Dickey-Fuller aumentado em Python para uma determinada série temporal.
Exemplo: teste Dickey-Fuller aumentado em Python
Suponha que temos os seguintes dados de série temporal em Python:
data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]
Antes de realizar um teste Dickey-Fuller aumentado nos dados, podemos criar um gráfico rápido para visualizar os dados:
import matplotlib. pyplot as plt plt. plot (data)
Para realizar um teste Dickey-Fuller aumentado, podemos usar a função adfuller() da biblioteca statsmodels . Primeiro, precisamos instalar modelos de estatísticas:
pip install statsmodels
Então podemos usar o seguinte código para realizar o teste Dickey-Fuller aumentado:
from statsmodels. tsa . stattools import adfuller #perform augmented Dickey-Fuller test adfuller(data) (-0.9753836234744063, 0.7621363564361013, 0, 12, {'1%': -4.137829282407408, '5%': -3.1549724074074077, '10%': -2.7144769444444443}, 31.2466098872313)
Veja como interpretar os valores mais importantes do resultado:
- Estatística de teste: -0,97538
- Valor P: 0,7621
Como o valor p não é inferior a 0,05, não rejeitamos a hipótese nula.
Isso significa que a série temporal não é estacionária. Em outras palavras, sua estrutura depende do tempo e sua variação não é constante ao longo do tempo.
Recursos adicionais
Como traçar uma série temporal no Matplotlib
Como plotar várias séries de um DataFrame do Pandas
Como realizar um teste de tendência Mann-Kendall em Python