12/10/2016

Testes de hipótese: noções gerais

Testes de hipótese

  • Teste estatĆ­stico sobre a relação entre conjuntos de variĆ”veis
    • Ex.: qual a relação entre as alturas de homens e mulheres?
  • Confronta duas hipóteses sobre a variĆ”vel
    • H0, hipótese nula: as diferenƧas observadas entre as variĆ”veis sĆ£o devidas ao acaso, coincidĆŖncia
    • Ha, hipótese alternativa: as diferenƧas observadas sĆ£o influenciadas por alguma causa nĆ£o-aleatórias

Testes de hipótese

  • O resultado do teste Ć© o p-valor, i.e., a probabilidade de o resultado observado caso H0 seja verdadeira – P(resultado|H0)
    • Se p-valor < alfa, rejeitamos H0
    • Se p-valor >= alfa, nĆ£o hĆ” evidĆŖncias para rejeitar H0
  • O valor alfa Ć© o nĆ­vel de significĆ¢ncia do teste; Ć© comum usar 0.05 (5%).

Testes de hipótese: exemplo

  • Uma moeda Ć© lanƧada 30 vezes e resulta em 22 caras. A moeda Ć© justa?
  • Formulação das hipóteses:
    • H0: a moeda Ć© justa, i.e., P(cara) = P(coroa) = 0.5
    • Ha: a moeda Ć© enviesada, i.e., P(cara) ≠ P(coroa)
  • p-valor = P(22 caras | moeda justa)
    • Nesse caso, p = 0.01762 (pode ser calculado com base em regras de probabilidade)
  • Rejeitamos a hipótese nula, e concluĆ­mos que hĆ” evidĆŖncias significativas de que a moeda Ć© enviesada

Testes de hipótese: exemplo em R

prop.test(22, 30)
## 
##  1-sample proportions test with continuity correction
## 
## data:  22 out of 30, null probability 0.5
## X-squared = 5.6333, df = 1, p-value = 0.01762
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.5382722 0.8702456
## sample estimates:
##         p 
## 0.7333333

Testes de hipótese: o que não dizer

  • Exemplo: P(22 caras | moeda justa) = 0.01762
  • "HĆ” 1.76% de chance de a moeda ser justa"
  • Por que essa afirmação Ć© imprecisa?

xkcd

Erros de decisão

Os testes eventualmente podem levar a conclusƵes erradas:

  • Erro tipo I: rejeitar H0 quando ela Ć© verdadeira.
    • P(erro tipo I) = alfa
  • Erro tipo II: nĆ£o rejeitar H0 quando ela Ć© falsa.
    • P(erro tipo II) Ć© chamado de beta

Poder do teste

  • Normalmente se deseja rejeitar H0
    • Isso significa encontrar evidĆŖncias de que sua hipótese sobre uma relação entre variĆ”veis Ć© verdadeira
  • Por isso, buscamos usar o teste estatĆ­stico com maior poder que pudermos usar

Teste T

Escolha de testes de hipótese

  • Cada teste serve para um tipo de hipótese
  • Cada teste Ć© adequado para certos tipos de variĆ”veis (categóricas, numĆ©ricas…)
  • Cada teste possui pressupostos (assumptions) que devem ser atendidos
    • Do contrĆ”rio, o p-valor nĆ£o tem significado

Teste de t-Student (teste T) para 2 amostras independentes

  • Avalia a hipótese alternativa de que duas populaƧƵes possuem mĆ©dias diferentes
  • Pressupostos:
    • IndependĆŖncia: os dados de uma amostra sĆ£o independentes dos dados da outra
    • Normalidade: as duas populaƧƵes seguem distribuiƧƵes normais
    • Homocedasticidade: as duas populaƧƵes possuem a mesma variĆ¢ncia (desvio-padrĆ£o^2)
  • O teste T Ć© robusto a desvios pequenos e mĆ©dios dos pressupostos

Teste T: exemplo em R

masc <- survey %>% filter(Sex == 'Male')
fem <- survey %>% filter(Sex == 'Female')

# OBS.: conf.level = 1 - alfa. O padrão é 0.95
t.test(masc$Height, fem$Height, conf.level = 0.95)
## 
##  Welch Two Sample t-test
## 
## data:  masc$Height and fem$Height
## t = 12.924, df = 192.7, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  11.13420 15.14454
## sample estimates:
## mean of x mean of y 
##  178.8260  165.6867

Teste T: exemplo em R (outra forma)

Teste T pode ser pensado como uma hipótese sobre a relação entre uma variÔvel numérica e uma variÔvel binÔria (categórica com 2 valores possíveis):

t.test(survey$Height ~ survey$Sex)
## 
##  Welch Two Sample t-test
## 
## data:  survey$Height by survey$Sex
## t = -12.924, df = 192.7, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -15.14454 -11.13420
## sample estimates:
## mean in group Female   mean in group Male 
##             165.6867             178.8260

Teste T: exemplo em R (consideraƧƵes)

  • Note que esse estudo possui uma ameaƧa Ć  validade externa (generalização das conclusƵes):
    • Os dados sĆ£o de estudantes de estatĆ­stica da Universidade de Adelaide, Australia (veja no R: ?MASS::survey)
    • A amostra estudada nĆ£o Ć© uma amostra aleatória de toda a população mundial

Teste T: avaliando os pressupostos

  • IndependĆŖncia: Ć© uma consequĆŖncia da forma como os dados foram obtidos
  • Normalidade: pode ser avaliado usando testes de normalidade como shapiro.test e ks.test (ou graficamente com um histograma ou um Q-Q plot)
  • Homocedasticidade: pode ser avaliado usando testes de variĆ¢ncia como o var.test (ou graficamente com um Q-Q plot)

Teste T: avaliando normalidade

H0: população possui distribuição normal

shapiro.test(masc$Height)
## 
##  Shapiro-Wilk normality test
## 
## data:  masc$Height
## W = 0.99175, p-value = 0.7719
shapiro.test(fem$Height)
## 
##  Shapiro-Wilk normality test
## 
## data:  fem$Height
## W = 0.98027, p-value = 0.1313

Teste T: avaliando normalidade

hist(masc$Height)

Teste T: avaliando normalidade

hist(fem$Height)

Teste T: avaliando normalidade

qqnorm(masc$Height)
qqline(masc$Height)

Teste T: avaliando normalidade

qqnorm(fem$Height)
qqline(fem$Height)

Teste T: avaliando homocedasticidade

var.test(masc$Height, fem$Height)
## 
##  F test to compare two variances
## 
## data:  masc$Height and fem$Height
## F = 1.8557, num df = 105, denom df = 101, p-value = 0.001951
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  1.257430 2.734627
## sample estimates:
## ratio of variances 
##           1.855722

Teste T: avaliando homocedasticidade

  • Os dados sĆ£o heterocedĆ”sticos!
  • NĆ£o tem problema; nesse caso a função t.test do R usa o teste T de Welch
    • adaptação do teste t-Student que lida com o problema da heterocedasticidade

Teste T: avaliando homocedasticidade

Note a linha: "Welch Two Sample t-test"

t.test(survey$Height ~ survey$Sex)
## 
##  Welch Two Sample t-test
## 
## data:  survey$Height by survey$Sex
## t = -12.924, df = 192.7, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -15.14454 -11.13420
## sample estimates:
## mean in group Female   mean in group Male 
##             165.6867             178.8260

Teste T: avaliando pressupostos (dica)

  • Em um artigo, vocĆŖ nĆ£o precisa mostrar todos esses grĆ”ficos e anĆ”lises para justificar o uso do teste T
  • Simplesmente diga que verificou o pressuposto de normalidade com o teste (insira aqui o nome do teste que vocĆŖ usou)

Teste T pareado

  • Igual ao teste T, só que para duas amostras dependentes
    • duas amostras de mesmo tamanho, cada valor em uma amostra estĆ” relacionado ao valor na outra
    • ex.: medir o desempenho de uma pessoa usando a ferramenta X e usando a ferramenta Y
  • Hipóteses:
    • H0: a diferenƧa (xi - yi) tem mĆ©dia 0
    • Ha: a diferenƧa Ć© diferente de 0

Teste T pareado

  • Pressupostos:
    • DependĆŖncia: os dados sĆ£o pareados
    • Normalidade: a diferenƧa entre as variĆ”veis segue uma distribuição normal

Teste T pareado: checando normalidade

Exemplo: a mão que escreve (Wr.Hnd) e a outra mão (NW.Hnd) possuem tamanhos diferentes, medidos da ponta do polegar à ponta do dedo mínimo?

Teste T pareado: checando normalidade

hist(survey$Wr.Hnd - survey$NW.Hnd)

Teste T pareado: checando normalidade

shapiro.test(survey$Wr.Hnd - survey$NW.Hnd)
## 
##  Shapiro-Wilk normality test
## 
## data:  survey$Wr.Hnd - survey$NW.Hnd
## W = 0.8757, p-value = 5.786e-13

Teste T pareado: exemplo em R

A mão que escreve (Wr.Hnd) e a outra mão (NW.Hnd) possuem tamanhos diferentes, medidos da ponta do polegar à ponta do dedo mínimo?

Teste T pareado: exemplo em R

(OBS.: nesse caso não devemos usar o teste T pois não atendemos ao pressuposto de normalidade!)

t.test(survey$Wr.Hnd, survey$NW.Hnd, paired=TRUE)
## 
##  Paired t-test
## 
## data:  survey$Wr.Hnd and survey$NW.Hnd
## t = 2.1268, df = 235, p-value = 0.03448
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.006367389 0.166513967
## sample estimates:
## mean of the differences 
##              0.08644068

Testes não-paramétricos

Paramétrico vs não-paramétrico

  • O teste T Ć© um teste paramĆ©trico, pois assume que os dados seguem uma determinada distribuição
  • E se esse pressuposto nĆ£o puder ser atendido?
  • Podemos usar testes nĆ£o-paramĆ©tricos

Teste Mann-Whitney

  • Equivalente ao teste T para duas amostras independentes
    • Compara as medianas de duas amostras (mais ou menos)
  • Pressupostos:
    • As duas amostras sĆ£o independentes
    • A variĆ”vel estudada Ć© no mĆ­nimo ordinal
    • As duas amostras possuem a mesma forma (ver discussĆ£o detalhada)

Teste Mann-Whitney: exemplo em R

NĆŗmero de testes executados Ć© diferente comparando projetos em Java e em Ruby?

Teste Mann-Whitney: exemplo em R

boxplot(builds100$tr_tests_run ~ builds100$gh_lang)

Teste Mann-Whitney: exemplo em R

wilcox.test(builds100$tr_tests_run ~ builds100$gh_lang)
## Warning in wilcox.test.default(x = c(0L, 3L, 1148L, 136L, 179L, 147L), y =
## c(718L, : cannot compute exact p-value with ties
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  builds100$tr_tests_run by builds100$gh_lang
## W = 68, p-value = 0.09294
## alternative hypothesis: true location shift is not equal to 0

Teste de Wilcoxon pareado

  • Similar ao teste de Mann-Whitney, para dados pareados
  • AnĆ”logo ao teste T pareado, porĆ©m nĆ£o paramĆ©trico

Teste de Wilcoxon: exemplo em R

Existe diferença entre o número de arquivos adicionados e o número de arquivos removidos em cada build?

Teste de Wilcoxon: exemplo em R

boxplot(1+builds100$gh_files_added, 1+builds100$gh_files_modified, log="y")

Teste de Wilcoxon: exemplo em R

wilcox.test(builds100$gh_files_added, builds100$gh_files_modified, paired=T)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  builds100$gh_files_added and builds100$gh_files_modified
## V = 105.5, p-value = 7.472e-16
## alternative hypothesis: true location shift is not equal to 0

SumƔrio: testes para duas amostras, variƔveis numƩricas

Testes

paramétrico não-paramétrico
independentes Teste T Teste U (Mann-Whitney)
pareados Teste T pareado Teste de Wilcoxon pareado

ObservaƧƵes:

  • nos testes nĆ£o paramĆ©tricos, as variĆ”veis podem ser ordinais
  • quando podem ser aplicados, os testes paramĆ©tricos geralmente possuem poder maior que os nĆ£o-paramĆ©tricos

FunƧƵes em R

paramétrico não-paramétrico
independentes t.test(...) wilcox.test(...)
pareados t.test(..., paired=T) wilcox.test(..., paired=T)

Tópicos avançados sobre teste de hipótese

MĆŗltiplos testes

  • VocĆŖ quer avaliar se a moeda usada na Copa do Mundo de 2014 Ć© enviesada atravĆ©s de um experimento: lanƧa a moeda 30 vezes e conta nĆŗmero de caras.
  • Com um lanƧamento, nĆ£o foi possĆ­vel rejeitar H0.
  • VocĆŖ repete o experimento 100 vezes, atĆ© que finalmente o resultado Ć© 22 caras (p < 0.05).
  • VocĆŖ escreve um artigo dizendo que provou que a moeda da copa Ć© enviesada.
  • O que estĆ” errado?

xkcd

Correção de Bonferroni

  • No caso de mĆŗltiplos testes de hipótese, deve ser aplicado um fator de correção ao alfa (para rejeitar H0, p < alfa * fator)
  • O mĆ©todo de correção mais simples Ć© a correção de Bonferroni, na qual fator = 1 / n, onde n Ć© o nĆŗmero de repetiƧƵes
  • Assim, se vamos considerar alfa = 5% e realizar 10 repetiƧƵes, entĆ£o só rejeitamos H0 se p < 0,5%
  • A correção de Bonferroni Ć© muito conservadora (existem outras)
    • i.e., diminui o poder do teste
    • i.e., fica mais difĆ­cil rejeitar H0

p-hacking

Tamanho do efeito e relevância

Resultado estatisticamente significativo nem sempre Ć© significativo:

  • A diferenƧa observada pode ser muito pequena
    • Ex.: A diferenƧa de tempo entre P1 e P2 Ć© de 1 segundo, em mĆ©dia.
  • O resultado pode nĆ£o ter implicaƧƵes prĆ”ticas ou teóricas interessantes
  • O tamanho do efeito pode ser calculado com o Delta de Cliff (ver pacote compute.es do R)

VariÔveis de confusão

  • Uso de protetor solar estĆ” causa cĆ¢ncer de pele?
  • SignificĆ¢ncia estatĆ­stica ≠ causa
  • Exposição ao sol estĆ” associado tanto com uso de protetor solar quanto Ć  incidĆŖncia de cĆ¢ncer de pele
  • Exposição ao sol Ć© uma variĆ”vel de confusĆ£o

Testes para mais de duas amostras

Discussão sobre número de amostras

  • AtĆ© agora, estudamos testes para comparar duas amostras
    • i.e., uma variĆ”vel numĆ©rica vs. uma variĆ”vel binĆ”ria
    • i.e., consideramos um fator com dois tratamentos
    • ex.: fator linguagem de programação, tratamentos Java e Ruby
  • E se quisermos comparar trĆŖs amostras?
    • ex.: fator linguagem de programação, tratamentos Java, Ruby e Python
  • Solução 1: comparar as amostras duas a duas
    • Problema: mĆŗltiplos testes

ANOVA

  • ANOVA (ANalysis Of VAriance) Ć© um teste para comparar mais de duas amostras
  • Tipos:
    • 1-way ANOVA: um fator com 3 ou mais tratamentos (ex.: linguagem = Java, Ruby ou Python)
    • 2-way ANOVA: dois fatores (ex.: linguagem = Java ou Ruby, tamanho da equipe = pequeno ou grande – nesse caso sĆ£o quatro amostras)
    • n-way ANOVA: n fatores

1-way ANOVA

  • Hipóteses:
    • H0: todas as amostras possuem a mesma mĆ©dia para a variĆ”vel analisada
    • Ha: pelo menos uma das amostras possui mĆ©dia diferente
  • Pressupostos: normalidade, homocedasticidade, independĆŖncia (como no teste T)

1-way ANOVA: exemplo em R

A taxa de batimentos cardĆ­acos depende da frequĆŖncia de exercĆ­cio dos alunos (frequente, algum, nenhum)?

summary(aov(survey$Pulse ~ survey$Exer))
##              Df Sum Sq Mean Sq F value Pr(>F)  
## survey$Exer   2    900   450.2   3.378 0.0362 *
## Residuals   189  25188   133.3                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 45 observations deleted due to missingness

2-way ANOVA e n-way ANOVA

Alternativas não-paramétricas ao ANOVA

  • Kruskall-Wallis (1-way)
  • Friedman (2-way, unreplicated complete block design)

Testes de hipótese para números: resumo

Resumo

  • Para duas amostras:
    • paramĆ©trico: teste T (pareado ou nĆ£o)
    • nĆ£o-paramĆ©trico: Wilcoxon (pareado ou nĆ£o)
  • Para mais de duas amostras:
    • paramĆ©trico: ANOVA (1-way, 2-way ou n-way)
    • nĆ£o-paramĆ©trico: Kruskall-Wallis (1-way) ou Friedman (2-way)

Testes para variƔveis nominais

Exemplo de dados nominais

Considere os bugs de um projeto de software, que podem ser classificados quanto à severidade (severo ou não-severo) e prioridade (prioritÔrio e não-prioritÔrio). Podemos sumarizar os dados através de uma tabela de contingência 2x2:

bugs2 <- bugs %>% mutate(prioritario = priority %in% c('P1', 'P2'),
         severo = severity %in% c('blocker', 'critical', 'major'))
tab <- xtabs(~ prioritario + severo, data=bugs2)
tab
##            severo
## prioritario FALSE  TRUE
##       FALSE  3471 16908
##       TRUE    511  6529

Exemplo de dados nominais

As duas variÔveis (severidade e prioridade) são nomais. SerÔ que elas são independentes? Podemos visualizar com um mosaic plot:

mosaicplot(tab, shade=T)

Teste de independĆŖncia com qui-quadrado

  • O teste do qui-quadrado (chi-squared) pode ser usado para determinar se duas variĆ”veis nominais sĆ£o independentes ou, equivalentemente, se eles seguem a mesma distribuição
  • Pressupostos:
    • Menos de 20% das cĆ©lulas da tabela de contingĆŖncia possuem valor < 5.
    • Os dados nĆ£o sĆ£o pareados

Qui-quadrado: exemplo em R

A distribuição dos status das builds depende da linguagem de programação? Status = canceled, errored, failed, passed ou started; linguagem = Java ou Ruby.

tab <- xtabs(~ gh_lang + tr_status, data=builds)
tab
##        tr_status
## gh_lang canceled errored failed passed started
##    java       78    3197   4191  17733       2
##    ruby      885   11114  17732  74831       0

Qui-quadrado: exemplo em R

A distribuição dos status das builds depende da linguagem de programação? Status = canceled, errored, failed, passed ou started; linguagem = Java ou Ruby.

tab <- xtabs(~ gh_lang + tr_status, data=builds)
chisq.test(tab)
## Warning in chisq.test(tab): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  tab
## X-squared = 170.46, df = 4, p-value < 2.2e-16

Teste de McNemar

  • VersĆ£o do qui-quadrado para testes pareados

Teste de McNemar: exemplo em R

Existe dependência entre as variÔveis binÔrias prioridade e severidade em bugs?

tab <- xtabs(~ prioritario + severo, data=bugs2)
chisq.test(tab)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tab
## X-squared = 401.86, df = 1, p-value < 2.2e-16

Tamanho do efeito

  • Pode ser medido com o V de Cramer.

SumƔrio

SumƔrio

  • Os testes de hipótese relacionam uma variĆ”vel numĆ©rica ou categórica com uma variĆ”vel categórica usada para agrupar os dados.
    • Ex.: teste T Ć© variĆ”vel numĆ©rica vs. categórica
    • Ex.: teste qui-quadrado Ć© variĆ”vel categórica vs. categórica
  • E se quisermos relacionar duas variĆ”veis numĆ©ricas?
    • Devemos usar correlação e anĆ”lise de regressĆ£o

SumƔrio

ReferĆŖncias

ReferĆŖncias