Metodologia de pesquisa científica: busca bibliográfica, testes estatísticos e além

Jacques Wainer (wainer@ic.unicamp.br)

SECOM - Agosto 2017

Voltado para 3 tipos de audiências:

  • Futuros pesquisadores (mestrado e doutorado)

    Todos os assuntos

  • Profissionais

    Testes estatísticos e talvez busca bibliográfica

  • Cidadãos

    Como entender resultados da Ciência em geral

1) Busca bibliográfica

Ordem de qualidade em publicações da Computação

  • Regra geral.Talvez a área de hardware seja levemente diferente.
  • Maior qualidade significa que você pode confiar mais no resultado, que provavelmente os resultados são mais generalizáveis e podem ser repetidos.
    • Veículo
    • Citações
    • Idade
    • Tipo de pesquisa

Veículo

  • Revistas científicas de qualidade
  • Conferencias de qualidade (ACM, IEEE - mas nem todas!!)
  • Relatórios técnicos (arXiv) (com algum cuidado!)
  • Teses e dissertações
  • evite
  • Revistas predatórias (open access)
  • Conferencias predatórias

Citações

  • Quanto mais citações melhor
  • Citações são referências que um artigo faz a outros
  • Google Scholar, Scopus, Web of Science, e Microsoft Academic contam as citações de alguns artigos
  • Os diferentes serviços usam diferentes conjuntos de artigos para contar as citações. Google Scholar é o mais completo

Idade

  • Artigos mais recentes são provavelmente mais relevantes que os mais antigos
  • Mas este critério entra em conflito com o de citações: artigos mais antigos tiveram mais tempo para acumular citações!
  • Artigos novos com muitas citações são particularmente interessantes.

Tipo de pesquisa

Artigos reportam em diferentes tipos de pesquisa. Por ordem de qualidade:

  • provas matemáticas (normalmente só para Teoria)
  • meta-análises (resumem os resultados de vários artigos empíricos num só resultado)
  • revisões sistemáticas (resumem os vários artigos mas não sintetizam em um só resultado)
  • surveys (textos de especialistas que resume uma área de pesquisa)
  • pesquisas empíricas quantitativas (fazem um experimento para medir várias alternativas)
  • pesquisa empíricas qualitativas (fazem experimentos para observar um ou mais sistemas)
  • pesquisa não empírica (propõem e/ou desenvolvem um sistema para resolver um problema)

Meta análises

  • Resumem resultados de vários experimentos quantitativos num só resultado final.
  • Usualmente para áreas que envolvem pessoas: engenharia de software, gerência de sistemas, informática em educação, informática em saúde
  • Usam estatísticas mais elaboradas para "tirar a média" das medidas de vários experimentos.
  • É muito importante que a seleção dos artigos/experimentos a serem agregados seja a mais objetiva e ampla o possível

Revisões sistemáticas (ou mapeamento sistemático)

  • Pesquisa resume as várias vertentes de uma área de pesquisa, com resumos quantitativos.
  • Diferente na meta-analise não "tira a média" dos resultados
  • De novo, é importante que a seleção dos artigos/experimentos a serem agregados seja a mais objetiva e ampla o possível.

Surveys

  • Mapeamento de uma área por um especialista
  • Ótimo para aprender sobre um assunto e obter outras referências
  • Não há uma preocupação que a seleção de artigos referenciados seja objetiva e ampla

Ordem de qualidade em Ciência em geral

  • Apenas revistas. Não há conferências na maioria das outras áreas
  • Citações e idade: OK
  • Tipo de pesquisa: OK. Não existe surveys nas outras áreas!
  • Em medicina e nutrição não acredite em nada que só tenha uma pesquisa empírica publicada mesmo que em boa revista. Para seu consumo, busque as meta-análises: cirurgia de joelho e dieta mediterrânea
  • Em medicina, verifique a biblioteca Cochrane

Serviços de bibliografia

  • Google Scholar acesso aberto, completo, mas sem controle da ordem de resposta
  • Scopus pago, acesso via Unicamp. inclui boas revistas e boas conferencias de computação
  • Web of Science pago, acesso da Unicamp(?), inclui apenas boas revistas, padrão para contagem de citações

Passos de uma busca bibliográfica

  • Procure pelas palavras chaves (poucas!!) da sua pesquisa
    • no Scopus, restrinja para as áreas de computação/engenharia
  • Encontre os artigos de maior qualidade (veículo, citações, tipo de pesquisa)
    • no Scopus ordene por citações e talvez restrinja por veículo
    • leia apenas o Abstract dos artigos para saber se eles parecem relevantes
  • Para um artigo escolhido X
    • as referencias no artigo X podem ser úteis
    • mais importante são os artigos que fazem referencias para X
    • procure também nos "Related articles" Esses são artigos "parecidos" com X (baseado nas referencias que fazem) e podem ser muito úteis para encontrar outras famílias de artigos
  • Selecione os artigos relevantes (de novo pelo Abstract)
  • Só depois faça a primeira leitura do artigo completo - em particular as Conclusions,
    • na primeira leitura de um artigo você não precisa entender tudo, você pode pular partes. Não se atenha ao que você não sabe. Verifique apenas se é um artigo realmente importante
    • se for realmente importante (e só poucos serão nesse momento), faça a segunda (e terceira leitura).
  • Para artigos importantes, verifique outros artigos do mesmo autor.

Exemplo no Scopus

  • Na Unicamp eu prefiro usar o Scopus.
  • Ele inclui a maioria dos veículos de boa qualidade da computação e não inclui os veículos ruins. O Scholar inclui tudo.
  • O Scopus permite controlar/limitar e ordenar a busca, e pode enviar as referencias marcadas via email

2) Testes estatísticos

  • O papel de testes estatísticos é dar evidencia que dois (ou mais) conjuntos de dados não vieram da mesma fonte.
  • Você rodou 2 versões de um programa em vários dados,
    • programa 1 demorou 10.30, 12.08, 9.33, 9.62, 9.88 (segundos) em 5 exemplos
    • programa 2 demorou 9.23, 9.84, 8.55, 10.42 em outros 4 exemplos.
  • Há dois conjuntos de dados. Não existe teste para 2 números, só para 2 ou mais conjuntos de dados
  • Dizer que os dois conjuntos de dados são "diferentes" é numa primeira aproximação dizer que esses dados vieram de duas fontes de dados ("populações") diferentes.
  • Ou melhor, dizer que dois conjuntos são "diferentes" é dizer que é bem improvável que os dados vieram da mesma fonte.

Quando você precisa de testes estatísticos?

Se não há custos para tomar a decisão

  • Média de execução do primeiro programa é 10.242 e a do segundo programa 9.648
  • Portanto o segundo programa é mais rápido. Escolha o segundo programa.
  • Se não há custos diferentes para escolher um ou outro programa, então você precisa de pouca evidência para decidir, escolha o com menor média, e pronto.

Se há custos diferentes para a decisão, é preciso mais evidência

  • Vamos dizer que o programa 1 já esta em uso e o segundo terá que ser posto em produção. Há um custo em tomar esta decisão, e você precisa de mais evidencias que o programa 2 é realmente mais rápido.
  • Ou o programa 1 foi publicado num artigo e você que dizer para a comunidade científica que seu programa é melhor/mais rápido. Você precisa de um muita evidencia que ele realmente é o melhor.
  • Nestes casos você usará testes estatísticos.

O que testes estatísticos não fazem

  • Testes estatísticos não dizem quando a diferença entre os 2 conjuntos é grande, ou importante.
  • Testes estatísticos não dizem quando não há diferença entre os 2 conjuntos.

O ponto central de um teste estatístico

  • Você tem dois conjuntos de dados A e B.
  • Assuma que eles vieram de uma mesma fonte de dados F (cujos detalhes você não sabe). Isso é chamado de hipótese nula
  • Calcule a probabilidade que 2 amostras dessa fonte F tenham as médias tão diferentes quanto as médias de A e B. Essa probabilidade é chamada de p-valor
  • Se o p-valor é alto, então é mais provável que A e B venham dessa mesma fonte e a diferença nas médias é apenas devido a "sorte"
  • Se o p-valor for baixo então há baixa chance que dados tão diferentes quanto os de A e B tenham vindo desta mesma fonte F. Se eles vieram de "fontes diferentes" então a diferença entre eles não é apenas por causa da sorte.
  • Em Ciência em geral, assume-se que p-valores menores que 0.05 (ou 95% de confiança) são evidência suficiente que os dados não vieram de uma mesma fonte.
  • Assim, se o p-valor é baixo (< 0.05), você tem alguma evidência que os conjuntos de dados são realmente diferentes (não vieram da mesma fonte) e diz-se que a diferença é "estatisticamente significante" (com 95% de confiança)
  • Se o p-valor é alto (> 0.05) não há nada que você pode dizer. Você não mostrou que os dados são semelhantes ou iguais. Você apenas não conseguiu mostrar que eles são diferentes!!!
  • Assim normalmente você quer um p-valor baixo

Dados de uma mesma fonte podem ter médias diferentes

a=rnorm(6,10)
b=rnorm(4,10)

rnorm(6,10) gera 6 dados de uma distribuição normal de média 10, e desvio padrão de 1.

mean(a)
mean(b)

tira a média dos dois conjuntos. Não são iguais, um deles é "melhor"! Mas eles são basicamente iguais - são duas amostragens de uma mesma fonte, e a diferença entre os dois conjuntos é apenas devido a "sorte"

Uma babel de testes estatísticos

  • Um teste estatístico tem que:
    • definir como construir a fonte F dos dados de A e B
    • derivar uma formula que permite calcular o p-valor dado o F e as diferenças das médias (ou outra medida) de A e B
  • É preciso fazer pressuposições sobre o F e sobre A e B
  • É preciso fazer aproximações de como calcular o p-valor. Cada um que fez isso colocou o seu nome no teste! (Ou outros colocaram em homenagem).
    • Student t-test
    • Welch t-test
    • Wilcoxon signed rank, sum rank
    • Friedman test
    • Kruskal–Wallis
    • etc

Poder de um teste

  • Um teste T1 é mais poderoso que T2 se o calculo do p-valor de T1 resulta num número menor o p-valor de T2. Já que você quase sempre quer p-valores mais baixos, você quer usar o teste mais poderoso.
  • Testes mais poderosos fazem mais pressuposições sobre os dados, o que pode não ser verdade num caso particular. O teste T assume que os dados são normais (gaussianos). Isso provavelmente não é verdade para tempo de execução, para taxa de acerto, etc

Testes pareados e não pareados

  • Testes pareados são usados se há uma relação entre cada dado de um conjunto com um dado do outro conjunto (ou conjuntos).
    • tempo de execução dos 2 programas com o mesmo teste!
    • tempo de execução de uma tarefa pela mesma pessoa com e sem a modificação na interface
  • Testes não pareados (para dados "independentes") não há essa relação. E os dois conjuntos podem ter um número diferente de dados.
  • Testes pareados são mais poderosos que os não pareados.

Tabela (parcial) de testes

  • paramétrico = os dados A e B são normalmente distribuídos (e n>30)

2 conjuntos de dados

  pareado não pareado
paramétrico teste T pareado teste T nao pareado
não paramétrico Wilcoxon signed rank Wilcoxon sum rank

Mais de 2 conjuntos de dados

  pareado não pareado
paramétrico repeated ANOVA ANOVA
não paramétrico Friedman Kruskal-Wallis

outros tipos de dados

Há outros testes para outras situações (dados não numéricos, dados 0/1 pareados e não pareados, etc).

Exemplos

a=rnorm(6,10)
b=rnorm(4,10)
wilcox.test(a,b)

wilcox.test roda o sum rank (dados não pareados), que é um teste não paramétrico

x=rnorm(35,10)
y=rnorm(30,10.3)
wilcox.test(x,y)
t.test(x,y)

veja que o teste T deu um p-valor menor, e confirma o que foi dito que teste T é mais poderoso. Mas veja:

wilcox.test(a,b)
t.test(a,b)

a e b não satisfazem as pressuposições do teste T (n>30) e então o teste não da o menor p-valor.

Testes estatísticos em computação

  • Em computação, a quantidade de dados em cada conjunto não é usualmente um problema. O problema é que a maioria dos dados não são normais, o que é uma violação seria do teste T (e ANOVA).
  • Considere sempre usar os testes não paramétricos (Wilcoxon, Friedman e Kruskal-Wallis, e outros). Mesmos que os dados sejam normais, os testes não paramétricos dão resultados parecidos (mas maiores) com os paramétricos.
  • Para dados não normais, usualmente usa-se a mediana e não a média para comparar quem é melhor: o programa com menor mediana do tempo de execução é o melhor
  • Em muitos casos, os experimentos são pareados: mesmos dados de teste para os dois programas, mesma pessoa antes e depois de um sistema, etc.

Testes para um só conjunto de dados

  • A ênfase que eu dei para testes estatísticos é na comparação de 2 ou mais conjunto de dados.
  • Mas é possível fazer um teste para apenas 1 conjunto de dados (A), e normalmente estamos tentando obter evidencias que a média do conjunto é diferente de 0
  • O teste estatístico assume que os dados vieram de uma fonte F cuja a média é 0 (ou o valor que estamos testando). Os outros detalhes da fonte são desconhecidos, e cada teste faz diferentes pressuposições sobre os outros detalhes de F. O teste calcula a probabilidade de uma amostra do F tenha a média igual ou maior a que obtivemos para o conjunto A.
  • Normalmente todos os testes que comparam 2 conjuntos podem ser usados para um só conjunto
?t.test

Problemas com testes estatísticos

  • múltiplos testes
  • múltiplos testes como múltiplos experimentos
  • múltiplos testes como comparação de vários conjuntos - múltiplas comparações
  • uso do teste errado para o seus dados
  • p-valor<0.05 não é um mandamento divino
  • p-valor muito baixo não significa que os dois conjuntos são muito diferentes
  • p-valor alto não significa que os conjuntos são iguais

Múltiplos testes - o grande problema

  • Se você repetir 20 vezes um teste que dá uma resposta errada com probabilidade 1/20, você terá em média 1 resposta errada!

Múltiplos testes disfarçado de múltiplas variáveis

  • Se você medir 20 variáveis, provavelmente uma delas "vai dar" uma diferença significativa.
  • "Já que nos vamos fazer esse experimento caro, vamos também medir A, B, C, D …"
a=matrix(rnorm(300),ncol=20)
b=matrix(rnorm(400),ncol=20)
for (i in 1:20){
   teste=t.test(a[,i],b[,i])
   print(paste(i,":",  round(teste$p.value,3)))
}

Múltiplos testes disfarçado de múltiplos experimentos

  • Vários experimentos com diferentes conjuntos de dados (da mesma "fonte")
  • p. exemplo: "Vamos trocar o nome dessa variável do programa e gere novos dados"

Múltiplos testes quando comparando vários conjuntos de dados: múltiplas comparações

  • Testes como o ANOVA, Kruskal-Wallis só dão um p-valor para a hipótese nula: todos os conjuntos de dados vieram da mesma fonte.
  • Se p<0.05, quais entre eles são significativamente diferentes e quais não? Isso é chamado de análise post hoc. Uma idéia é fazer testes entre pares de conjuntos, e isso é chamado do problema das múltiplas comparações (veja este cartoon do xkcd)
  • Há vários métodos para corrigir o valor dos p-valores de cada comparação (para valores mais altos).

Outros problemas

  • p-valor<0.05 não é um mandamento divino - resultados úteis não foram publicados pois p-valor=0.06
  • p-valor é uma função da "tamanho da diferença" entre os dois conjuntos e do número de dados:
    • p-valor muito baixo não significa que os dois conjuntos são muito diferentes. Para n → ∞, p-valor vai para 0 ou 1.
    • p-valor alto não significa que os conjuntos são iguais, pode significar que você tem poucos dados.

O que isso significa?

  • Variações do problema de múltiplos testes geram falsos positivos: afirmações que um fenômeno existe quando ele de fato não existe.
  • De vez em quando isso é chamado de p-hacking mas o problema existe mesmo quando o pesquisador não tem más intenções
  • É por isso que para coisas importantes como saúde você deve duvidar que todo resultado que saiu em um só artigo - pode ser um falso positivo.

Testes A/B - para futuros profissionais

  • Tipo de experimento muito comum em empresas com interfaces Web. pagina no Wikipedia
  • Testa dois (ou mais) (talvez pequenas) variações na interface (cores, fonte, placement).
  • As duas versões (A e B) são atribuídas aleatoriamente para usuários e mede-se alguma métrica para cada uma das duas versões (normalmente click-through que eles chamam de conversion rate).
  • Normalmente usam testes estatístico para verificar se uma versão é significativamente diferente da outra.

Teste A/B tradicional

  • É preciso definir primeiramente o tamanho do experimento (N).
  • formulas e tabelas em estatística para definir o tamanho de um experimento dado
    • o grau de confiança do teste (normalmente 95%)
    • a diferença esperada dos dois conjuntos. Veremos adiante isto é o tamanho do efeito e normalmente usa-se o valor 0.2
    • uma medida do poder do teste (normalmente usa-se 0.8)
    • há outras formulas para calcular o N (e sites para fazer o calculo - por exemplo este)
  • Rode o experimento para N usuários. Use o teste estatístico apropriado para ver se A é melhor e significativamente diferente de B. Passe a usar a variante A.

Teste A/B sequencial

  • Na versão sequencial, você observa os resultados e faz os testes estatísticos de tempos em tempos. Assim que p-valor <0.05, você para o experimento e declara o vencedor.
  • Mas já vimos que fazer múltiplos testes é um problema. Neste caso provavelmente haverá casos onde p<0.05 mesmo "no final" (depois de N usuários) isso não seja verdade
a=rnorm(1000,10)
b=rnorm(1000,10)
for (i in 10:1000){
   x = t.test(a[1:i],b[1:i])$p.value 
   if (x < 0.05) print(paste(i,x))
}
  • É preciso usar testes muito mais restritivos (veja por exemplo este site)

3) Além de testes estatísticos

Intervalo de confiança

  • Em vez de comparar dois conjuntos de valores, mostrar a incerteza sobre o valor da média de uma fonte possível para cada um deles.
  • De certa forma é o dual de um teste estatístico de uma só amostra: qual o intervalo de valores para a média da fonte F que daria um p-valor maior que 0.05.
  • Da mesma forma que testes de uma só amostra, o intervalo de confiança faz pressuposições sobre as outras características de fonte F (menos a média). Na verdade cada teste de uma só amostra pode gerar (e em R gera) um intervalo de confiança para a média (ou mediana) da fonte.
a=rnorm(6,10)
t.test(a)
wilcox.test(a,conf.int=T)

Intervalos de confiança como testes estatísticos de 2 amostras

  • Se o intervalo de confiança de dois conjunto de dados tem interceção então não há diferença significativa entre eles. (Ou melhor o p-valor do teste estatístico de 2 conjuntos dará um p-valor > 0.05)
  • Se o intervalo de confiança de dois conjuntos não tem interceção, então a diferença entre os conjuntos é estatisticamente significativa.
a=rnorm(6,10)
b=rnorm(8,10.3)
x=rnorm(8,12)
t.test(a,b)
t.test(a)$conf.int
t.test(b)$conf.int
t.test(a,x)
t.test(x)$conf.int

Por que intervalos de confiança?

  • Intervalos de confiança indicam a incerteza que se tem sobre a média (ou mediana) da fonte que gerou os dados.
  • Este artigo que argumenta a favor de intervalos de confiança em vez de testes estatísticos.

Tamanho do efeito

  • Testes estatísticos medem a confiança que existe uma diferença entre os 2 conjuntos de dados.
  • Infelizmente, o nome "significante" parece indicar que a diferença é grande, ou importante.
  • Isso não é verdade: um p-valor baixo apenas indica que voce tem bastante certeza que a diferença existe, não que ela é importante ou significante no sentido tradicional da palavra.
  • Tamanho do efeito é uma família de medidas que medem o tamanho da diferença entre os dois conjuntos.
  • São medidas adimensionais.
  • este é um dos números que entra no calculo do tamanho de um experimento A/B.
  • Tamanho de efeito é comparável através de diferentes experimentos

Cohen D

  • Tamanho de efeito para medidas numéricas.
  • diferença das médias de A e B dividido por uma média ponderada dos desvios padrão (adimensional)
  • mede quão separado são as distribuições de dados de A e B: animação e um figura
  • um D=0.2 significa que a diferença das médias de A e B é 0.2 o desvio padrão delas.

Comparável através de experimentos

  • Tamanho de efeito é comparável através de diferentes experimentos
  • Combinar tamanho de efeito é o que meta-analises fazem!
  • Cohen falou que um tamanho de efeito de 0.2 é pequeno. Na prática não é.
  • Há algumas meta-meta-analises que mostram quais são valores razoáveis em diferentes áreas: Engenharia de Software e Educação
  • 0.25 é a média de tamanhos de efeito para intervenções em educação básica.

Intervalos de confiança para tamanho de efeito

  • Tamanho do efeito é apenas 1 número. Assim como a média de um conjunto é apenas 1 número.
  • Mas é possível definir um intervalo de incerteza para a média de um conjunto (fazendo pressuposições sobre a fonte F dos dados do conjunto).
  • Da mesma forma é possível calcular um intervalo de confiança para tamanho de efeito
  • Talvez esse seja o futuro.
  • Isso resume tudo que é importante: se o intervalo de confiança cruza o 0 então tradicionalmente a diferença não é significativa.

Testes de equivalência

  • Em farmacologia é muito importante mostrar que uma nova formulação de um remédio (genérico) é tão bom quanto a velha formulação.
  • Mas testes estatísticos tradicionais não mostra que dois conjuntos são iguais. p>0.05 apenas mostra que você não conseguiu mostrar que eles são "diferentes".
  • Não dá para mostrar evidencias que 2 conjuntos são iguais. Dá apenas para mostrar que a diferença entre eles é menor que um limite, abaixo do qual você diz que não há "diferença importante"
  • é preciso definir um tamanho de efeito para a diferenças irrelevantes (super dependente da área)
  • testes de equivalência que permitem calcular um p-valor para a hipótese nula que os dados tem um tamanho de efeito maior que o limite de irrelevância. Assim um p-valor baixo indica que é improvável que os dados tenham vindo de fontes mais separadas que o limite.
  • Em principio em computação nós poderíamos querer mostrar que um programa é equivalente a outro (sob algum aspecto mais importante) mas é melhor num aspecto secundário (custo, tempo de execução, etc).
  • Na prática eu nunca vi resultados deste tipo em computação.

Análise Bayesiana

  • Há um conjunto de técnicas estatísticas que começam a ser adotadas.
  • Elas dependem de bastante poder computacional, e portanto não estavam disponíveis nos anos 70 a 90.
  • Talvez em 10 anos elas passem a ser o padrão de análise.
  • Analise Bayesiana resolve vários problemas dos testes tradicionais. Em particular o problema de múltiplas comparações (mas não sei se o problema de múltiplos testes)
  • Este livro é uma excelente introdução