Normal (esquerda), uniforme (meio) e exponencial (direita) QQ Plots Como visto na figura, os pontos de um QQ Plot normal seguem uma linha reta, enquanto outras distribuições se desviam fortemente.
A distribuição uniforme tem demasiadas observações em ambas as extremidades (valores muito altos e muito baixos).
A distribuição exponencial tem demasiadas observações nos valores mais baixos, mas muito poucas nos valores mais altos.
Na prática, vemos frequentemente algo menos pronunciado mas de forma semelhante. Sobre ou subrepresentação na cauda deve causar dúvidas sobre a normalidade, neste caso você deve usar um dos testes de hipóteses descritos abaixo.
3,3. Implementação
Implementar um QQ Plot pode ser feito usando os statsmodels api em python da seguinte forma:
Criar um QQ Plot usando statsmodels
3.4. Conclusão
O QQ Plot nos permite ver o desvio de uma distribuição normal muito melhor do que em um Histograma ou box plot.
Kolmogorov Smirnov test
Se o QQ Plot e outras técnicas de visualização não forem conclusivas, a inferência estatística (Hypothesis Testing) pode dar uma resposta mais objetiva se a nossa variável se desvia significativamente de uma distribuição normal.
Se você tiver dúvidas sobre como e quando usar o teste de hipóteses, aqui está um artigo que dá uma explicação intuitiva para o teste de hipóteses.
O teste Kolmogorov Smirnov calcula as distâncias entre a distribuição empírica e a distribuição teórica e define a estatística do teste como o supremo do conjunto dessas distâncias.
A vantagem disso é que a mesma abordagem pode ser usada para comparar qualquer distribuição, não sendo necessária apenas a distribuição normal.
O teste KS é bem conhecido, mas não tem muita potência. Ele pode ser usado para outra distribuição que não a normal.
4.2. Interpretação
A estatística do teste KS é a estatística de Kolmogorov Smirnov, que segue uma distribuição de Kolmogorov se a hipótese nula for verdadeira.
Se os dados observados seguirem perfeitamente uma distribuição normal, o valor da estatística de KS será 0. O valor P é usado para decidir se a diferença é suficientemente grande para rejeitar a hipótese nula:
Se o valor P do Teste KS for maior que 0,05, assumimos uma distribuição normal
Se o valor P do Teste KS for menor que 0,05, não assumimos uma distribuição normal
4,3. Implementação
O Teste KS em Python usando Scipy pode ser implementado da seguinte forma. Ele retorna a estatística do KS e seu valor P.
Aplicando o Teste KS em Python usando Scipy
4.4. Conclusão
O teste KS é bem conhecido, mas não tem muita potência. Isto significa que um grande número de observações é necessário para rejeitar a hipótese nula. Também é sensível a outliers. Por outro lado, ele pode ser usado para outros tipos de distribuições.
Teste Lilliefors
O teste Lilliefors é fortemente baseado no teste KS. A diferença é que no teste Lilliefors, é aceito que a média e variância da distribuição da população é estimada ao invés de pré-especificada pelo usuário.
Por essa razão, o teste Lilliefors usa a distribuição Lilliefors ao invés da distribuição Kolmogorov.
Felizmente para Lilliefors, sua potência ainda é menor que o teste Shapiro Wilk.
5.2. Interpretação
Se o valor P do teste Lilliefors for maior que 0,05, assumimos uma distribuição normal
Se o valor P do teste Lilliefors for menor que 0,05, não assumimos uma distribuição normal
5,3. Implementação
A implementação do teste de Lilliefors nos modelos estatísticos retornará o valor da estatística do teste de Lilliefors e o valor P da seguinte forma.
Attenção: na implementação dos modelos estatísticos, valores P inferiores a 0.001 são reportados como 0,001 e os valores P superiores a 0,2 são reportados como 0,2,
Aplicando o teste de Lilliefors usando os modelos estatísticos
5,4. Conclusão
Embora Lilliefors seja uma melhoria no teste KS, sua potência ainda é menor que a do teste Shapiro Wilk.
Teste Shapiro Wilk
Teste Shapiro Wilk é o teste mais poderoso quando se testa para uma distribuição normal. Ele foi desenvolvido especificamente para a distribuição normal e não pode ser usado para testar contra outras distribuições como por exemplo o teste KS.
O teste Shapiro Wilk é o teste mais poderoso quando testando para uma distribuição normal.
6.2. Interpretação
Se o valor P do teste Shapiro Wilk for maior que 0,05, assumimos uma distribuição normal
Se o valor P do teste Shapiro Wilk for menor que 0,05, não assumimos uma distribuição normal
6,3. Implementação
O teste de Shapiro Wilk pode ser implementado da seguinte forma. Ele retornará a estatística do teste chamada W e o valor P.
Attenção: para N > 5000 a estatística do teste W é precisa mas o valor p pode não ser.
Aplicando o teste de Shapiro Wilk usando modelos de estatísticas em Python
6.4. Conclusão
O teste de Shapiro Wilk é o teste mais poderoso quando se testa para uma distribuição normal. Você deve definitivamente usar este teste.
Conclusão – que abordagem usar!
Para identificação rápida e visual de uma distribuição normal, use um gráfico QQ se você tiver apenas uma variável para olhar e um Box Plot se você tiver muitas. Use um histograma se você precisar apresentar seus resultados para um público não estatístico.
Como um teste estatístico para confirmar sua hipótese, use o teste Shapiro Wilk. É o teste mais poderoso, que deve ser o argumento decisivo.
Quando testar contra outras distribuições, você não pode usar Shapiro Wilk e deve usar, por exemplo, o teste Anderson-Darling ou o teste KS.