Como testar se uma distribuição é Normal
A distribuição Normal é exigida em muitas situações pelas suas boas propriedades matemáticas e por isso é tão utilizada em probabilidade e estatística, como no teste t e na ANOVA. No entanto, é comum vermos a utilização de ferramentas estatísticas de testes de hipótese sem verificar primeiramente se a distribuição é Normal.
Para verificar a normalidade da distribuição vamos apresentar três ferramentas que devem ser utilizadas em conjunto: o teste Shapiro-Wilk, o histograma e o QQ-plot. Todas as três serão acompanhadas de um exemplo de como implementar no software R ao final. Porém, vale ressaltar que existem uma infinidade de outras maneiras de testar a normalidade da distribuição.
O qq-plot e o histograma
A ferramenta mais simples e a mais recomendada para verificar a distribuição dos seus dados juntamente com o histograma. O quantile plot (qq-plot) simplesmente irá dispor em um gráfico uma comparação dois a dois dos quantis teóricos de uma Normal e os quantis de seus dados. Se os pontos se concentrarem em torno de uma reta, então temos indícios de que a distribuição é Normal. Adicionalmente, o histograma lhe mostra a forma de distribuição. Quanto mais próximo da forma de sino que estamos familiarizados, maiores as evidências de normalidade.
Vejamos as duas figuras abaixo como exemplo que desejam verificar a normalidade através de um histograma e um qq-plot. A primeira são dados normais e a segunda são dados exponenciais (não normais).
Note que o primeira gráfico possui a forma de sino característica da distribuição Normal e o qq-plot ao lado mostra os pontos bem concentrados em torno de uma reta. Porém, a segunda figura mostra o histograma decaindo conforme avançamos à direita, não tendo a forma de sino desejada, e também podemos ver um qq-plot onde os pontos não se concentram em sua maioria em torno da reta, ficando evidente nas extremidade.
Atenção ao usar apenas o qq-plot
No qq-plot é comum os pontos se afastarem da reta mesmo quando os dados são normais. Pensando nisso, note que o qq-plot da segunda figura possui um afastamento apenas nas extremidades. Se não fosse o histograma dos dados ao lado talvez poderíamos considerar de maneira incorreta a hipótese de normalidade.
O teste Shapiro-Wilk
O teste parte da hipótese nula H0 considerando a distribuição dos dados ser Normal. Assim, dado um nível de significância, geralmente estabelecido em 5%, se o teste rejeitar a hipótese, então a distribuição dos dados não é normal. Ou seja, se o p-valor é menor que o nível estabelecido 5%, então temos indícios para descartar a normalidade dos dados.
Por outro lado, se o p-valor do teste é acima dos 5% estabelecido, ou outro nível pré-definido, isso quer dizer que a hipótese de normalidade não pode ser rejeitada, mas isso não pode ser a sua decisão final! Para complementar essa verificação é preciso fazer também um QQ-plot mostrado acima.
Vejamos as saídas dos testes implementados no R abaixo. Não se preocupe que o código completo é fornecido ao final do post 😉
> shapiro.test(dds.normal)
Shapiro-Wilk normality test
data: dds.normal
W = 0.9956, p-value = 0.9876
> shapiro.test(dds.exp)
Shapiro-Wilk normality test
data: dds.exp
W = 0.91505, p-value = 7.759e-06
Veja que os p-valores (p-value) resultantes do teste Shapiro-Wilk são grandes no caso de dados normais e bem pequeno no caso exponencial (não normal).
Aliado à ferramenta visual do qq-plot e do histograma agora podemos dizer com segurança qual distribuição é normal e qual não é.
Como testar normalidade no R
Todos os gráficos e testes apresentados neste post foram gerados pelo código abaixo e implementados no software R. Se desejar, você pode copiá-lo no R ou baixar o arquivo .R clicando aqui.
### Código fornecido por www.manipulandodados.com.br ###
# Exemplo de dados simulados com distribuição normal e outro não-normal
set.seed(1)
dds.normal <- rnorm(100)
dds.exp <- rexp(100)
# Histogramas
hist(dds.normal)
hist(dds.exp)
#### qq-plot + linha de referência
# Se os pontos se concentrarem em torno de uma linha reta,
# então temos indícios de que a distribuição é normal.
qqnorm(dds.normal)
qqline(dds.normal)
qqnorm(dds.exp)
qqline(dds.exp)
#### Teste Shapiro-Wilk
# Se p-value < 0.05, então está rejeitada a hipótese de
# distribuição normal. Caso contrário, juntamente com o qq-plot
# acima podemos considerar os dados com distribuição Normal.
shapiro.test(dds.normal) # normal
shapiro.test(dds.exp) # não normal
Dúvidas? Pergunte no Twitter
Você pode fazer sua pergunta para nós do Blog Manipulando Dados no Twitter. Basta clicar no botão abaixo. Não esqueça de manter o @MnplndDados para sua pergunta chegar até nós.
Pergunte para @MnplndDados
10 comentários
Gostaria de parabenizar a equipe manupulandodados.com.br pela capacidade de síntese de informações muitíssimas úteis para o desenvolvimento estatístico de trabalhos científicos/acadêmicos.
Obrigado!!!
Obrigado, Vagner.
Muito bom saber que estão gostando. Se não gostar de algo também, pode falar 🙂
muito legal o material obrigado! parabéns
Excelente! Estou concluindo análise de dados do meu mestrado e estava precisando de uma informação simples, porém compreensível, sobre Distribuições Normais. Parabéns pelo conteúdo!
Obrigado, Rui.
Sempre bom saber que nossos textos estão ajudando 🙂
Amigo, preciso lhe parabenizar pelo blog. Bastante conteúdo numa linguagem acessivel! Parabéns pelo excelente trabalho, sou estudante de economia e muito interessado nesse universo de manipulação de dados. Já adicionei aos meus favoritos e será uma fonte constante de estudos.
Oi, Fernando. Obrigado! Espero que o blog lhe seja bastante útil 🙂
Parabéns! Muito simples, direto. Nesse mesmo post, poderia inserir a função que gera o sumário de estatísticas descritivas para evidenciar as propriedades média x variância da distribuição normal.
Estou analisando os dados da minha tese com a colaboração de um colega e li (lendo)o material desenvolvido por vocês. Me ajudou e está ajudando muito, Valeu!
excelente texto, simples, direto e de qualidade. Parabens