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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *