Dados normais

Projeto experimental em Python

James Chapman

Curriculum Manager, DataCamp

A distribuição normal

 

  • O conhecido formato de "curva em sino"
  • Relacionada ao z-score

$$ {z} = \frac{x-\mu}{\sigma}$$

  • Média = 0, desvio-padrão = 1
    • "Quantos desvios-padrão este ponto está da média?"
    • "Qual a probabilidade de obter este valor?"

 

Gráfico típico de uma curva em sino: linha azul em fundo branco.

Projeto experimental em Python

Dados normais e testes estatísticos

 

  • Exigida por testes paramétricos
  • Testes não paramétricos: não assumem normalidade

 

Gráfico típico de uma curva em sino: linha azul em fundo branco.

Projeto experimental em Python

Normal, Z e alfa

 

  • Ligação crucial com o nível de significância ($\alpha$)
  • Compare o p-valor com $\alpha$
  • Probabilidade de erro tipo I

 

Uma normal com pequenas áreas pretas em cada cauda

Projeto experimental em Python

Visualizando dados normais

 

sns.displot(data=salaries,
            x='salary',
            kind="kde")
plt.show()

 

Uma curva em sino mais alta e estreita que a tradicional, mas ainda com o formato típico de sino

Projeto experimental em Python

QQ plots

QQ plot: compara os dados com uma distribuição específica

from statsmodels.graphics.gofplots import qqplot
from scipy.stats.distributions import norm
qqplot(salaries['salary'], 
       line='s', 
       dist=norm)
plt.show()
  • Ideal: pontos próximos da linha
  • Ruim: curvam nas pontas

 

Um QQ plot onde os pontos ficam próximos da linha de 45 graus no meio

Um QQ plot onde os pontos no meio seguem a linha de 45 graus, mas nas pontas os pontos se curvam para dentro

Projeto experimental em Python

Testes de normalidade

 

  • Shapiro–Wilk (bom para amostras pequenas)
  • D'Agostino $K^2$ (usa curtose e assimetria)
  • Anderson–Darling (retorna lista de valores)

 

$H_0$ = "Dados vêm de uma distribuição normal"

Projeto experimental em Python

Teste de Shapiro–Wilk

 

from scipy.stats import shapiro
alpha = 0.05

stat, p = shapiro(salaries['salary']) print(f"p: {round(p,4)} test stat: {round(stat,4)}")
p: 0.8293 test stat: 0.9956
  • p > alpha
    • Falha em rejeitar $H_0$ → provavelmente normal
Projeto experimental em Python

Teste de Anderson–Darling

from scipy.stats import anderson
result = anderson(x=salaries['salary'], dist="norm")
print(round(result.statistic,4))
print(result.significance_level)
print(result.critical_values)
0.2748
[15.  10.   5.   2.5  1. ]
[0.572 0.651 0.781 0.911 1.084]
  • 0.2748 < [0.572 0.651 0.781 0.911 1.084]
    • Falha em rejeitar $H_0$ → provavelmente normal
Projeto experimental em Python

Vamos praticar!

Projeto experimental em Python

Preparing Video For Download...