Comment effectuer un test d’Anderson-Darling dans R



Un test d’Anderson-Darling est un test d’ajustement qui mesure dans quelle mesure vos données s’ajustent à une distribution spécifiée. Ce test est le plus souvent utilisé pour déterminer si vos données suivent ou non une distribution normale .

Ce type de test est utile pour tester la normalité, qui est une hypothèse couramment utilisée dans de nombreux tests statistiques, notamment la régression, l’ANOVA, les tests t et bien d’autres.

Exemple : test d’Anderson-Darling dans R

Pour effectuer un test d’Anderson-Darling dans R, nous pouvons utiliser la fonction ad.test() dans la bibliothèque nortest .

Le code suivant illustre comment effectuer un test AD pour tester si un vecteur de 100 valeurs suit ou non une distribution 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

Ce test renvoie deux valeurs :

A : la statistique du test.

p-value : la p-value correspondante de la statistique de test.

L’hypothèse nulle du test AD est que les données suivent une distribution normale. Ainsi, si notre valeur p pour le test est inférieure à notre seuil de signification (les choix courants sont 0,10, 0,05 et 0,01), alors nous pouvons rejeter l’hypothèse nulle et conclure que nous disposons de preuves suffisantes pour affirmer que nos données ne suivent pas une trajectoire normale. distribution.

Dans ce cas, notre valeur p est de 0,9471. Puisque ce chiffre n’est pas inférieur à notre seuil de signification (disons 0,05), nous ne disposons pas de preuves suffisantes pour rejeter l’hypothèse nulle. Il est prudent de dire que nos données suivent une distribution normale, ce qui est logique étant donné que nous avons généré 100 valeurs qui suivent une distribution normale avec une moyenne de 0 et un écart type de 1 en utilisant la fonction rnorm() dans R.

Connexe : Un guide sur dnorm, pnorm, qnorm et rnorm dans R

Supposons plutôt que nous générions un vecteur de 100 valeurs qui suivent une distribution uniforme entre 0 et 1. Nous pouvons effectuer à nouveau un test AD pour voir si ces données suivent une distribution 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

Notre statistique de test A est égale à 1,1472 et la valeur p correspondante est égale à 0,005086. Puisque notre valeur p est inférieure à 0,05, nous pouvons rejeter l’hypothèse nulle et conclure que nous disposons de preuves suffisantes pour affirmer que ces données ne suivent pas une distribution normale. Cela correspond au résultat auquel nous nous attendions puisque nous savons que nos données suivent en réalité une distribution uniforme.

Réalisation d’un test Anderson-Darling sur une colonne d’un bloc de données dans R

Nous pouvons également effectuer un test AD pour une colonne spécifiée d’un bloc de données dans R. Par exemple, considérons l’ensemble de données iris intégré :

#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

Supposons que nous voulions savoir si la variable Petal.Width est normalement distribuée. On pourrait d’abord créer un histogramme pour visualiser la distribution des valeurs :

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

Les données ne semblent pas être distribuées normalement. Pour confirmer cela, nous pouvons effectuer un test AD pour tester formellement si les données sont normalement distribuées ou non :

#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

La valeur p du test est inférieure à 0,05, nous disposons donc de preuves suffisantes pour rejeter l’hypothèse nulle et conclure que Petal.Width ne suit pas une distribution normale.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *