scipy.stats.

shapiro#

scipy.stats.shapiro(x, *, axis=None, nan_policy='propagate', keepdims=False)[Quellcode]#

Führt den Shapiro-Wilk-Test auf Normalverteilung durch.

Der Shapiro-Wilk-Test prüft die Nullhypothese, dass die Daten aus einer Normalverteilung stammen.

Parameter:
xarray_like

Array von Stichprobendaten. Muss mindestens drei Beobachtungen enthalten.

axisint oder None, Standard: None

Wenn es sich um eine ganze Zahl handelt, ist dies die Achse des Eingabearrays, entlang der die Statistik berechnet wird. Die Statistik jedes Achsen-Slices (z. B. Zeile) der Eingabe erscheint dann in einem entsprechenden Element der Ausgabe. Wenn None, wird die Eingabe vor der Berechnung der Statistik geglättet.

nan_policy{‘propagate’, ‘omit’, ‘raise’}

Definiert, wie Eingabe-NaNs behandelt werden.

  • propagate: Wenn ein NaN in der Achsen-Slice (z. B. Zeile) vorhanden ist, entlang der die Statistik berechnet wird, wird der entsprechende Eintrag der Ausgabe NaN sein.

  • omit: NaNs werden bei der Berechnung weggelassen. Wenn im Achsen-Slice, entlang dem die Statistik berechnet wird, nicht genügend Daten verbleiben, wird der entsprechende Eintrag der Ausgabe NaN sein.

  • raise: Wenn ein NaN vorhanden ist, wird ein ValueError ausgelöst.

keepdimsbool, Standard: False

Wenn dies auf True gesetzt ist, bleiben die reduzierten Achsen im Ergebnis als Dimensionen mit der Größe eins erhalten. Mit dieser Option wird das Ergebnis korrekt gegen das Eingabearray gestreut (broadcasted).

Rückgabe:
statisticfloat

Die Teststatistik.

p-Wertfloat

Der p-Wert für den Hypothesentest.

Siehe auch

anderson

Der Anderson-Darling-Test auf Normalverteilung

kstest

Der Kolmogorov-Smirnov-Test auf Anpassungsgüte.

Shapiro-Wilk-Test auf Normalität

Erweitertes Beispiel

Hinweise

Der verwendete Algorithmus wird in [4] beschrieben, aber die dort genannten Zensurparameter sind nicht implementiert. Für N > 5000 ist die W-Teststatistik genau, aber der p-Wert ist möglicherweise nicht.

Seit SciPy 1.9 werden np.matrix-Eingaben (für neuen Code nicht empfohlen) vor der Berechnung in np.ndarray konvertiert. In diesem Fall ist die Ausgabe eine Skalar- oder np.ndarray mit geeigneter Form anstelle eines 2D-np.matrix. Ebenso werden, während maskierte Elemente von Masked Arrays ignoriert werden, die Ausgabe eine Skalar- oder np.ndarray anstelle eines Masked Arrays mit mask=False sein.

Referenzen

[2]

Shapiro, S. S. & Wilk, M.B, „An analysis of variance test for normality (complete samples)“, Biometrika, 1965, Vol. 52, S. 591-611, DOI:10.2307/2333709

[3]

Razali, N. M. & Wah, Y. B., „Power comparisons of Shapiro-Wilk, Kolmogorov-Smirnov, Lilliefors and Anderson-Darling tests“, Journal of Statistical Modeling and Analytics, 2011, Vol. 2, S. 21-33.

[4]

Royston P., „Remark AS R94: A Remark on Algorithm AS 181: The W-test for Normality“, 1995, Applied Statistics, Vol. 44, DOI:10.2307/2986146

Beispiele

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> x = stats.norm.rvs(loc=5, scale=3, size=100, random_state=rng)
>>> shapiro_test = stats.shapiro(x)
>>> shapiro_test
ShapiroResult(statistic=0.9813305735588074, pvalue=0.16855233907699585)
>>> shapiro_test.statistic
0.9813305735588074
>>> shapiro_test.pvalue
0.16855233907699585

Ein detaillierteres Beispiel finden Sie unter Shapiro-Wilk-Test auf Normalverteilung.