Como realizar um teste de anderson-darling em r


Um teste de Anderson-Darling é um teste de adequação que mede quão bem seus dados se ajustam a uma distribuição específica. Este teste é usado com mais frequência para determinar se seus dados seguem ou não uma distribuição normal .

Esse tipo de teste é útil para testar a normalidade, que é uma suposição comumente usada em muitos testes estatísticos, incluindo regressão, ANOVA, testes t e muitos outros.

Exemplo: teste Anderson-Darling em R

Para realizar um teste de Anderson-Darling em R, podemos usar a função ad.test() na biblioteca nortest .

O código a seguir ilustra como realizar um teste AD para testar se um vetor de 100 valores segue ou não uma distribuição normal:

 #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

Este teste retorna dois valores:

A : a estatística de teste.

Valor p : o valor p correspondente da estatística de teste.

A hipótese nula do teste AD é que os dados seguem uma distribuição normal. Portanto, se nosso valor p para o teste for menor que nosso nível de significância (as opções comuns são 0,10, 0,05 e 0,01), podemos rejeitar a hipótese nula e concluir que temos evidências suficientes para afirmar que nossos dados não seguem uma trajetória normal. distribuição.

Nesse caso, nosso valor p é 0,9471. Como este número não está abaixo do nosso nível de significância (digamos 0,05), não temos evidências suficientes para rejeitar a hipótese nula. É seguro dizer que nossos dados seguem uma distribuição normal, o que faz sentido visto que geramos 100 valores que seguem uma distribuição normal com média 0 e desvio padrão de 1 usando a função rnorm() em R.

Relacionado: Um guia para dnorm, pnorm, qnorm e rnorm em R

Em vez disso, suponha que geramos um vetor de 100 valores que segue uma distribuição uniforme entre 0 e 1. Podemos executar um teste AD novamente para ver se esses dados seguem uma distribuição normal:

 #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

Nossa estatística de teste A é igual a 1,1472 e o valor p correspondente é igual a 0,005086. Como nosso valor p é inferior a 0,05, podemos rejeitar a hipótese nula e concluir que temos evidências suficientes para dizer que esses dados não seguem uma distribuição normal. Este é o resultado que esperávamos, pois sabemos que nossos dados seguem, na verdade, uma distribuição uniforme.

Executando um teste de Anderson-Darling em uma coluna de um quadro de dados em R

Também podemos realizar um teste AD para uma coluna especificada de um quadro de dados em R. Por exemplo, considere o conjunto de dados de íris incorporado:

 #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

Suponha que queremos saber se a variável Petal.Width tem distribuição normal. Poderíamos primeiro criar um histograma para visualizar a distribuição dos valores:

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

Os dados não parecem estar distribuídos normalmente. Para confirmar isso, podemos realizar um teste AD para testar formalmente se os dados são normalmente distribuídos ou não:

 #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

O valor p do teste é inferior a 0,05, portanto temos evidências suficientes para rejeitar a hipótese nula e concluir que Petal.Width não segue uma distribuição normal.

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *