P-hacking: Erros comuns e como evitá-los

Fernando Duarte Salhani
GetNinjas
Published in
7 min readJul 1, 2019

--

English version

“[p-hacking] é o uso indevido de análise de dados para encontrar padrões em dados que podem ser apresentados como estatisticamente significativos, quando, na realidade, não existe um efeito real” — Wikipedia

A partir da definição acima, pode-se pensar que o uso de p-hacking tem a intenção de enganar ou mentir utilizando os dados. No entanto, isto nem sempre é malicioso. Este post tem o intuito de abordar algumas formas a partir das quais o uso de p-hacking pode ser feito acidentalmente e levar a decisões equivocadas. Para isso, será feito um estudo de caso com um experimento simulado.

Fonte: Atoz Markets

O experimento: Jogando moedas

O experimento é muito simples. Imagine que existem 2 conjuntos de 10.000 moedas, que serão jogadas aleatoriamente e o resultado será registrado. Cada moeda tem um tipo diferente associado (1, 5, 10, 25, 50 centavos ou 1 real).

O objetivo do experimento é avaliar se existe diferença entre os conjuntos de moeda utilizando o cálculo de p-valor com os resultados obtidos. O experimento foi realizado 1000 vezes.

A questão é: Não existe diferença entre os conjuntos. A forma de geração dos dados para os dois conjuntos foi igual. Quantas vezes chegaremos à conclusão ERRADA de que há diferença entre os conjuntos?

A forma correta de fazer o teste

Como este teste deveria ser feito?

  1. Determinar o número de data-points necessários para a realização do teste
  2. Realizar o experimento para este número de dados
  3. Avaliar o resultado

Se fizermos isso, olhando apenas para o resultado final dos experimentos, das 1000 simulações, apenas 44 casos (4.4%) determinam que há diferença significante entre as variações.

Olhando a definição de p-valor — a chance de, aleatoriamente, obter um resultado tão intenso quanto o observado — , este resultado faz muito sentido. Utilizando um p-valor de 0.05, espera-se que aproximadamente 5% dos casos atinjam a suposta “significância estatística”.

Replicabilidade

Para diminuir a chance de falsos positivos, pode-se refazer o experimento para ver quais conjuntos apresentam novamente o p-valor menor do que 5%. A probabilidade de ambos apresentarem p-valor cai para 5%² = 0.25%. No caso da simulação realizada, apenas 2 dos 1000 experimentos tiveram p-valor inferior a 5% nas duas iterações (0.2%)

P-hacking para negócios

No ambiente empresarial, poucas pessoas se importarão com o significado dos dados ou a metodologia utilizada. Um product manager quer responder “essa feature melhora este aspecto do produto?” e não “qual é a chance do meu resultado ser fruto de aleatoriedade?”. Diretores querem agilidade nas implementações e resultados. Querem que a resposta de “como o teste está indo?” seja um “Bem” ou “Mal” e não um “Precisamos esperar mais duas semanas para poder avaliar os resultados”

Estas diferenças de mindset, embora completamente naturais, podem levar a experimentos apressados e realizados sem o devido cuidado que levam a diversos problemas como, por exemplo:

  • Sua feature não apresenta o mesmo desempenho que teve durante o teste
  • Um comportamento validado qualitativamente não se manifesta quando um teste é realizado
  • Algumas implementações de produto ficam segmentadas de forma contraintuitiva

Buscando um resultado onde não existe

Vamos voltar agora ao experimento das moedas e demonstrar algumas manipulações muito comuns no mundo de negócios que podem afetar os resultados e obter “significância”, sem que esta realmente exista.

Espiando os dados e observação contínua

“Como está indo o teste? Já tem significância?”

Quem nunca ouviu essas perguntas? Como elas afetam o nosso resultado?

Espiar os dados e calcular a significância no meio do teste pode acarretar um aumento considerável do número de falsas “significâncias” detectadas ou falsos positivos. No experimento feito, 4.4% dos casos foram resultados equivocados. Se o teste fosse analisado exatamente no meio da realização e encerrado em caso de p-valor < 0.05, este valor iria para 8.1%. Com 10 observações realizadas durante o teste, o valor sobe para 18.5%.

Número de observações vs. falsos positivos para o experimento realizado

No caso extremo em que, a cada lançamento de uma moeda, calculamos o p-valor para definir se já houve significância ou não, a taxa de falsos positivos atinge assustadores 66.3% (Todos esses valores são aproximados pelo experimento que foi realizado e diferem um pouco do valor teórico).

Portanto:

Não espie seus resultados antes da hora!

Segmentações não planejadas

Esta é uma das maneiras mais comuns de se realizar p-hacking tanto de forma maliciosa quanto de maneira ingênua.

No nosso experimento, utilizamos tipos de moedas diferentes. Vamos supor que decidimos analisar cada tipo de moeda e ver se havia alguma diferença entre as versões A e B para as segmentações. Considerando que temos moedas de 1, 5, 10, 25, 50 centavos e 1 real, encontramos p-valor menor que 5% para pelo menos um dos tipos em 28.2% dos casos.

Novamente, a métrica do p-valor perdeu seu significado. Ao adicionar mais segmentações, a chance de pelo menos uma em que o p-valor fica abaixo de 5% é de:

Para 6 variações com p-valor de 0.05, este valor é de 26.5%.

Agora imagine um e-commerce rodando um teste A/B que afeta mais de 100 produtos. Se analisarmos o resultado para cada produto, a chance de encontrar uma variante vencedora em pelo menos um produto é maior que 99%, mesmo que o teste realizado não cause nenhuma diferença concreta.

tirinha do XKCD

Iterando sobre um teste

Para este último exemplo, imagine que você realizou um teste para mudar algo no seu site. Você rodou o teste e não obteve significância para dizer que a variação era melhor que o controle. O que você faz?

Alguns vão concluir que não existe diferença considerável entre as duas e vão decidir pela versão A ou B baseado em outros critérios, como tempo para implementação, preferência dos principais interessados ou uma visão de longo prazo para o produto.

Outros vão querer adaptar aversão B até que esta ganhe da versão A, mudando pequenos detalhes e tentando novamente. Qual é o problema disso?

Esta ação tem um efeito exatamente igual à criação de segmentações não planejadas. A cada iteração, suas chances de ter um falso positivo aumentam. Ela é de 5% após o primeiro, 9.7% após o segundo e cresce para 14.2%, 18.5%, 22.6%, 26.5%, 30.2%…

Como evitar tudo isso?

Planeje seu experimento antes de realizá-lo

Pode parecer óbvio dizer isso, mas é muito comum esquecermos disso e esperarmos os dados atingirem significância. Isso não só aumenta a chance de resultados equivocados, como invalida a maior parte das métricas estatísticas utilizadas no teste. P-valor, confiança, poder estatístico perdem seus significados quando boas práticas de teste são ignoradas.

Determine segmentações relevantes para escolher seu p-valor

Para um mesmo p-valor, o número de segmentações aumenta as chances de um resultado que disprove a hipótese nula. No entanto, se suas segmentações são importantes, pode fazer sentido escolher um p-valor menor para realizar seu teste.

Se você tem 5 segmentações a considerar e utiliza um p-valor de 0.05, sua chance de ter ao menos um falso positivo, caso não haja diferença entre as variações, é de 22.6%. Porém, se escolhermos um p-valor de 0.01, esta chance cai para 4.9%.

Esta pode não ser uma alternativa ideal quando se tem muitas segmentações, mas resolve parte do problema.

Não espie seus dados

Isto é muito importante e uma das tarefas mais difíceis de se realizar quando se fala em uma empresa. Entretanto, existem maneiras de se obter resultados antes da hora que, diferentemente da tradicional espiada, utilizam métodos estatísticos válidos para manter o significado dos dados.

Parando experimentos corretamente

Existem alguns métodos para parar experimentos antecipadamente sem perder o significado dos dados, mantendo o valor estatístico do resultado. Me deparei com alguns deles quando li este post no Techblog do Netflix.

Análise sequencial ou Teste de hipótese sequencial é um método que permite que você analise seus dados durante o experimento, sem sacrificar a confiança estatística. Definindo-se o número de observações antecipadamente, é possível quebrar seu teste em etapas e calcular a significância após cada uma delas. Com um p-valor reduzido, é possível garantir uma taxa de falsos positivos igual ao valor desejado.

Existem diversas formas de se calcular os p-valores para análise sequencial, como os métodos de O’Brien-Fleming, Pocock, Haybittle-Peto.

Para testar, utilizei estas técnicas no meu dataset de moedas e obtive as seguintes taxas de falso positivo com 5 quebras:

  • O’Brien-Fleming: 4.2%
  • Pocock: 4.1%
  • Haybittle-Peto: 4.5%

O que fazer com isso?

Boas práticas de teste não são apenas para os estatísticos e pessoas que trabalham com dados. A chave para se realizar um bom teste e garantir eficiência e precisão nos resultados é conhecer os conceitos que existem por trás das metodologias utilizadas. Sabendo as formas como podemos, inadvertidamente, manipular nossos dados e invalidar nossos testes, é possível agir para que isso não aconteça.

Paradas antecipadas podem ser interessantes se, e somente se, implementadas corretamente. Só tome cuidado para não tomar decisões baseadas em dados equivocados. Se você adota uma perspectiva data-driven na sua empresa (e eu acredito que todos deveriam fazer isso), suas decisões só serão boas se seus dados estiverem corretos.

Notebook com algumas simulações mencionadas aqui

--

--