Come eseguire un test di anderson-darling in r


Un test di Anderson-Darling è un test di bontà di adattamento che misura quanto bene i tuoi dati si adattano a una distribuzione specificata. Questo test viene spesso utilizzato per determinare se i dati seguono o meno una distribuzione normale .

Questo tipo di test è utile per testare la normalità, che è un presupposto comunemente utilizzato in molti test statistici, tra cui regressione, ANOVA, test t e molti altri.

Esempio: test di Anderson-Darling in R

Per eseguire un test Anderson-Darling in R, possiamo utilizzare la funzione ad.test() nella libreria nortest .

Il codice seguente illustra come eseguire un test AD per verificare se un vettore di 100 valori segue o meno una distribuzione normale:

 #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

Questo test restituisce due valori:

A : la statistica del test.

valore p : il valore p corrispondente della statistica del test.

L’ipotesi nulla del test AD è che i dati seguano una distribuzione normale. Quindi, se il nostro valore p per il test è inferiore al nostro livello di significatività (le scelte comuni sono 0,10, 0,05 e 0,01), allora possiamo rifiutare l’ipotesi nulla e concludere che abbiamo prove sufficienti per affermare che i nostri dati non seguono una traiettoria normale. distribuzione.

In questo caso, il nostro valore p è 0,9471. Poiché questo numero non è inferiore al nostro livello di significatività (diciamo 0,05), non abbiamo prove sufficienti per rifiutare l’ipotesi nulla. Si può dire con certezza che i nostri dati seguono una distribuzione normale, il che ha senso dato che abbiamo generato 100 valori che seguono una distribuzione normale con una media pari a 0 e una deviazione standard pari a 1 utilizzando la funzione rnorm() in R.

Correlato: Una guida a dnorm, pnorm, qnorm e rnorm in R

Supponiamo invece di generare un vettore di 100 valori che segue una distribuzione uniforme tra 0 e 1. Possiamo eseguire nuovamente un test AD per vedere se questi dati seguono una distribuzione normale:

 #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

La nostra statistica del test A è pari a 1,1472 e il corrispondente valore p è pari a 0,005086. Poiché il nostro valore p è inferiore a 0,05, possiamo rifiutare l’ipotesi nulla e concludere che abbiamo prove sufficienti per affermare che questi dati non seguono una distribuzione normale. Questo è il risultato che ci aspettavamo poiché sappiamo che i nostri dati seguono in realtà una distribuzione uniforme.

Esecuzione di un test di Anderson-Darling su una colonna di un data frame in R

Possiamo anche eseguire un test AD per una colonna specifica di un frame di dati in R. Ad esempio, considera il set di dati dell’iride incorporato:

 #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

Supponiamo di voler sapere se la variabile Petal.Width è distribuita normalmente. Potremmo prima creare un istogramma per visualizzare la distribuzione dei valori:

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

I dati non sembrano essere distribuiti normalmente. Per confermarlo, possiamo eseguire un test AD per verificare formalmente se i dati sono distribuiti normalmente o meno:

 #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

Il valore p del test è inferiore a 0,05, quindi abbiamo prove sufficienti per rifiutare l’ipotesi nulla e concludere che Petal.Width non segue una distribuzione normale.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *