So führen sie einen anderson-darling-test in python durch
Ein Anderson-Darling-Test ist ein Anpassungstest, der misst, wie gut Ihre Daten zu einer bestimmten Verteilung passen.
Dieser Test wird am häufigsten verwendet, um festzustellen, ob Ihre Daten einer Normalverteilung folgen oder nicht.
Diese Art von Test eignet sich zum Testen der Normalität, einer häufig verwendeten Annahme in vielen statistischen Tests, einschließlich Regression , ANOVA , T-Tests und vielen anderen.
Beispiel: Anderson-Darling-Test in Python
Um einen Anderson-Darling-Test in Python durchzuführen, können wir die Funktion anderson() aus der Bibliothek scipy.stats verwenden, die die folgende Syntax verwendet:
Anderson(x, dist=’norm‘)
Gold:
- x : Tabelle mit Beispieldaten
- dist : der Verteilungstyp, auf dem getestet werden soll. Der Standardwert ist „Standard“, Sie können aber auch „Expon“ oder „Logistik“ angeben.
So führen Sie beispielsweise einen Anderson-Darling-Test an einer Stichprobe von 50 normalverteilten Zufallsvariablen durch:
import numpy as np #create data np.random.seed(0) data = np.random.normal(size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =0.15006999533388665, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
Die Teststatistik beträgt 0,150 . Wir können diesen Wert mit jedem kritischen Wert vergleichen, der jedem Signifikanzniveau entspricht, um zu sehen, ob die Testergebnisse signifikant sind. Zum Beispiel:
- Der kritische Wert für α = 0,01 beträgt 1,021 . Da die Teststatistik (0,150) nicht größer als dieser kritische Wert ist, sind die Ergebnisse auf dem Signifikanzniveau 0,01 nicht signifikant.
- Der kritische Wert für α = 0,025 beträgt 0,858 . Da die Teststatistik (0,150) nicht größer als dieser kritische Wert ist, sind die Ergebnisse auf dem Signifikanzniveau von 0,025 nicht signifikant.
Und so weiter.
Wir können sehen, dass die Testergebnisse auf keinem Signifikanzniveau signifikant sind, was bedeutet, dass wir die Nullhypothese des Tests nicht ablehnen. Daher verfügen wir nicht über ausreichende Beweise für die Behauptung, dass die Stichprobendaten nicht normalverteilt sind.
Dieses Ergebnis sollte nicht überraschen, da wir die Funktion np.rand.normal() verwendet haben, um eine Stichprobe von 50 normalverteilten Werten zu generieren.
Überlegen Sie stattdessen, ob wir den Anderson-Darling-Test an einer Stichprobe von 50 zufälligen ganzen Zahlen zwischen 0 und 10 durchführen würden:
import numpy as np #create data np.random.seed(0) data = np.random.randint(0, 10, size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =1.1926463985076836, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
Die Teststatistik ist 1,1926 . Wir können diesen Wert mit jedem kritischen Wert vergleichen, der jedem Signifikanzniveau entspricht, um zu sehen, ob die Testergebnisse signifikant sind. Zum Beispiel:
- Der kritische Wert für α = 0,01 beträgt 1,021 . Da die Teststatistik (1,1926) über diesem kritischen Wert liegt, sind die Ergebnisse auf dem Signifikanzniveau 0,01 signifikant.
- Der kritische Wert für α = 0,025 beträgt 0,858 . Da die Teststatistik (1,1926) über diesem kritischen Wert liegt, sind die Ergebnisse auf dem Signifikanzniveau von 0,025 signifikant.
Und so weiter.
Wir können sehen, dass die Testergebnisse auf jedem Signifikanzniveau signifikant sind, was bedeutet, dass wir die Nullhypothese des Tests ablehnen würden, unabhängig davon, welches Signifikanzniveau wir verwenden. Somit haben wir genügend Beweise, um zu sagen, dass die Stichprobendaten nicht normalverteilt sind.
Dieses Ergebnis sollte auch nicht überraschen, wenn man bedenkt, dass wir die Funktion np.rand.randint() verwendet haben, um eine Stichprobe von 50 zufälligen ganzen Zahlen zwischen 0 und 10 zu generieren, die wahrscheinlich keiner Normalverteilung folgen.
Weitere Python-Tutorials finden Sie hier .