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.