Estatística

Múltiplas Métricas em um Teste A/B: controlar o FDR

Ler 20 métricas num teste A/B gera 64% de chance de pelo menos um falso positivo. Como Bonferroni e Benjamini-Hochberg corrigem múltiplas métricas.

Ilustração plana de uma escada de barras horizontais finas de comprimento crescente, cruzada por uma linha reta, com as duas barras mais curtas do topo em tom escuro sólido, em verde profundo e verde menta

Um teste A/B moderno não reporta uma métrica, reporta dezenas. E cada métrica lida ao nível de 5 por cento é um sorteio independente com 5 por cento de chance de acusar um efeito que não existe: com 20 métricas sem efeito real e independentes, a chance de pelo menos um falso positivo é 64,15 por cento. Este guia mostra como ler múltiplas métricas sem se enganar: a conta exata, a diferença entre controlar FWER e controlar FDR, o procedimento de Benjamini-Hochberg passo a passo sobre um painel real de 20 métricas, e a decisão prática de qual correção usar em qual parte do relatório. Faz parte do nosso guia completo de teste A/B e é o par, no eixo das métricas, do que testar várias variações trata no eixo das variações.

Múltiplas métricas são uma família de testes

A correção de múltiplas comparações costuma ser ensinada com variações: um teste A/B/n com 4 braços faz 3 comparações contra o controle, e todo mundo aceita que isso precisa de ajuste. O caso das métricas é maior e recebe menos atenção, porque o painel cresce por conveniência e não por decisão.

Kohavi, Deng, Frasca, Walker, Xu e Pohlmann descrevem exatamente isso na operação do Bing: eles relatam que reportam resultados não em uma métrica, mas em centenas, sobretudo para ajudar na depuração e na análise. A resposta organizacional deles ao problema de múltiplos desfechos foi padronizar o critério de sucesso em um conjunto pequeno de métricas, como sessões por usuário. Ou seja: a solução primária não foi estatística, foi reduzir a família.

A conta do teto é simples. Se k métricas são independentes e nenhuma tem efeito real, a probabilidade de nenhuma delas sair significante ao nível alfa é 1 menos alfa, elevado a k. A probabilidade de ao menos uma sair é o complemento:

métricas lidas ao nível de 5% chance de ao menos um falso positivo
5 22,62%
10 40,13%
20 64,15%
50 92,31%
100 99,41%
200 99,996%
Chance de pelo menos um falso positivo em função do número de métricasCurva crescente e saturante que mostra a probabilidade de pelo menos um falso positivo quando várias métricas independentes sem efeito real são lidas ao nível de 5 por cento. A curva parte de 5 por cento com uma métrica, passa por 22,6 por cento com 5, 40,1 por cento com 10, 64,2 por cento com 20, 92,3 por cento com 50 e 99,4 por cento com 100, aproximando-se do teto de 100 por cento. Uma linha tracejada horizontal marca o nível nominal de 5 por cento, muito abaixo de quase toda a curva.O nível de 5 por cento vale por métrica, nunca pelo painel inteironível nominal de 5 por cento (o que você acha que está usando)22,6%40,1%64,2%92,3%99,4%15102050100200número de métricas independentes lidas no mesmo testechancede erroMétricas correlacionadas ficam abaixo desta curva, que é o teto do caso independente.
Métricas de um mesmo produto são correlacionadas entre si, então a curva é um teto e não uma previsão. Mas o teto é alto o bastante para que “achamos um ganho numa métrica secundária” seja, sozinho, uma informação quase vazia.

Vale registrar a ressalva honesta: as métricas de um mesmo experimento não são independentes. Cliques no menu e visitas à página de produto sobem juntos. A correlação reduz a probabilidade real de falso positivo em relação à curva acima. O que a correlação não faz é derrubá-la para perto de 5 por cento, e a direção do erro é sempre a mesma: o painel inteiro tem taxa de erro maior que a nominal de cada linha.

Erro por família e proporção de falsas descobertas

Existem dois jeitos diferentes de dizer “controlei o erro”, e escolher entre eles é uma decisão de negócio, não de estatística.

FWER (familywise error rate) é a probabilidade de cometer ao menos um erro Tipo I na família inteira. Controlar o FWER em 5 por cento significa: se nada tem efeito, a chance de eu anunciar qualquer coisa é 5 por cento. É a régua certa quando uma única afirmação falsa já estraga a decisão.

FDR (false discovery rate) foi definido por Benjamini e Hochberg em 1995 como a esperança da proporção de hipóteses rejeitadas erroneamente entre todas as hipóteses rejeitadas. Controlar o FDR em 10 por cento significa: entre tudo que eu anunciar, espero que no máximo 10 por cento seja ruído. É a régua certa quando você está explorando um painel e algumas falsas descobertas no meio de várias verdadeiras são um custo aceitável.

Os autores demonstram duas propriedades que ligam as duas réguas, e elas são o argumento inteiro a favor do FDR:

  1. Quando todas as hipóteses nulas são verdadeiras, FDR e FWER coincidem. Nesse caso o número de rejeições verdadeiras é zero, então a proporção de erros é 0 ou 1, e a esperança dela vira a probabilidade de ao menos um erro. Controlar o FDR implica controlar o FWER no sentido fraco.
  2. Quando algumas hipóteses nulas são falsas, o FDR é menor ou igual ao FWER, e os dois podem ser bem diferentes. Qualquer procedimento que controla o FWER também controla o FDR, mas um procedimento que controla só o FDR pode ser menos rigoroso, e daí vem o ganho de poder. Os autores observam ainda que quanto mais hipóteses forem falsas, maior a diferença entre as duas taxas, e portanto maior o potencial de ganho.
A tabela de erros de Benjamini e Hochberg e o que cada taxa medeQuadro de quatro células cruzando o estado real da hipótese com a decisão tomada. As linhas são hipóteses nulas verdadeiras e hipóteses nulas falsas. As colunas são declarada não significante e declarada significante. A célula de hipótese verdadeira declarada significante é o número de erros Tipo I. A célula de hipótese falsa declarada significante é o número de descobertas verdadeiras. A soma da coluna significante é o total de rejeições. Duas chaves à direita indicam que o FWER mede a probabilidade de o número de erros Tipo I ser pelo menos um, enquanto o FDR mede a esperança da razão entre o número de erros Tipo I e o total de rejeições.As duas taxas leem a mesma tabela em direções diferentesdeclarada não signif.declarada significantenula VERDADEIRAacertonada anunciadoerro Tipo Ifalsa descobertanula FALSAerro Tipo IIefeito real perdidodescoberta verdadeiraefeito real achadototal de rejeiçõesFWER: chance de esta célula ser maior que zeroFDR: média da célula laranjadividida pela barra escuraSe todas as nulas forem verdadeiras, a barra escura é só a célula laranja e as duas taxas dão o mesmo número.Quanto mais nulas forem falsas, mais a barra escura cresce sem que a célula laranja cresça, e mais o FDR fica abaixo do FWER.É exatamente daí que sai o ganho de poder do FDR.
A tabela é a de Benjamini e Hochberg (1995). O ponto central é que FDR e FWER não são versões forte e fraca da mesma coisa: são numeradores e denominadores diferentes, e a escolha entre elas é sobre o que custa caro no seu contexto.

O procedimento de Benjamini-Hochberg, passo a passo

O procedimento cabe em três linhas. Sejam m os valores-p ordenados do menor para o maior, e q a taxa de falsas descobertas que você aceita:

  1. Ordene os valores-p: P(1) menor ou igual a P(2), e assim por diante até P(m).
  2. Encontre o maior índice i tal que P(i) é menor ou igual a i dividido por m, vezes q.
  3. Rejeite todas as hipóteses das posições 1 até i.

Benjamini e Hochberg provam, no Teorema 1 do artigo, que para estatísticas de teste independentes e para qualquer configuração de hipóteses nulas falsas, esse procedimento controla o FDR em q. Eles registram ainda, numa observação explícita, que a independência entre as estatísticas correspondentes às hipóteses falsas não é necessária para a prova.

O passo 3 é a parte que quase todo mundo aplica errado. O procedimento é de passo para cima: a decisão sai do maior índice que satisfaz a desigualdade, e todas as posições abaixo dele são rejeitadas junto, mesmo que alguma delas, isoladamente, não passasse no próprio limite. Comparar linha a linha e rejeitar só as que passam é um procedimento diferente, mais conservador, e não é o de Benjamini-Hochberg. O exemplo trabalhado a seguir cai exatamente nesse caso.

Exemplo trabalhado: 20 métricas, um teste

Uma loja roda um teste com 60.000 usuários por braço e reporta 20 métricas. Todos os valores-p abaixo saem do teste z de duas proporções bilateral sobre as contagens brutas, e você pode reproduzir qualquer linha colando os quatro números na calculadora.

Calculadora de significância estatística
Controle (A)
Variação (B)
Controle (A) · Taxa-
Variação (B) · Taxa-
Melhora relativa-
valor-p-
IC 95% da diferença-

Teste z bilateral de duas proporções. "Sem significância" quase sempre quer dizer que falta amostra, não que as versões são iguais.

métrica A (de 60.000) B (de 60.000) z valor-p lift relativo
Conversão geral 3.000 3.126 1,6526 0,098418 +4,20%
Adição ao carrinho 9.000 9.210 1,6897 0,091091 +2,33%
Início de checkout 6.000 6.132 1,2640 0,206225 +2,20%
Cadastro de conta 4.200 4.116 -0,9548 0,339674 -2,00%
Uso da busca 15.000 15.390 2,5889 0,009629 +2,60%
Clique no menu 21.000 20.790 -1,2725 0,203211 -1,00%
Visita à página de produto 30.000 30.450 2,5981 0,009373 +1,50%
Aplicação de cupom 2.400 2.478 1,1402 0,254199 +3,25%
Lista de desejos 1.800 1.746 -0,9205 0,357296 -3,00%
Clique em avaliações 5.400 5.508 1,0845 0,278126 +2,00%
Newsletter 1.200 1.266 1,3429 0,179292 +5,50%
Abertura do chat 900 858 -1,0091 0,312915 -4,67%
Clique no frete 7.200 7.092 -0,9625 0,335784 -1,50%
Filtro de categoria 12.000 12.180 1,2954 0,195179 +1,50%
Compartilhamento 600 633 0,9447 0,344833 +5,50%
Clique no rodapé 3.600 3.528 -0,8793 0,379229 -2,00%
Login 10.800 10.692 -0,8131 0,416165 -1,00%
Segunda sessão em 7 dias 8.400 8.568 1,3919 0,163962 +2,00%
Devolução solicitada 780 822 1,0564 0,290777 +5,38%
Contato com suporte 1.500 1.443 -1,0638 0,287406 -3,80%

Lido linha a linha ao nível de 5 por cento, o painel entrega duas vitórias: visita à página de produto (p igual a 0,009373) e uso da busca (p igual a 0,009629). E entrega uma derrota silenciosa que ninguém coloca no slide: a métrica primária, a conversão geral, não é significante (p igual a 0,098418).

Aplicando as duas correções

Ordenando os 20 valores-p e aplicando Bonferroni (limite fixo de 0,05 dividido por 20, ou seja, 0,0025) e Benjamini-Hochberg com q igual a 0,10 (limite móvel de i dividido por 20, vezes 0,10):

posição métrica valor-p limite Bonferroni limite BH P(i) abaixo do limite BH?
1 Visita à página de produto 0,009373 0,00250 0,00500 não
2 Uso da busca 0,009629 0,00250 0,01000 sim
3 Adição ao carrinho 0,091091 0,00250 0,01500 não
4 Conversão geral 0,098418 0,00250 0,02000 não
5 Segunda sessão em 7 dias 0,163962 0,00250 0,02500 não
6 Newsletter 0,179292 0,00250 0,03000 não
7 Filtro de categoria 0,195179 0,00250 0,03500 não
8 Clique no menu 0,203211 0,00250 0,04000 não
(as demais 12 linhas) acima de 0,20 0,00250 até 0,10000 não

O maior índice que satisfaz a desigualdade é i igual a 2. Portanto o procedimento rejeita as posições 1 e 2, ou seja, as duas, mesmo que a posição 1 (0,009373) esteja acima do próprio limite dela (0,00500). É o passo para cima em ação: a linha 1 é carregada pela linha 2.

régua aplicada métricas declaradas significantes
valor-p bruto abaixo de 0,05 2
Bonferroni (alfa dividido por 20) 0
Benjamini-Hochberg (q igual a 0,10) 2

Três leituras do mesmo painel, três respostas diferentes, e nenhuma delas é “errada”: elas controlam coisas diferentes. Bonferroni diz que, se você exige menos de 5 por cento de chance de fazer qualquer afirmação falsa neste painel, não há nada a afirmar. Benjamini-Hochberg diz que, se você aceita que até 10 por cento das afirmações sejam ruído, essas duas passam.

O que o exemplo não muda

Nenhuma das duas correções torna a conversão geral significante, e nenhuma das duas transforma “uso da busca subiu” numa razão para lançar. A leitura honesta do painel é: o teste não moveu a métrica primária, e duas métricas secundárias mostraram sinal que sobrevive ao controle de FDR mas não ao controle de FWER. Isso é uma hipótese para a próxima rodada, não um resultado.

O problema também cresce pelo tempo e pelas variações

Métricas são um dos três eixos de multiplicidade, e os três se multiplicam entre si.

Kohavi e coautores quantificam o eixo das iterações com precisão. Supondo que a funcionalidade não faz nada, rodar k iterações faz a probabilidade de significância estatística (movimento positivo num teste bilateral) crescer de 2,5 por cento para 1 menos 0,975 elevado a k. Eles registram que, se um time testa cinco tratamentos, a taxa de 2,5 por cento vira 12 por cento; e que seis iterações de experimentos com cinco tratamentos dão mais de 50 por cento de chance de conseguir um resultado positivo estatisticamente significante. Reproduzindo a conta: 1 menos 0,975 elevado a 5 dá 11,89 por cento, e 1 menos 0,975 elevado a 30 dá 53,21 por cento.

Os dois mecanismos que eles usam contra isso são explícitos e vale copiar: ajuste de limiar (exigir valores-p menores em projetos com muitos tratamentos ou muitas iterações) e estágio de replicação (depois do funil estreitar, uma rodada final, de preferência com mais poder estatístico, que determina o resultado). No mesmo artigo, para a análise em fatias (segmentos), eles relatam que educam os experimentadores sobre falsos positivos e os incentivam a ajustar o limiar de probabilidade, focando em sinais fortes e valores-p menores, na ordem de 0,0001.

Kohavi, Deng, Longbotham e Xu fazem o mesmo alerta pelo lado do volume: como rodam milhares de experimentos por ano, uma taxa de falso positivo de 0,05 implica centenas de falsos positivos para uma dada métrica, e isso piora quando várias métricas não correlacionadas são usadas.

Os três eixos de multiplicidade e como eles se multiplicamTrês blocos horizontais empilhados representando os eixos que multiplicam o número de testes num programa de experimentação: métricas do painel, variações do experimento e iterações ao longo do tempo, mais um quarto eixo destacado que são os cortes por segmento. Uma linha abaixo indica que o número total de comparações é o produto dos quatro, não a soma, e que a família de testes precisa ser declarada antes de olhar o dado.O número de comparações é o PRODUTO dos eixos, não a somamétricas do painel20 no exemploxvariaçõesA/B/n contra o controlexiteraçõesrodadas do mesmo temaxsegmentoscortes ad hoctotal de comparações feitas no experimentoCinco tratamentos elevam a taxa de 2,5 por cento para 12 por cento; seis rodadas desses cinco passam de 50 por cento.O eixo dos segmentos é o mais perigoso porque é o único que cresce DEPOIS de o dado chegar.Regra prática: a família de testes tem que ser declarada no plano de análise, antes de qualquer leitura.
O eixo dos segmentos é o único que não tem tamanho fixo: ele cresce enquanto alguém estiver disposto a cortar o dado de mais um jeito. Por isso ele é o que mais precisa ser declarado antes.

Qual régua usar em qual parte do relatório

A resposta prática não é escolher uma correção para tudo, é partir o relatório em famílias com regras diferentes, e declarar essa partição antes de rodar.

parte do relatório pergunta que ela responde régua recomendada
Métrica primária (1 métrica) esse teste ganha? sem correção; a família tem tamanho 1 por construção
Métricas secundárias de sucesso o que mais se moveu junto? Benjamini-Hochberg com q entre 0,05 e 0,20
Métricas de guardrail isso quebrou alguma coisa? alerta sensível, sem correção que reduza sensibilidade
Cortes por segmento para quem funcionou? pré-declarados no plano, ou tratados como exploração
Decisão de lançamento com várias variações qual braço lança? correção de FWER (Bonferroni ou similar)

A linha das métricas de guardrail costuma surpreender, e ela merece o detalhe. Uma métrica de guardrail existe para detectar dano, não para detectar ganho. A hipótese nula útil ali é “nada piorou”, e o erro caro é o Tipo II: deixar passar uma piora real. Corrigir para múltiplas comparações torna mais difícil rejeitar a nula, o que aumenta exatamente esse erro. Aplicar Bonferroni no painel de guardrails é otimizar contra o objetivo do painel. O tratamento próprio está em métricas de guardrail.

A linha da métrica primária também merece uma nota. Ela só tem tamanho 1 se você declarou qual é antes de olhar. Escolher a primária depois de ver os valores-p é o caso em que a família tem tamanho 20 e você está fingindo que tem tamanho 1. É a razão de existir do plano de análise pré-registrado.

O contra-argumento honesto

Existe uma linha respeitável que discorda de todo esse enquadramento, e omiti-la seria desonesto. Gelman, Hill e Yajima defendem que o problema de múltiplas comparações pode desaparecer inteiramente quando visto de uma perspectiva bayesiana hierárquica. O argumento deles tem duas partes:

  1. Eles questionam o próprio paradigma do erro Tipo I, porque raramente acreditam que a hipótese nula possa ser estritamente verdadeira.
  2. Eles sustentam que o problema não é testagem múltipla e sim modelagem insuficiente da relação entre os parâmetros. Um modelo multinível faz encolhimento (as estimativas e os intervalos são puxados uns na direção dos outros), enquanto os procedimentos clássicos mantêm os centros parados e alargam os intervalos. Segundo eles, as comparações feitas com estimativas multiníveis ficam apropriadamente mais conservadoras sem sacrificar poder do jeito que muitos métodos tradicionais sacrificam.

Os mesmos autores reconhecem, no entanto, que métodos de controle de FDR fazem sentido particular em campos onde se espera um punhado de efeitos reais no meio de uma quantidade enorme de efeitos nulos, e que o FDR leva a um procedimento menos conservador em relação ao erro Tipo I, mas mais poderoso para detectar efeitos reais.

A tradução prática para quem roda testes A/B: se o seu motor é bayesiano, o caminho de modelar a hierarquia das métricas é legítimo e provavelmente melhor. O que não é legítimo é usar esse argumento como licença para ler 20 valores-p crus e escolher o que agradou. O tratamento bayesiano das decisões de teste está em teste A/B bayesiano e em perda esperada.

Checklist antes de ler o painel

  1. A família de testes está declarada por escrito? Quantas métricas, quantos braços, quantos segmentos, tudo antes do primeiro olhar.
  2. A métrica primária está nomeada isoladamente? Uma, não “as três principais”.
  3. O painel secundário tem uma régua declarada? Benjamini-Hochberg com q escolhido antes, não depois.
  4. Os guardrails estão fora da correção? Eles precisam de sensibilidade, não de rigor.
  5. Os segmentos que serão lidos estão listados? Corte não listado é exploração e sai rotulado como tal.
  6. Alguém contou quantas iterações esse tema já teve? A conta de 1 menos 0,975 elevado a k é acumulativa entre rodadas.
  7. Existe um estágio de replicação previsto? É o mecanismo mais confiável e o mais fácil de esquecer.

Erros comuns

Faça isso automático na Donnu

O erro caro aqui não é escolher a correção errada, é o painel não deixar claro quantas perguntas foram feitas. Vinte métricas numa tabela, todas com o mesmo intervalo de confiança e a mesma cor, escondem que a régua de 5 por cento foi projetada para uma pergunta e está sendo usada em vinte.

Na Donnu, a métrica primária é declarada na criação do experimento e fica visualmente separada do painel secundário, que carrega o valor-p ajustado por Benjamini-Hochberg ao lado do bruto, com o q usado escrito na tabela. Métricas de guardrail ficam num painel próprio, com limiar de alerta próprio e sem correção que reduza a sensibilidade delas. Se você quiser refazer qualquer linha na mão, a calculadora de significância aceita as contagens brutas e a calculadora para várias variações trata o eixo dos braços.

Referências

Leia também: Testar várias variações sem falso positivo · Métricas de guardrail · Plano de análise pré-registrado · Métrica primária e OEC · O problema do peeking · Calculadora de significância · Read in English

Perguntas frequentes

Qual a chance de um falso positivo quando leio 20 métricas num teste A/B?
Se as 20 métricas fossem independentes e nenhuma tivesse efeito real, a chance de pelo menos uma sair com valor-p abaixo de 0,05 é 1 menos 0,95 elevado a 20, ou seja, 64,15 por cento. Com 5 métricas são 22,62 por cento, com 10 são 40,13 por cento e com 50 são 92,31 por cento. Na prática as métricas de um mesmo teste são correlacionadas e o número real fica abaixo desse teto, mas a ordem de grandeza é essa: ler muitas métricas sem correção quase garante encontrar alguma coisa.
Qual a diferença entre FWER e FDR?
FWER é a probabilidade de cometer ao menos um erro Tipo I na família inteira de testes. FDR, definido por Benjamini e Hochberg em 1995, é a esperança da proporção de hipóteses rejeitadas erroneamente entre todas as rejeitadas. Os autores mostram que, quando todas as hipóteses nulas são verdadeiras, as duas coisas coincidem; quando algumas são falsas, o FDR é menor ou igual ao FWER, e por isso procedimentos que controlam só o FDR podem ser menos rigorosos e ganhar poder.
Como funciona o procedimento de Benjamini-Hochberg?
Ordene os m valores-p do menor para o maior. Encontre o maior índice i para o qual o valor-p na posição i é menor ou igual a i dividido por m, vezes a taxa alvo q. Rejeite todas as hipóteses da posição 1 até essa posição i. É um procedimento de passo para cima: a decisão é tomada pelo maior índice que passa, e todas as posições abaixo dele são rejeitadas juntas, mesmo que alguma delas isoladamente não passasse no próprio limite. Benjamini e Hochberg provam que isso controla o FDR em q para estatísticas de teste independentes.
Bonferroni ou Benjamini-Hochberg para métricas de teste A/B?
Depende do custo do erro. Bonferroni compara cada valor-p com alfa dividido pelo número de testes e controla o FWER: use quando uma única afirmação falsa já compromete a decisão, tipicamente na métrica primária de uma decisão de lançamento. Benjamini-Hochberg controla a proporção de falsas descobertas e é mais apropriado para a leitura exploratória do painel de métricas secundárias, onde algumas falsas descobertas entre muitas verdadeiras são toleráveis. As duas abordagens exigem declarar a família de testes antes de olhar os dados.
Métricas de guardrail entram na correção de múltiplas comparações?
Não devem entrar da mesma forma. A pergunta de uma métrica de guardrail é invertida: você não quer detectar um efeito, quer descartar um dano. Corrigir para múltiplas comparações torna mais difícil rejeitar a nula, o que aumenta a chance de deixar passar uma piora real. Guardrails pedem alerta sensível e limiar próprio, discutido em separado, não a mesma correção aplicada às métricas de sucesso.
Existe quem defenda não corrigir para múltiplas comparações?
Sim, e o argumento é sério. Gelman, Hill e Yajima defendem que, num modelo multinível bayesiano, o problema de múltiplas comparações pode desaparecer: o modelo puxa as estimativas umas na direção das outras (encolhimento) em vez de manter os centros parados e alargar os intervalos, o que segundo eles produz estimativas mais eficientes, sobretudo quando a variação entre os grupos é baixa, que é justamente onde múltiplas comparações mais preocupam. É uma alternativa ao paradigma de erro Tipo I, não uma licença para ler 20 métricas cruas e escolher a que agradou.