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

Von Fabian
Kategorie: Python
Lesezeit: 3 Minuten

Der Shapiro-Wilk-Test ist ein Test der Normalität. Es wird verwendet, um zu bestimmen, ob eine Probe aus einer Normalverteilung stammt oder nicht.

Um einen Shapiro-Wilk-Test in Python durchzuführen, können wir die Funktion scipy.stats.shapiro() verwenden, die die folgende Syntax annimmt:

scipy.stats.shapiro(x)

wo:

  • x: Ein Array von Beispieldaten.

Diese Funktion gibt eine Teststatistik und einen entsprechenden p-Wert zurück. Wenn der p-Wert unter einem bestimmten Signifikanzniveau liegt, haben wir genügend Beweise, um zu sagen, dass die Probendaten nicht aus einer Normalverteilung stammen.

Dieses Tutorial zeigt einige Beispiele für die praktische Verwendung dieser Funktion.

Beispiel 1: Shapiro-Wilk-Test an normalverteilten Daten

Angenommen, wir haben die folgenden Beispieldaten:

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

# Dieses Beispiel reproduzierbar machen
seed(0)

# Generieren Sie einen Datensatz mit 100 Zufallswerten, die einer Standardnormalverteilung folgen
data = randn(100)

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

from scipy.stats import shapiro

# Shapiro-Wilk-Test durchführen
shapiro(data)

ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)

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

Dieses Ergebnis sollte nicht überraschen, da wir die Beispieldaten mit der Funktion randn() generiert haben, die Zufallswerte generiert, die einer Standardnormalverteilung folgen.

Beispiel 2: Shapiro-Wilk-Test an nicht normalverteilten Daten

Nehmen wir nun an, 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 Shapiro-Wilk-Test an dieser Stichprobe von 100 Datenwerten durchgeführt wird, um festzustellen, ob sie aus einer Normalverteilung stammen:

from scipy.stats import shapiro

# Shapiro-Wilk-Test durchführen
shapiro(data)

ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)

Aus der Ausgabe können wir erkennen, dass die Teststatistik 0,9582 und der entsprechende p-Wert 0,00299 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.

Zusätzliche Ressourcen

Shapiro-Wilk Testrechner
So führen Sie einen Shapiro-Wilk-Test in R durch
So führen Sie einen Anderson-Darling-Test in Python durch
So führen Sie einen Kolmogorov-Smirnov-Test in Python durch

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: