Hoe u een shapiro-wilk-test uitvoert in python


De Shapiro-Wilk-test is een test van normaliteit. Het wordt gebruikt om te bepalen of een steekproef wel of niet uit eennormale verdeling komt.

Om een Shapiro-Wilk-test in Python uit te voeren, kunnen we de functie scipy.stats.shapiro() gebruiken, die de volgende syntaxis gebruikt:

scipy.stats.shapiro(x)

Goud:

  • x: een tabel met voorbeeldgegevens.

Deze functie retourneert een teststatistiek en een bijbehorende p-waarde.

Als de p-waarde onder een bepaald significantieniveau ligt, hebben we voldoende bewijs om te zeggen dat de steekproefgegevens niet uit een normale verdeling komen.

Deze tutorial toont enkele voorbeelden van hoe u deze functie in de praktijk kunt gebruiken.

Voorbeeld 1: Shapiro-Wilk-test op normaal verdeelde gegevens

Stel dat we de volgende voorbeeldgegevens hebben:

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

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 random values that follow a standard normal distribution
data = randn(100)

De volgende code laat zien hoe je een Shapiro-Wilk-test uitvoert op dit voorbeeld van 100 gegevenswaarden om te bepalen of ze uit een normale verdeling komen:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)

Uit het resultaat kunnen we zien dat de teststatistiek 0,9927 is en de overeenkomstige p-waarde 0,8689 .

Omdat de p-waarde niet kleiner is dan 0,05, slagen we er niet in de nulhypothese te verwerpen. We hebben niet voldoende bewijs om te zeggen dat de steekproefgegevens niet uit een normale verdeling komen.

Dit resultaat zou niet verrassend moeten zijn, aangezien we de voorbeeldgegevens hebben gegenereerd met behulp van de functie randn() , die willekeurige waarden genereert die een standaard normale verdeling volgen.

Voorbeeld 2: Shapiro-Wilk-test op niet-normaal verdeelde gegevens

Stel nu dat we de volgende voorbeeldgegevens hebben:

 from numpy.random import seed
from numpy.random import fish

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 values that follows a Poisson distribution with mean=5
data = fish(5, 100)

De volgende code laat zien hoe je een Shapiro-Wilk-test uitvoert op dit voorbeeld van 100 gegevenswaarden om te bepalen of ze uit een normale verdeling komen:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)

Uit het resultaat kunnen we zien dat de teststatistiek 0,9582 is en de overeenkomstige p-waarde 0,00299 .

Omdat de p-waarde kleiner is dan 0,05, verwerpen we de nulhypothese. We hebben voldoende bewijs om te zeggen dat de steekproefgegevens niet uit een normale verdeling komen.

Dit resultaat zou ook niet verrassend moeten zijn, aangezien we de voorbeeldgegevens hebben gegenereerd met behulp van de Poisson()- functie, die willekeurige waarden genereert die een Poisson-verdeling volgen.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere normaliteitstests kunt uitvoeren in verschillende statistische software:

Hoe een Shapiro-Wilk-test uit te voeren in R
Hoe u een Anderson-Darling-test uitvoert in Python
Hoe u een Kolmogorov-Smirnov-test uitvoert in Python

Einen Kommentar hinzufügen

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