Como realizar um teste shapiro-wilk em python
O teste Shapiro-Wilk é um teste de normalidade. É usado para determinar se uma amostra vem ou não de uma distribuição normal .
Para realizar um teste Shapiro-Wilk em Python podemos usar a função scipy.stats.shapiro() , que utiliza a seguinte sintaxe:
scipy.stats.shapiro(x)
Ouro:
- x: uma tabela de dados de amostra.
Esta função retorna uma estatística de teste e um valor p correspondente.
Se o valor p estiver abaixo de um certo nível de significância, então temos evidências suficientes para dizer que os dados da amostra não provêm de uma distribuição normal.
Este tutorial mostra alguns exemplos de como usar esse recurso na prática.
Exemplo 1: teste Shapiro-Wilk em dados normalmente distribuídos
Suponha que tenhamos os seguintes dados de amostra:
from numpy.random import seed from numpy.random import randn #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 random values that follow a standard normal distribution data = randn(100)
O código a seguir mostra como realizar um teste de Shapiro-Wilk nesta amostra de 100 valores de dados para determinar se eles vêm de uma distribuição normal:
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)
A partir do resultado, podemos ver que a estatística de teste é 0,9927 e o valor p correspondente é 0,8689 .
Como o valor p não é inferior a 0,05, não rejeitamos a hipótese nula. Não temos evidências suficientes para afirmar que os dados da amostra não provêm de uma distribuição normal.
Este resultado não deve ser surpreendente, uma vez que geramos os dados amostrais usando a função randn() , que gera valores aleatórios que seguem uma distribuição normal padrão.
Exemplo 2: teste de Shapiro-Wilk em dados distribuídos não normalmente
Agora suponha que temos os seguintes dados de amostra:
from numpy.random import seed from numpy.random import fish #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 values that follows a Poisson distribution with mean=5 data = fish(5, 100)
O código a seguir mostra como realizar um teste de Shapiro-Wilk nesta amostra de 100 valores de dados para determinar se eles vêm de uma distribuição normal:
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)
A partir do resultado, podemos ver que a estatística de teste é 0,9582 e o valor p correspondente é 0,00299 .
Como o valor p é inferior a 0,05, rejeitamos a hipótese nula. Temos evidências suficientes para dizer que os dados da amostra não provêm de uma distribuição normal.
Este resultado também não deve surpreender, já que geramos os dados amostrais utilizando a função Poisson() , que gera valores aleatórios que seguem uma distribuição de Poisson .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outros testes de normalidade em vários softwares estatísticos:
Como realizar um teste de Shapiro-Wilk em R
Como realizar um teste Anderson-Darling em Python
Como realizar um teste Kolmogorov-Smirnov em Python