Como realizar um teste shapiro-wilk em r (com exemplos)


O teste Shapiro-Wilk é um teste de normalidade. É usado para determinar se uma amostra vem ou não de uma distribuição normal .

Este tipo de teste é útil para determinar se um determinado conjunto de dados vem ou não de uma distribuição normal, que é uma suposição comumente usada em muitos testes estatísticos, incluindo regressão , ANOVA , testes t e muitos outros. ‘outros.

Podemos facilmente realizar um teste de Shapiro-Wilk em um determinado conjunto de dados usando a seguinte função integrada em R:

shapiro.teste(x)

Ouro:

  • x: um vetor numérico de valores de dados.

Esta função produz uma estatística de teste W junto com um valor p correspondente. Se o valor p for inferior a α = 0,05, há evidências suficientes para dizer que a amostra não pertence a uma população normalmente distribuída.

Nota: O tamanho da amostra deve estar entre 3 e 5.000 para usar a função shapiro.test().

Este tutorial mostra vários exemplos de uso prático desta função.

Exemplo 1: teste de Shapiro-Wilk em dados normais

O código a seguir mostra como realizar um teste de Shapiro-Wilk em um conjunto de dados com tamanho de amostra n=100:

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a normal distribution
data <- rnorm(100)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.98957, p-value = 0.6303

O valor p do teste acabou sendo 0,6303 . Como este valor não é inferior a 0,05, podemos assumir que os dados amostrais provêm de uma população normalmente distribuída.

Este resultado não deve surpreender, pois geramos os dados amostrais usando a função rnorm(), que gera valores aleatórios a partir de uma distribuição normal com média = 0 e desvio padrão = 1.

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

Também podemos produzir um histograma para verificar visualmente se os dados da amostra estão normalmente distribuídos:

 hist(data, col=' steelblue ') 

Teste de Shapiro-Wilk para normalidade em R

Podemos ver que a distribuição tem formato de sino com um pico no centro da distribuição, o que é típico de dados normalmente distribuídos.

Exemplo 2: Teste de Shapiro-Wilk em dados não normais

O código a seguir mostra como realizar um teste de Shapiro-Wilk em um conjunto de dados com tamanho de amostra n=100 em que os valores são gerados aleatoriamente a partir de uma distribuição de Poisson :

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a Poisson distribution
data <- rpois(n=100, lambda=3)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.94397, p-value = 0.0003393

O valor p do teste acabou sendo 0,0003393 . Como este valor é inferior a 0,05, temos evidências suficientes para dizer que os dados amostrais não provêm de uma população normalmente distribuída.

Este resultado não deve ser surpreendente, uma vez que geramos os dados amostrais usando a função rpois(), que gera valores aleatórios a partir de uma distribuição de Poisson.

Relacionado: Um guia para dpois, ppois, qpois e rpois em R

Também podemos produzir um histograma para ver visualmente que os dados da amostra não estão normalmente distribuídos:

 hist(data, col=' coral2 ') 

Histograma do teste Shapiro-Wilk em R

Podemos ver que a distribuição é assimétrica à direita e não possui o típico “formato de sino” associado a uma distribuição normal. Assim, nosso histograma corresponde aos resultados do teste Shapiro-Wilk e confirma que nossos dados amostrais não provêm de uma distribuição normal.

O que fazer com dados não normais

Se um determinado conjunto de dados não for distribuído normalmente, muitas vezes podemos realizar uma das seguintes transformações para torná-lo mais normal:

1. Transformação de log: transforme a variável de resposta de y em log(y) .

2. Transformação de raiz quadrada: Transforme a variável de resposta de y em √y .

3. Transformação da raiz cúbica: transforme a variável de resposta de y em y 1/3 .

Ao realizar essas transformações, a variável resposta geralmente se aproxima da distribuição normal.

Confira este tutorial para ver como realizar essas transformações na prática.

Recursos adicionais

Como realizar um teste de Anderson-Darling em R
Como realizar um teste de Kolmogorov-Smirnov em R
Como realizar um teste Shapiro-Wilk em Python

Add a Comment

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