Hoe u een anderson-darling-test uitvoert in python


Een Anderson-Darling-test is een goodness-of-fit-test die meet hoe goed uw gegevens in een bepaalde verdeling passen.

Deze test wordt meestal gebruikt om te bepalen of uw gegevens al dan niet een normale verdeling volgen.

Dit type test is handig voor het testen van de normaliteit, wat een veelgebruikte aanname is in veel statistische tests, waaronder regressie , ANOVA , t-tests en vele andere.

Voorbeeld: Anderson-Darling-test in Python

Om een Anderson-Darling-test in Python uit te voeren, kunnen we de functie anderson() uit de scipy.stats-bibliotheek gebruiken, die de volgende syntaxis gebruikt:

Anderson(x, dist=’norm‘)

Goud:

  • x : tabel met voorbeeldgegevens
  • dist : het type distributie waarop moet worden getest. De standaardwaarde is „standaard“, maar u kunt ook „expon“ of „logistiek“ opgeven.

Hier ziet u bijvoorbeeld hoe u een Anderson-Darling-test uitvoert op een steekproef van 50 normaal verdeelde willekeurige variabelen:

 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. ]))

De teststatistiek is 0,150 . We kunnen deze waarde vergelijken met elke kritische waarde die overeenkomt met elk significantieniveau om te zien of de testresultaten significant zijn. Bijvoorbeeld:

  • De kritische waarde voor α = 0,01 is 1,021 . Omdat de teststatistiek (0,150) niet groter is dan deze kritische waarde, zijn de resultaten niet significant op het significantieniveau van 0,01.
  • De kritische waarde voor α = 0,025 is 0,858 . Omdat de teststatistiek (0,150) niet groter is dan deze kritische waarde, zijn de resultaten niet significant op het significantieniveau van 0,025.

Enzovoort.

We kunnen zien dat de testresultaten op geen enkel significantieniveau significant zijn, wat betekent dat we de nulhypothese van de test niet zullen verwerpen. We hebben dus niet voldoende bewijs om te beweren dat de steekproefgegevens niet normaal verdeeld zijn.

Dit resultaat zou niet verrassend moeten zijn, aangezien we de functie np.rand.normal() hebben gebruikt om een steekproef van 50 normaal verdeelde waarden te genereren.

Overweeg in plaats daarvan of we de Anderson-Darling-test hebben uitgevoerd op een steekproef van 50 willekeurige gehele getallen tussen 0 en 10:

 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. ]))

De teststatistiek is 1,1926 . We kunnen deze waarde vergelijken met elke kritische waarde die overeenkomt met elk significantieniveau om te zien of de testresultaten significant zijn. Bijvoorbeeld:

  • De kritische waarde voor α = 0,01 is 1,021 . Omdat de teststatistiek (1,1926) groter is dan deze kritische waarde, zijn de resultaten significant op het significantieniveau van 0,01.
  • De kritische waarde voor α = 0,025 is 0,858 . Omdat de teststatistiek (1,1926) groter is dan deze kritische waarde, zijn de resultaten significant op het significantieniveau van 0,025.

Enzovoort.

We kunnen zien dat de testresultaten significant zijn op elk significantieniveau, wat betekent dat we de nulhypothese van de test zouden verwerpen, ongeacht welk significantieniveau we kiezen. We hebben dus voldoende bewijs om te zeggen dat de steekproefgegevens niet normaal verdeeld zijn.

Dit resultaat zou ook niet verrassend moeten zijn, aangezien we de functie np.rand.randint() hebben gebruikt om een steekproef van 50 willekeurige gehele getallen tussen 0 en 10 te genereren, wat waarschijnlijk geen normale verdeling zal volgen.

Meer Python-tutorials vind je hier .

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert