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.