Mit dem Kolmogorov-Smirnov-Test wird geprüft, ob eine Probe aus einer bestimmten Verteilung stammt oder nicht.

Um einen Kolmogorov-Smirnov-Test in Python durchzuführen, können wir scipy.stats.kstest() für einen Test mit einer Stichprobe oder scipy.stats.ks_2samp() für einen Test mit zwei Stichproben verwenden.

Dieses Tutorial zeigt ein Beispiel für die praktische Verwendung der einzelnen Funktionen.

Beispiel 1: Kolmogorov-Smirnov-Test mit einer Probe

Angenommen, wir haben die folgenden Beispieldaten:

from numpy.random import seed
from numpy.random import poisson

# Dieses Beispiel reproduzierbar machen
seed(0)

# Generieren Sie einen Datensatz mit 100 Werten, die einer Poisson-Verteilung mit Mittelwert = 5 folgen
data = poisson(5, 100)

Der folgende Code zeigt, wie ein Kolmogorov-Smirnov-Test an dieser Stichprobe von 100 Datenwerten durchgeführt wird, um festzustellen, ob sie aus einer Normalverteilung stammen:

from scipy.stats import kstest

# Kolmogorov-Smirnov-Test durchführen
kstest(data, 'norm')

KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)

Aus der Ausgabe können wir erkennen, dass die Teststatistik 0,9072 und der entsprechende p-Wert 1,0908e-103 beträgt. Da der p-Wert kleiner als 0,05 ist, lehnen wir die Nullhypothese ab. Wir haben genügend Beweise, um zu sagen, dass die Probendaten nicht aus einer Normalverteilung stammen.

Dieses Ergebnis sollte auch nicht überraschen, da wir die Beispieldaten mit der Funktion poisson() generiert haben, die Zufallswerte generiert, die einer Poisson-Verteilung folgen.

Beispiel 2: Kolmogorov-Smirnov-Test mit zwei Proben

Angenommen, wir haben die folgenden zwei Beispieldatensätze:

from numpy.random import seed
from numpy.random import randn
from numpy.random import lognormal

# Dieses Beispiel reproduzierbar machen
seed(0)

# Generieren Sie zwei Datensätze
data1 = randn(100)
data2 = lognormal(3, 1, 100)

Der folgende Code zeigt, wie ein Kolmogorov-Smirnov-Test an diesen beiden Proben durchgeführt wird, um festzustellen, ob sie aus derselben Verteilung stammen:

from scipy.stats import ks_2samp

# Kolmogorov-Smirnov-Test durchführen
ks_2samp(data1, data2)

KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)

Aus der Ausgabe können wir erkennen, dass die Teststatistik 0,99 und der entsprechende p-Wert 4,4175e-57 beträgt. Da der p-Wert kleiner als 0,05 ist, lehnen wir die Nullhypothese ab. Wir haben genügend Beweise, um zu sagen, dass die beiden Beispieldatensätze nicht aus derselben Verteilung stammen.

Dieses Ergebnis sollte auch nicht überraschen, da wir Werte für die erste Stichprobe unter Verwendung der Standardnormalverteilung und Werte für die zweite Stichprobe unter Verwendung der logarithmischen Normalverteilung generiert haben.

Zusätzliche Ressourcen

So führen Sie einen Shapiro-Wilk-Test in Python durch
So führen Sie einen Anderson-Darling-Test in Python durch

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: