anderson_ksamp#
- scipy.stats.anderson_ksamp(samples, midrank=True, *, method=None)[Quelle]#
Der Anderson-Darling-Test für k-Stichproben.
Der k-Stichproben-Anderson-Darling-Test ist eine Modifikation des Ein-Stichproben-Anderson-Darling-Tests. Er testet die Nullhypothese, dass k Stichproben aus derselben Grundgesamtheit stammen, ohne die Verteilungsfunktion dieser Grundgesamtheit angeben zu müssen. Die kritischen Werte hängen von der Anzahl der Stichproben ab.
- Parameter:
- samplesSequenz von 1-D array_like
Array von Stichprobendaten in Arrays.
- midrankbool, optional
Art des zu berechnenden Anderson-Darling-Tests. Standard (True) ist der Midrank-Test, der für kontinuierliche und diskrete Grundgesamtheiten anwendbar ist. Wenn False, wird die empirische Verteilung auf der rechten Seite verwendet.
- methodPermutationMethod, optional
Definiert die Methode zur Berechnung des p-Wertes. Wenn method eine Instanz von
PermutationMethodist, wird der p-Wert unter Verwendung vonscipy.stats.permutation_testmit den bereitgestellten Konfigurationsoptionen und anderen geeigneten Einstellungen berechnet. Andernfalls wird der p-Wert aus tabellierten Werten interpoliert.
- Rückgabe:
- resAnderson_ksampResult
Ein Objekt, das Attribute enthält
- statisticfloat
Normalisierter k-Stichproben-Anderson-Darling-Teststatistik.
- critical_valuesarray
Die kritischen Werte für die Signifikanzniveaus 25%, 10%, 5%, 2,5%, 1%, 0,5%, 0,1%.
- pvaluefloat
Der ungefähre p-Wert des Tests. Wenn method nicht angegeben ist, wird der Wert auf 0,1% / 25% abgerundet/begrenzt.
- Löst aus:
- ValueError
Wenn weniger als 2 Stichproben bereitgestellt werden, eine Stichprobe leer ist oder keine eindeutigen Beobachtungen in den Stichproben vorhanden sind.
Siehe auch
Hinweise
[1] definiert drei Versionen des k-Stichproben-Anderson-Darling-Tests: eine für kontinuierliche Verteilungen und zwei für diskrete Verteilungen, bei denen Bindungen zwischen Stichproben auftreten können. Standardmäßig berechnet diese Routine die Version basierend auf der Midrank-empirischen Verteilungsfunktion. Dieser Test ist für kontinuierliche und diskrete Daten anwendbar. Wenn midrank auf False gesetzt ist, wird die empirische Verteilung auf der rechten Seite für einen Test auf diskrete Daten verwendet. Gemäß [1] unterscheiden sich die beiden diskreten Teststatistiken nur geringfügig, wenn einige Kollisionen aufgrund von Rundungsfehlern im nicht an Bindungen zwischen Stichproben angepassten Test auftreten.
Die kritischen Werte, die den Signifikanzniveaus von 0,01 bis 0,25 entsprechen, stammen aus [1]. Die p-Werte werden auf 0,1% / 25% abgerundet/begrenzt. Da der Bereich der kritischen Werte in zukünftigen Versionen erweitert werden könnte, wird empfohlen, nicht
p == 0.25zu testen, sondern eherp >= 0.25(analog für die untere Grenze).Hinzugefügt in Version 0.14.0.
Referenzen
Beispiele
>>> import numpy as np >>> from scipy import stats >>> rng = np.random.default_rng() >>> res = stats.anderson_ksamp([rng.normal(size=50), ... rng.normal(loc=0.5, size=30)]) >>> res.statistic, res.pvalue (1.974403288713695, 0.04991293614572478) >>> res.critical_values array([0.325, 1.226, 1.961, 2.718, 3.752, 4.592, 6.546])
Die Nullhypothese, dass die beiden Zufallsstichproben aus derselben Verteilung stammen, kann auf dem 5%-Niveau verworfen werden, da der zurückgegebene Testwert größer als der kritische Wert für 5% (1,961) ist, aber nicht auf dem 2,5%-Niveau. Die Interpolation ergibt einen ungefähren p-Wert von 4,99%.
>>> samples = [rng.normal(size=50), rng.normal(size=30), ... rng.normal(size=20)] >>> res = stats.anderson_ksamp(samples) >>> res.statistic, res.pvalue (-0.29103725200789504, 0.25) >>> res.critical_values array([ 0.44925884, 1.3052767 , 1.9434184 , 2.57696569, 3.41634856, 4.07210043, 5.56419101])
Die Nullhypothese kann für drei Stichproben aus einer identischen Verteilung nicht verworfen werden. Der angegebene p-Wert (25%) wurde gekappt und ist möglicherweise nicht sehr genau (da er dem Wert 0,449 entspricht, während die Statistik -0,291 ist).
In solchen Fällen, in denen der p-Wert gekappt ist oder die Stichprobengrößen klein sind, kann ein Permutationstest genauer sein.
>>> method = stats.PermutationMethod(n_resamples=9999, random_state=rng) >>> res = stats.anderson_ksamp(samples, method=method) >>> res.pvalue 0.5254