Testes t pareados

Testes de Hipóteses em Python

James Chapman

Curriculum Manager, DataCamp

Conjunto de dados de presidentes republicanos nos EUA

         state       county  repub_percent_08  repub_percent_12
0      Alabama         Hale         38.957877         37.139882
1     Arkansas       Nevada         56.726272         58.983452
2   California         Lake         38.896719         39.331367
3   California      Ventura         42.923190         45.250693
..         ...          ...               ...               ...
96   Wisconsin    La Crosse         37.490904         40.577038
97   Wisconsin    Lafayette         38.104967         41.675050
98     Wyoming       Weston         76.684241         83.983328
99      Alaska  District 34         77.063259         40.789626

[100 rows x 4 columns]

100 linhas; cada linha representa votos por condado numa eleição presidencial.

1 https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/VOQCHQ
Testes de Hipóteses em Python

Hipóteses

Pergunta: A porcentagem de votos no candidato republicano foi menor em 2008 do que em 2012?

$H_{0}$: $\mu_{2008} - \mu_{2012} = 0$

$H_{A}$: $\mu_{2008} - \mu_{2012} < 0$

Defina nível de significância $\alpha = 0.05$.

  • Dados são pareados → cada porcentagem se refere ao mesmo condado
    • Queremos capturar padrões de voto no modelo
Testes de Hipóteses em Python

De duas amostras para uma

sample_data = repub_votes_potus_08_12
sample_data['diff'] = sample_data['repub_percent_08'] - sample_data['repub_percent_12']
import matplotlib.pyplot as plt
sample_data['diff'].hist(bins=20)

Histograma da variável diff — a maioria dos valores está entre -10 e 10, com alguns outliers.

Testes de Hipóteses em Python

Calcule estatísticas da amostra da diferença

xbar_diff = sample_data['diff'].mean()
-2.877109041242944
Testes de Hipóteses em Python

Hipóteses revisadas

Hipóteses antigas:

$H_{0}$: $\mu_{2008} - \mu_{2012} = 0$

$H_{A}$: $\mu_{2008} - \mu_{2012} < 0$

 

Novas hipóteses:

$H_{0}$: $\mu_{\text{diff}} = 0$

$H_{A}$: $ \mu_{\text{diff}} < 0$

$t = \dfrac{\bar{x}_{\text{diff}} - \mu_{\text{diff}}}{\sqrt{\dfrac{s_{diff}^2}{n_{\text{diff}}}}}$

$df = n_{diff} - 1$

Testes de Hipóteses em Python

Calculando o p-valor

n_diff = len(sample_data)
100
s_diff = sample_data['diff'].std()
t_stat = (xbar_diff-0) / np.sqrt(s_diff**2/n_diff)
-5.601043121928489
degrees_of_freedom = n_diff - 1
99

$t = \dfrac{\bar{x}_{\text{diff}} - \mu_{\text{diff}}}{\sqrt{\dfrac{s_{\text{diff}}^2}{n_{\text{diff}}}}}$

$df = n_{\text{diff}} - 1$

 

from scipy.stats import t
p_value = t.cdf(t_stat, df=n_diff-1)
9.572537285272411e-08
Testes de Hipóteses em Python

Testando diferença entre duas médias com ttest()

import pingouin

pingouin.ttest(x=sample_data['diff'],
y=0,
alternative="less")
               T  dof alternative         p-val          CI95%   cohen-d  \
T-test -5.601043   99        less  9.572537e-08  [-inf, -2.02]  0.560104   

             BF10  power  
T-test  1.323e+05    1.0
1 Detalhes sobre os retornos de pingouin.ttest() estão na documentação da API do pingouin em https://pingouin-stats.org/generated/pingouin.ttest.html#pingouin.ttest.
Testes de Hipóteses em Python

ttest() com paired=True

pingouin.ttest(x=sample_data['repub_percent_08'],
               y=sample_data['repub_percent_12'],
               paired=True,
               alternative="less")
               T  dof alternative         p-val          CI95%   cohen-d  \
T-test -5.601043   99        less  9.572537e-08  [-inf, -2.02]  0.217364   

             BF10     power  
T-test  1.323e+05  0.696338
Testes de Hipóteses em Python

ttest() não pareado

pingouin.ttest(x=sample_data['repub_percent_08'],
               y=sample_data['repub_percent_12'],
               paired=False, # The default
               alternative="less")
               T  dof alternative     p-val         CI95%   cohen-d   BF10  \
T-test -1.536997  198        less  0.062945  [-inf, 0.22]  0.217364  0.927   

           power  
T-test  0.454972  
  • Usar t-test não pareado em dados pareados aumenta a chance de falso negativo
Testes de Hipóteses em Python

Vamos praticar!

Testes de Hipóteses em Python

Preparing Video For Download...