Como realizar um teste anderson-darling em python


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 .

Este 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 Python

Para realizar um teste Anderson-Darling em Python, podemos usar a função anderson() da biblioteca scipy.stats, que usa a seguinte sintaxe:

Anderson(x, dist=’norma’)

Ouro:

  • x : tabela de dados de amostra
  • dist : o tipo de distribuição para testar. O padrão é “padrão”, mas você também pode especificar “expon” ou “logística”.

Por exemplo, aqui está como realizar um teste de Anderson-Darling em uma amostra de 50 variáveis aleatórias normalmente distribuídas:

 import numpy as np

#create data
np.random.seed(0)
data = np.random.normal(size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =0.15006999533388665,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

A estatística de teste é 0,150 . Podemos comparar este valor com cada valor crítico que corresponde a cada nível de significância para ver se os resultados do teste são significativos. Por exemplo:

  • O valor crítico para α = 0,01 é 1,021 . Como a estatística de teste (0,150) não é superior a este valor crítico, os resultados não são significativos ao nível de significância de 0,01.
  • O valor crítico para α = 0,025 é 0,858 . Como a estatística de teste (0,150) não é superior a este valor crítico, os resultados não são significativos ao nível de significância de 0,025.

E assim por diante.

Podemos ver que os resultados do teste não são significativos em nenhum nível de significância, o que significa que não rejeitaremos a hipótese nula do teste. Assim, não temos evidências suficientes para afirmar que os dados amostrados não são normalmente distribuídos.

Este resultado não deve ser surpreendente, visto que usamos a função np.rand.normal() para gerar uma amostra de 50 valores normalmente distribuídos.

Em vez disso, considere se realizássemos o teste de Anderson-Darling em uma amostra de 50 inteiros aleatórios entre 0 e 10:

 import numpy as np

#create data
np.random.seed(0)
data = np.random.randint(0, 10, size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =1.1926463985076836,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

A estatística de teste é 1,1926 . Podemos comparar este valor com cada valor crítico que corresponde a cada nível de significância para ver se os resultados do teste são significativos. Por exemplo:

  • O valor crítico para α = 0,01 é 1,021 . Como a estatística de teste (1,1926) é maior que esse valor crítico, os resultados são significativos ao nível de significância de 0,01.
  • O valor crítico para α = 0,025 é 0,858 . Como a estatística de teste (1,1926) é maior que esse valor crítico, os resultados são significativos ao nível de significância de 0,025.

E assim por diante.

Podemos ver que os resultados do teste são significativos em cada nível de significância, o que significa que rejeitaríamos a hipótese nula do teste, independentemente do nível de significância que escolhemos usar. Assim, temos evidências suficientes para dizer que os dados amostrados não têm distribuição normal.

Este resultado também não deve ser surpreendente, visto que usamos a função np.rand.randint() para gerar uma amostra de 50 números inteiros aleatórios entre 0 e 10, que provavelmente não seguirá uma distribuição normal.

Você pode encontrar mais tutoriais de Python aqui .

Add a Comment

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