1.1. Introdução

O primeiro método que quase todos conhecem é o histograma. O histograma é uma visualização de dados que mostra a distribuição de uma variável. Ele nos dá a freqüência de ocorrência por valor no conjunto de dados, que é o que são as distribuições.

O histograma é uma ótima maneira de visualizar rapidamente a distribuição de uma única variável.

1.2. Interpretação

Na figura abaixo, dois histogramas mostram uma distribuição normal e uma distribuição não normal.

  • Na esquerda, há muito pouco desvio da distribuição da amostra (em cinza) da distribuição teórica da curva do sino (linha vermelha).
  • Na direita, vemos uma forma bastante diferente no histograma, dizendo-nos directamente que esta não é uma distribuição normal.

Por vezes o desvio de uma distribuição normal é tão óbvio que pode ser detectado visualmente.

1.3. Implementação

Um histograma pode ser criado facilmente em python da seguinte forma:

Criar um histograma usando pandas em python

1.4. Conclusão

O histograma é uma ótima maneira de visualizar rapidamente a distribuição de uma única variável.

2.1. Introdução

O Box Plot é outra técnica de visualização que pode ser utilizada para a detecção de amostras não-normais. O Box Plot traça o resumo de 5 números de uma variável: mínimo, primeiro quartil, mediana, terceiro quartil e máximo.

O boxplot é uma ótima maneira de visualizar distribuições de múltiplas variáveis ao mesmo tempo.

2.2 Interpretação

O boxplot é uma ótima técnica de visualização, pois permite traçar muitos boxplotts ao lado uns dos outros. Tendo esta visão rápida das variáveis nos dá uma idéia da distribuição e como um “bônus”, obtemos o resumo completo de 5 números que nos ajudará na análise posterior.

Você deve olhar para duas coisas:

  • A distribuição é simétrica (como é a distribuição Normal)?
  • A largura (oposta à pontinha) corresponde à largura da distribuição normal? Isto é difícil de ver num gráfico de caixa.

Normal (esquerda), Uniforme (meio) e exponencial (direita) boxplots vs normal bell curve

2.3. Implementação

Uma boxplot pode ser facilmente implementada em python da seguinte forma:

Criar uma boxplot usando pandas em python

2.4. Conclusão

O boxplot é uma ótima maneira de visualizar distribuições de múltiplas variáveis ao mesmo tempo, mas um desvio na largura/pontualidade é difícil de identificar usando box plots.

3.1. Introdução

Com os gráficos QQ estamos começando a entrar nas coisas mais sérias, pois isso requer um pouco mais de compreensão do que os métodos descritos anteriormente.

QQ Plot significa Quantile vs Quantile Plot, que é exatamente o que ele faz: traçar quantil teóricos contra os quantil reais da nossa variável.

O QQ Plot nos permite ver o desvio de uma distribuição normal muito melhor do que num Histograma ou Box Plot.

3.2. Interpretação

Se a nossa variável segue uma distribuição normal, os quantis da nossa variável devem estar perfeitamente alinhados com os quantis normais “teóricos”: uma linha recta no QQ Plot diz-nos que temos uma distribuição normal.

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.

Deixe uma resposta

O seu endereço de email não será publicado.