Como realizar um teste kpss em python
Um teste KPSS pode ser usado para determinar se uma série temporal tem uma tendência estacionária.
Este teste utiliza a seguinte hipótese nula e alternativa:
- H 0 : A série temporal tem tendência estacionária.
- HA : A série temporal não tem tendência estacionária.
Se o valor p do teste estiver abaixo de um determinado nível de significância (ex. α = 0,05), então rejeitamos a hipótese nula e concluímos que a série temporal não possui tendência estacionária.
Caso contrário, não conseguiremos rejeitar a hipótese nula.
Os exemplos a seguir mostram como realizar um teste KPSS em Python.
Exemplo 1: teste KPSS em Python (com dados estacionários)
Primeiro, vamos criar alguns dados falsos em Python para trabalhar:
import numpy as np
import matplotlib. pyplot as plt
#make this example reproducible
n.p. random . seed ( 1 )
#create time series data
data = np. random . normal (size= 100 )
#create line plot of time series data
plt. plot (data)
Podemos usar a função kpss() do pacote statsmodels para realizar um teste KPSS nestes dados de série temporal:
import statsmodels. api as sm
#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')
(0.0477617848370993,
0.1,
1,
{'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})
InterpolationWarning: The test statistic is outside of the range of p-values available
in the look-up table. The actual p-value is greater than the p-value returned.
Veja como interpretar o resultado:
- A estatística do teste KPSS: 0,04776
- O valor p: 0,1
- O parâmetro de deslocamento de truncamento: 1
- Valores críticos em 10% , 5% , 2,5% e 1%
O valor p é 0,1 . Como este valor não é inferior a 0,05, não rejeitamos a hipótese nula do teste KPSS.
Isso significa que podemos assumir que a série temporal tem uma tendência estacionária.
Nota 1 : O valor p ainda é maior que 0,1, mas o valor mais baixo que a função kpss() produzirá é 0,1.
Nota 2 : Você deve usar o argumento regressão=’ct’ para especificar que a hipótese nula do teste é que os dados têm uma tendência estacionária.
Exemplo 2: teste KPSS em Python (com dados não estacionários)
Primeiro, vamos criar alguns dados falsos em Python para trabalhar:
import numpy as np
import matplotlib. pyplot as plt
#make this example reproducible
n.p. random . seed ( 1 )
#create time series data
data =np. array ([0, 3, 4, 3, 6, 7, 5, 8, 15, 13, 19, 12, 29, 15, 45, 23, 67, 45])
#create line plot of time series data
plt. plot (data)
Novamente, podemos usar a função kpss() do pacote statsmodels para realizar um teste KPSS nestes dados de série temporal:
import statsmodels. api as sm
#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')
(0.15096358910843685,
0.04586367574296928,
3,
{'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})
Veja como interpretar o resultado:
- A estatística do teste KPSS: 0,1509
- O valor p: 0,0458
- O parâmetro de deslocamento de truncamento: 3
- Valores críticos em 10% , 5% , 2,5% e 1%
O valor p é 0,0458 . Sendo este valor inferior a 0,05, rejeitamos a hipótese nula do teste KPSS.
Isso significa que a série temporal não é estacionária.
Nota : Você pode encontrar a documentação completa para a função kpss() no pacote statsmodels aqui .
Recursos adicionais
Os tutoriais a seguir fornecem informações adicionais sobre como trabalhar com dados de série temporal em Python:
Como realizar um teste Dickey-Fuller aumentado em Python
Como realizar um teste de tendência Mann-Kendall em Python
Como traçar uma série temporal no Matplotlib