So führen sie einen kpss-test in python durch


Mit einem KPSS-Test kann festgestellt werden, ob eine Zeitreihe einen stationären Trend aufweist.

Dieser Test verwendet die folgende Null- und Alternativhypothese:

  • H 0 : Die Zeitreihe hat einen stationären Trend.
  • H A : Die Zeitreihe weist keinen stationären Trend auf.

Wenn der p-Wert des Tests unter einem bestimmten Signifikanzniveau liegt (z. B. α = 0,05), lehnen wir die Nullhypothese ab und kommen zu dem Schluss, dass die Zeitreihe keinen stationären Trend aufweist.

Andernfalls können wir die Nullhypothese nicht ablehnen.

Die folgenden Beispiele zeigen, wie Sie einen KPSS-Test in Python durchführen.

Beispiel 1: KPSS-Test in Python (mit stationären Daten)

Lassen Sie uns zunächst einige gefälschte Daten in Python erstellen, mit denen wir arbeiten können:

 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) 

Wir können die Funktion kpss() aus dem Paket statsmodels verwenden, um einen KPSS-Test für diese Zeitreihendaten durchzuführen:

 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.

So interpretieren Sie das Ergebnis:

  • Die KPSS-Teststatistik: 0,04776
  • Der p-Wert: 0,1
  • Der Kürzungsoffset-Parameter: 1
  • Kritische Werte bei 10 % , 5 % , 2,5 % und 1 %

Der p-Wert beträgt 0,1 . Da dieser Wert nicht kleiner als 0,05 ist, können wir die Nullhypothese des KPSS-Tests nicht ablehnen.

Das bedeutet, dass wir davon ausgehen können, dass die Zeitreihe einen stationären Trend aufweist.

Hinweis 1 : Der p-Wert ist tatsächlich immer noch größer als 0,1, aber der niedrigste Wert, den die Funktion kpss() erzeugt, ist 0,1.

Hinweis 2 : Sie müssen das Argument regression=’ct‘ verwenden, um anzugeben, dass die Nullhypothese des Tests darin besteht, dass die Daten einen stationären Trend aufweisen.

Beispiel 2: KPSS-Test in Python (mit instationären Daten)

Lassen Sie uns zunächst einige gefälschte Daten in Python erstellen, mit denen wir arbeiten können:

 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) 

Auch hier können wir die Funktion kpss() aus dem statsmodels- Paket verwenden, um einen KPSS-Test für diese Zeitreihendaten durchzuführen:

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

So interpretieren Sie das Ergebnis:

  • Die KPSS-Teststatistik: 0,1509
  • Der p-Wert: 0,0458
  • Der Kürzungsoffset-Parameter: 3
  • Kritische Werte bei 10 % , 5 % , 2,5 % und 1 %

Der p-Wert beträgt 0,0458 . Da dieser Wert kleiner als 0,05 ist, lehnen wir die Nullhypothese des KPSS-Tests ab.

Dies bedeutet, dass die Zeitreihe nicht stationär ist .

Hinweis : Die vollständige Dokumentation für die Funktion kpss() aus dem Paket statsmodels finden Sie hier .

Zusätzliche Ressourcen

Die folgenden Tutorials bieten zusätzliche Informationen zum Arbeiten mit Zeitreihendaten in Python:

So führen Sie einen erweiterten Dickey-Fuller-Test in Python durch
So führen Sie einen Mann-Kendall-Trendtest in Python durch
So zeichnen Sie eine Zeitreihe in Matplotlib

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert