So führen sie einen kolmogorov-smirnov-test in python durch


Mit dem Kolmogorov-Smirnov-Test wird getestet, ob eine Stichprobe 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: Eine Kolmogorov-Smirnov-Testprobe

Angenommen, wir haben die folgenden Beispieldaten:

 from numpy.random import seed
from numpy.random import fish

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 values that follows a Poisson distribution with mean=5
data = fish(5, 100)

Der folgende Code zeigt, wie man an dieser Stichprobe von 100 Datenwerten einen Kolmogorov-Smirnov-Test durchführt, um zu bestimmen, ob sie aus einer Normalverteilung stammen:

 from scipy.stats import kstest

#perform Kolmogorov-Smirnov test
kstest(data, ' norm ')

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

Aus dem Ergebnis können wir ersehen, dass die Teststatistik 0,9072 beträgt 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 dafür, dass die Stichprobendaten 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 einerPoisson-Verteilung folgen.

Beispiel 2: Kolmogorov-Smirnov-Test mit zwei Stichproben

Nehmen wir an, wir haben die folgenden zwei Beispieldatensätze:

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

#set seed (eg make this example reproducible)
seed(0)

#generate two datasets
data1 = randn(100)
data2 = lognormal(3, 1, 100)

Der folgende Code zeigt, wie ein Kolmogorov-Smirnov-Test für diese beiden Stichproben durchgeführt wird, um festzustellen, ob sie aus derselben Verteilung stammen:

 from scipy.stats import ks_2samp

#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)

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

Aus dem Ergebnis können wir ersehen, dass die Teststatistik 0,99 beträgt 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 dafür, dass die beiden Beispieldatensätze nicht aus derselben Verteilung stammen.

Dieses Ergebnis sollte auch nicht überraschend sein, da wir Werte für die erste Stichprobe mithilfe der Standardnormalverteilung und Werte für die zweite Stichprobe mithilfe der Lognormalverteilung 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

Einen Kommentar hinzufügen

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