Jak wykonać test kpss w pythonie


Test KPSS można zastosować do ustalenia, czy szereg czasowy ma trend stacjonarny.

W teście tym wykorzystuje się następującą hipotezę zerową i alternatywną:

  • H 0 : Szereg czasowy ma trend stacjonarny.
  • H A : Szereg czasowy nie ma trendu stacjonarnego.

Jeżeli wartość p testu jest poniżej pewnego poziomu istotności (np. α = 0,05), wówczas odrzucamy hipotezę zerową i stwierdzamy, że szereg czasowy nie ma tendencji stacjonarnej.

W przeciwnym razie nie uda nam się odrzucić hipotezy zerowej.

Poniższe przykłady pokazują, jak wykonać test KPSS w Pythonie.

Przykład 1: Test KPSS w Pythonie (z danymi stacjonarnymi)

Najpierw utwórzmy fałszywe dane w Pythonie, z którymi będziemy mogli pracować:

 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) 

Możemy użyć funkcji kpss() z pakietu statsmodels , aby przeprowadzić test KPSS na danych szeregów czasowych:

 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.

Oto jak zinterpretować wynik:

  • Statystyka testu KPSS: 0,04776
  • Wartość p: 0,1
  • Parametr przesunięcia obcięcia: 1
  • Wartości krytyczne przy 10% , 5% , 2,5% i 1%

Wartość p wynosi 0,1 . Ponieważ wartość ta jest nie mniejsza niż 0,05, nie można odrzucić hipotezy zerowej testu KPSS.

Oznacza to, że możemy założyć, że szereg czasowy ma trend stacjonarny.

Uwaga 1 : Wartość p jest w rzeczywistości nadal większa niż 0,1, ale najniższa wartość, jaką wygeneruje funkcja kpss() to 0,1.

Uwaga 2 : Należy użyć argumentu regression=’ct’ , aby określić, że hipoteza zerowa testu zakłada, że dane mają trend stacjonarny.

Przykład 2: Test KPSS w Pythonie (z danymi niestacjonarnymi)

Najpierw utwórzmy fałszywe dane w Pythonie, z którymi będziemy mogli pracować:

 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) 

Ponownie możemy użyć funkcji kpss() z pakietu statsmodels , aby przeprowadzić test KPSS na danych szeregów czasowych:

 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})

Oto jak zinterpretować wynik:

  • Statystyka testu KPSS: 0,1509
  • Wartość p: 0,0458
  • Parametr przesunięcia obcięcia: 3
  • Wartości krytyczne przy 10% , 5% , 2,5% i 1%

Wartość p wynosi 0,0458 . Wartość ta jest mniejsza niż 0,05, więc odrzucamy hipotezę zerową testu KPSS.

Oznacza to, że szereg czasowy nie jest stacjonarny.

Uwaga : Pełną dokumentację funkcji kpss() można znaleźć w pakiecie statsmodels tutaj .

Dodatkowe zasoby

Poniższe samouczki zawierają dodatkowe informacje na temat pracy z danymi szeregów czasowych w języku Python:

Jak wykonać rozszerzony test Dickeya-Fullera w Pythonie
Jak wykonać test trendu Manna-Kendalla w Pythonie
Jak wykreślić szereg czasowy w Matplotlib

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *