it-swarm.com.de

Kolmogorov-Smirnov-Test mit zwei Proben in Python Scipy

Ich kann nicht herausfinden, wie man einen Test mit zwei Stichproben KS in Scipy durchführt.

Nach dem Lesen der Dokumentation scipy kstest

Ich kann sehen, wie man prüft, wo eine Verteilung mit der Standardnormalverteilung identisch ist

from scipy.stats import kstest
import numpy as np

x = np.random.normal(0,1,1000)
test_stat = kstest(x, 'norm')
#>>> test_stat
#(0.021080234718821145, 0.76584491300591395)

Dies bedeutet, dass wir bei einem p-Wert von 0,76 die Nullhypothese nicht ablehnen können, dass die beiden Verteilungen identisch sind.

Ich möchte jedoch zwei Distributionen vergleichen und sehen, ob ich die Nullhypothese ablehnen kann, dass sie identisch sind, etwa:

from scipy.stats import kstest
import numpy as np

x = np.random.normal(0,1,1000)
z = np.random.normal(1.1,0.9, 1000)

und testen Sie, ob x und z identisch sind

Ich habe den Naiven ausprobiert:

test_stat = kstest(x, z)

und bekam folgenden Fehler:

TypeError: 'numpy.ndarray' object is not callable

Gibt es eine Möglichkeit, einen KS -Test mit zwei Stichproben in Python durchzuführen? Wenn ja, wie soll ich das machen?

Danke im Voraus

53
Akavall

Sie verwenden den One-Sample-Test KS. Sie wollen wahrscheinlich ks_2samp :

>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>> 
>>> np.random.seed(12345678)
>>> x = np.random.normal(0, 1, 1000)
>>> y = np.random.normal(0, 1, 1000)
>>> z = np.random.normal(1.1, 0.9, 1000)
>>> 
>>> ks_2samp(x, y)
Ks_2sampResult(statistic=0.022999999999999909, pvalue=0.95189016804849647)
>>> ks_2samp(x, z)
Ks_2sampResult(statistic=0.41800000000000004, pvalue=3.7081494119242173e-77)
80
DSM

Das sagen die scipy-Dokumente: 

Wenn die K-S-Statistik klein oder der p-Wert hoch ist, können wir die Hypothese, dass die Verteilungen der beiden Proben gleich sind, nicht ablehnen.

Nicht ablehnen bedeutet nicht, dass wir bestätigen.

0
jun 小嘴兔