p-values

Testes de Hipóteses em Python

James Chapman

Curriculum Manager, DataCamp

Julgamentos criminais

  • Dois possíveis estados verdadeiros:
    1. Réu cometeu o crime
    2. Réu não cometeu o crime
  • Dois possíveis veredictos:
    1. Culpado
    2. Inocente
  • Inicialmente o réu é presumido inocente
  • A acusação deve apresentar evidência "além de dúvida razoável" para veredito de culpado
Testes de Hipóteses em Python

Idade do primeiro contato com programação

  • age_first_code_cut classifica quando o usuário do Stack Overflow começou a programar
    • "adult" significa que começou aos 14 ou mais
    • "child" significa que começou antes dos 14
  • Pesquisa anterior: 35% dos desenvolvedores começaram a programar na infância
  • Há evidência de que a proporção de cientistas de dados que começaram na infância é maior?
Testes de Hipóteses em Python

Definições

Uma hipótese é uma afirmação sobre um parâmetro populacional desconhecido

Um teste de hipótese compara duas hipóteses concorrentes

  • A hipótese nula ($H_{0}$) é a ideia vigente

  • A hipótese alternativa ($H_{A}$) é a nova ideia do pesquisador

Para o nosso problema:

  • $H_{0}$: A proporção de cientistas de dados que começaram a programar na infância é 35%
  • $H_{A}$: A proporção de cientistas de dados que começaram a programar na infância é maior que 35%
1 "Naught" é inglês britânico para "zero". Por razões históricas, "H-naught" é a convenção internacional para pronunciar a hipótese nula.
Testes de Hipóteses em Python

Julgamentos criminais vs. testes de hipótese

  • Ou $H_{A}$ ou $H_{0}$ é verdadeira (não ambas)
  • Inicialmente, assume-se $H_{0}$ verdadeira
  • O teste termina em "rejeitar $H_{0}$" ou "falhar em rejeitar $H_{0}$"
  • Se a evidência da amostra for "significativa" a favor de $H_{A}$, rejeite $H_{0}$; caso contrário, fique com $H_{0}$

Nível de significância é o "além de dúvida razoável" dos testes de hipótese

Testes de Hipóteses em Python

Testes unicaudais e bicaudais

Gráfico de densidade da pdf normal padrão com as caudas esquerda e direita em vermelho.

Testes de hipótese verificam se as estatísticas da amostra estão nas caudas da distribuição nula

Teste Caudas
alternativa diferente da nula bicaudal
alternativa maior que a nula cauda direita
alternativa menor que a nula cauda esquerda

 

$H_{A}$: A proporção de cientistas de dados que começaram a programar na infância é maior que 35%

Este é um teste de cauda direita

Testes de Hipóteses em Python

p-values

p-values: probabilidade de obter um resultado, assumindo que a hipótese nula é verdadeira

  • p-value grande, grande apoio a $H_{0}$
    • Estatística provavelmente não está na cauda da distribuição nula
  • p-value pequeno, forte evidência contra $H_{0}$
    • Estatística provavelmente está na cauda da distribuição nula
  • "p" em p-value → probabilidade
  • "pequeno" significa "próximo de zero"
Testes de Hipóteses em Python

Calculando o z-score

prop_child_samp = (stack_overflow['age_first_code_cut'] == "child").mean()
0.39141972578505085
prop_child_hyp = 0.35
std_error = np.std(first_code_boot_distn, ddof=1)
0.010351057228878566
z_score = (prop_child_samp - prop_child_hyp) / std_error
4.001497129152506
Testes de Hipóteses em Python

Calculando o p-value

  • norm.cdf() é a CDF normal de scipy.stats.
  • Teste de cauda esquerda → use norm.cdf().
  • Teste de cauda direita → use 1 - norm.cdf().

 

from scipy.stats import norm
1 - norm.cdf(z_score, loc=0, scale=1)
3.1471479512323874e-05
Testes de Hipóteses em Python

Vamos praticar!

Testes de Hipóteses em Python

Preparing Video For Download...