Hoe een anderson-darling-test uit te voeren in r


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 nuttig 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 R

Om een Anderson-Darling-test in R uit te voeren, kunnen we de functie ad.test() in de nortest- bibliotheek gebruiken.

De volgende code illustreert hoe u een AD-test uitvoert om te testen of een vector van 100 waarden al dan niet een normale verdeling volgt:

 #install (if not already installed) and load nortest library
install.packages('nortest')
library(nortest)

#make this example reproducible
set.seed(1)

#defined vector of 100 values that are normally distributed
x <- rnorm(100, 0, 1)

#conduct Anderson-Darling Test to test for normality
ad.test(x)

# Anderson-Darling normality test
#
#data:x
#A = 0.16021, p-value = 0.9471

Deze test retourneert twee waarden:

A : de teststatistiek.

p-waarde : de overeenkomstige p-waarde van de teststatistiek.

De nulhypothese van de AD-test is dat de gegevens een normale verdeling volgen . Dus als onze p-waarde voor de test kleiner is dan ons significantieniveau (veel voorkomende keuzes zijn 0,10, 0,05 en 0,01), dan kunnen we de nulhypothese verwerpen en concluderen dat we voldoende bewijs hebben om te beweren dat onze gegevens niet volgen een normaal traject. verdeling.

In dit geval is onze p-waarde 0,9471. Omdat dit getal niet onder ons significantieniveau ligt (laten we zeggen 0,05), hebben we niet voldoende bewijs om de nulhypothese te verwerpen. Het is veilig om te zeggen dat onze gegevens een normale verdeling volgen, wat logisch is gezien het feit dat we 100 waarden hebben gegenereerd die een normale verdeling volgen met een gemiddelde van 0 en een standaardafwijking van 1 met behulp van de functie rnorm() in R.

Gerelateerd: Een gids voor dnorm, pnorm, qnorm en rnorm in R

Stel dat we in plaats daarvan een vector van 100 waarden genereren die een uniforme verdeling tussen 0 en 1 volgt. We kunnen opnieuw een AD-test uitvoeren om te zien of deze gegevens een normale verdeling volgen:

 #make this example reproducible
set.seed(1)

#defined vector of 100 values that are uniformly distributed
x <- runif(100, 0, 1)

#conduct Anderson-Darling Test to test for normality
ad.test(x)

# Anderson-Darling normality test
#
#data:x
#A = 1.1472, p-value = 0.005086

Onze A- teststatistiek is gelijk aan 1,1472 en de overeenkomstige p-waarde is gelijk aan 0,005086. Omdat onze p-waarde kleiner is dan 0,05, kunnen we de nulhypothese verwerpen en concluderen dat we voldoende bewijs hebben om te zeggen dat deze gegevens geen normale verdeling volgen. Dit is het resultaat dat we hadden verwacht, omdat we weten dat onze gegevens feitelijk een uniforme verdeling volgen.

Het uitvoeren van een Anderson-Darling-test op een kolom van een dataframe in R

We kunnen ook een AD-test uitvoeren voor een specifieke kolom van een dataframe in R. Neem bijvoorbeeld de ingebedde irisdataset :

 #view first six lines of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

Stel dat we willen weten of de variabele Petal.Width normaal verdeeld is. We zouden eerst een histogram kunnen maken om de verdeling van waarden te visualiseren:

 hist(iris$Petal.Width, col = 'steelblue', main = 'Distribution of Petal Widths',
     xlab = 'Petal Width')

De gegevens lijken niet normaal verdeeld te zijn. Om dit te bevestigen kunnen we een AD-test uitvoeren om formeel te testen of de gegevens normaal verdeeld zijn of niet:

 #conduct Anderson-Darling Test to test for normality
ad.test(iris$Petal.Width)

# Anderson-Darling normality test
#
#data: iris$Petal.Width
#A = 5.1057, p-value = 1.125e-12

De p-waarde van de test is kleiner dan 0,05, dus we hebben voldoende bewijs om de nulhypothese te verwerpen en te concluderen dat Petal.Width geen normale verdeling volgt.

Einen Kommentar hinzufügen

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