Estatística

Análise por Gatilho: por que a diluição muda o veredito

Como a análise por gatilho separa quem realmente viu a mudança, por que o efeito dilui no total e a aritmética que liga os dois números.

Ilustração plana de uma multidão redonda de figuras pequenas com uma fatia recortada ao lado, e uma bandeja rasa e larga onde uma gota se espalha até quase sumir, em tons de verde profundo

A análise por gatilho restringe o cálculo do resultado aos usuários que realmente chegaram ao ponto em que a variação podia mudar alguma coisa, e é quase sempre a única forma de enxergar um efeito que existe. O preço é que esse número não é o número do negócio: para chegar ao impacto total você precisa diluí-lo pela fração de usuários que dispararam, e essa conta costuma cortar o resultado por um fator grande. Este guia cobre o que disparar significa de verdade, a aritmética que liga o efeito do segmento ao efeito total, um exemplo trabalhado em que a mesma mudança dá significativa por gatilho e inconclusiva diluída, e as armadilhas que transformam a análise por gatilho num gerador de vitórias falsas. Faz parte do nosso guia completo de teste A/B e conversa direto com métrica primária e OEC.

O que disparar significa e por que ele muda o denominador

Quase nenhuma mudança atinge todo mundo. Você reescreve a mensagem de erro do cupom inválido, e a maior parte dos visitantes nunca digita um cupom. Você troca o módulo de recomendação da página de produto, e metade da sua sessão entra direto pelo carrinho. Nesses casos, o experimento tecnicamente randomizou a população inteira, mas a variação só existiu para uma parte dela.

Um usuário disparou o experimento quando alcançou o ponto do fluxo em que controle e tratamento passam a ser coisas diferentes. Kohavi e colegas usam a palavra nesse sentido literal nas regras de bolso do KDD 2014: ao descrever um experimento do Bing que truncava a página de resultados para consultas navegacionais, eles anotam entre parênteses que disparado significa que pelo menos uma das consultas do usuário mostrou uma página com o bloco de links profundos. O experimento rodou com mais de 8 milhões de usuários disparados, e a taxa de abandono não mudou de forma estatisticamente significativa, com valor-p de 0,92. Num segundo experimento do mesmo artigo, com mais de 3 milhões de usuários disparados, a página foi estendida para 20 resultados: houve redução de 1,8 por cento em receita, 30 milissegundos a mais de tempo de carregamento e 18 por cento menos paginação, e mesmo assim o abandono não se moveu, com valor-p de 0,93. Essa mudança não foi lançada.

O ponto aritmético é simples e implacável. Todo usuário que não disparou tem efeito de tratamento exatamente zero, porque ele viu a mesma coisa nos dois braços. Ele não é um dado neutro: ele entra no denominador, contribui com variância e não contribui com sinal nenhum. Diluir o experimento em não disparados é o jeito mais barato de transformar um efeito real num resultado inconclusivo.

Os dois denominadores possíveis do mesmo experimentoA população randomizada inteira aparece como um retângulo grande de 80 mil usuários por variação. Dentro dele, uma faixa menor de 12 mil usuários representa quem disparou o experimento. Fora dessa faixa, o efeito de tratamento é zero por construção, porque esses usuários viram exatamente a mesma experiência nos dois braços. A análise por gatilho usa a faixa menor como denominador; a análise diluída usa o retângulo inteiro.O mesmo experimento, dois denominadoresdisparoununca chegou ao ponto da mudançaefeito de tratamento zero por construção, variância normal80.000 por variação randomizados, dos quais 12.000 disparam, ou 15 por centoAnálise por gatilhobase 12.000, mede mais 1,500 ponto percentualAnálise diluídabase 80.000, mede mais 0,225 ponto percentual
Esquemático com os números do exemplo trabalhado mais adiante. Os dois cálculos estão corretos e descrevem a mesma mudança; o que muda é a pergunta que cada um responde.

A regra de diluição, em uma linha de aritmética

A conversão entre os dois números é direta e não depende de nenhuma suposição estatística:

ganho absoluto no total = ganho absoluto entre os disparados x fração de usuários que dispararam

Um ganho de 1,5 ponto percentual num gatilho que pega 15 por cento da base vira 0,225 ponto percentual no total. É a mesma regra que Kohavi e colegas colocam na regra 2 do KDD 2014, sob o título de que mudanças raramente têm grande impacto positivo em métricas-chave. Nas palavras deles, métricas devem ser diluídas pelo tamanho do segmento, e uma melhora de 10 por cento num segmento de 1 por cento tem impacto total de aproximadamente 0,1 por cento. Eles fazem questão de registrar o “aproximadamente”: se as métricas do segmento forem diferentes da média, o impacto será diferente.

Essa ressalva é o detalhe que quase todo time erra, então vale o parágrafo. A regra multiplicativa simples vale exatamente para o ganho absoluto. Para o ganho relativo, o fator de diluição não é a fração de usuários, e sim a fatia que o segmento disparado representa da métrica total. Um segmento que converte muito acima da média pesa mais na métrica do que pesa na contagem de cabeças.

Situação Fração que dispara Efeito medido no gatilho Efeito diluído no total
Mensagem de erro de cupom 3 por cento mais 4,0 pontos percentuais mais 0,12 ponto percentual
Módulo de recomendação em página de produto 15 por cento mais 1,5 ponto percentual mais 0,225 ponto percentual
Nova etapa de frete no checkout 40 por cento mais 0,8 ponto percentual mais 0,32 ponto percentual
Mudança no cabeçalho global 100 por cento mais 0,2 ponto percentual mais 0,2 ponto percentual

A última linha é o caso em que a distinção some. Quando o gatilho é a página inicial, gatilho e total são a mesma coisa e a discussão inteira desaparece. É por isso que times que só testam o topo do funil nunca precisaram pensar nisso, e por que o primeiro teste sério de checkout costuma ser o momento em que a conta não fecha.

O outro lado da regra, e o que a torna útil no planejamento em vez de só na explicação, é que ela roda ao contrário. Se o negócio precisa de 0,2 ponto percentual no total para justificar a mudança, e o seu gatilho pega 15 por cento, então você precisa de aproximadamente 1,33 ponto percentual entre os disparados. Esse é o efeito que o efeito mínimo detectável do seu desenho tem que conseguir enxergar, e é o número que deveria estar na hipótese antes do teste começar.

Exemplo trabalhado: a mesma mudança, dois vereditos

Uma loja roda uma mudança no módulo de recomendação que só aparece em páginas de produto de uma categoria. O experimento randomiza 80.000 usuários por variação. Desses, 12.000 por variação chegam a ver o módulo, ou seja, 15 por cento disparam. Cole os números na calculadora abaixo para conferir cada linha:

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.

Primeiro, a análise por gatilho, restrita a quem viu o módulo:

Só os disparados Usuários Conversões Taxa
A, controle 12.000 2.400 20,000 por cento
B, variação 12.000 2.580 21,500 por cento

A calculadora devolve mais 1,500 ponto percentual, mais 7,50 por cento relativo, z = 2,865, valor-p 0,00417, com intervalo de 95 por cento de mais 0,474 a mais 2,526 pontos percentuais. Significativo, e com folga.

Agora a mesma coisa medida na população inteira. Os 68.000 usuários por variação que não dispararam convertem a 3,00 por cento nos dois braços, contribuindo com 2.040 conversões de cada lado:

Todos os randomizados Usuários Conversões Taxa
A, controle 80.000 4.440 5,550 por cento
B, variação 80.000 4.620 5,775 por cento

A calculadora devolve mais 0,225 ponto percentual, mais 4,05 por cento relativo, z = 1,947, valor-p 0,05153, com intervalo de menos 0,001 a mais 0,451 ponto percentual. Não significativo, por muito pouco.

Confira as duas pontas da regra de diluição contra esses números. O ganho absoluto: 0,15 vezes 1,500 dá exatamente 0,225 ponto percentual. O ganho relativo, que é onde a ressalva do “aproximadamente” morde: 7,50 por cento vezes a fatia que o segmento representa da métrica total, que é 2.400 dividido por 4.440, ou 54,05 por cento, dá 4,05 por cento. Bate. Note que o fator de diluição do relativo é 54 por cento, e não os 15 por cento da contagem de usuários, precisamente porque o segmento disparado converte a 20 por cento contra 3 por cento do resto.

Dois vereditos para a mesma mudançaA análise por gatilho devolve mais 7,50 por cento relativo com valor-p 0,00417 e intervalo de confiança inteiramente acima de zero. A análise diluída devolve mais 4,05 por cento relativo com valor-p 0,05153 e intervalo que encosta em zero. A mudança é a mesma nos dois casos; o que difere é o denominador e, com ele, o poder do desenho.A mesma mudança, medida de dois jeitosganho relativo com intervalo de confiança de 95 por cento convertido para termos relativos0%por gatilhobase 12.000mais 7,50%p 0,00417diluídabase 80.000mais 4,05%p 0,05153O intervalo diluído encosta em zero porque 68.000 usuários por variação entraram na conta sem poder mudar de comportamento.
Nenhum dos dois cálculos está errado. O de cima mede o efeito na experiência que foi alterada; o de baixo mede o que a linha de receita vai sentir.

O custo em amostra fecha a história. Para detectar o efeito relativo de 7,5 por cento sobre uma base de 20 por cento, com 95 por cento de confiança e 80 por cento de poder, bastam 11.472 usuários por variação. Para detectar o mesmo efeito já diluído, ou seja, 4,05 por cento sobre uma base de 5,55 por cento, são necessários 165.644 usuários por variação. A diluição multiplicou por mais de 14 o tamanho de amostra exigido, sem que a mudança no produto tenha ficado um milímetro menor.

O ponto de gatilho também é um teste de sanidade

Existe uma checagem quase gratuita escondida na ideia de gatilho, e ela pega bugs de instrumentação melhor do que quase tudo. Antes do ponto de gatilho, os dois braços viram a mesma coisa. Logo, nenhuma métrica medida antes desse ponto deveria diferir de forma estatisticamente significativa.

Kohavi registra exatamente esse raciocínio no artigo de resultados inesperados publicado no SIGKDD Explorations. Ao testar se um link deveria abrir em nova janela, ele nota que clicar no link é o ponto de gatilho, e que portanto não deveria haver diferença estatisticamente significativa até depois do clique, já que é ali que algo passa a diferir entre os braços. Quando a porcentagem de usuários que clicavam no link apareceu significativamente maior no tratamento, o time sabia que aquilo era impossível por construção e foi investigar. A causa era instrumental: cliques são medidos por um pedido assíncrono de uma imagem de 1 por 1 pixel, um mecanismo notoriamente sujeito a perdas, e abrir o destino numa janela nova melhorou a confiabilidade dessa medição em navegadores fora do Internet Explorer. O valor do recurso continuou positivo depois da correção, mas bem menor do que o resultado inicial sugeria.

Vale transformar isso em rotina fixa. Para todo experimento com gatilho estreito, meça e compare entre os braços: a contagem de usuários disparados, a taxa de disparo e qualquer métrica puramente pré-gatilho. Diferença estatisticamente significativa em qualquer uma das três não é um achado, é um defeito, e o lugar de investigar isso é a mesma família de checagens de divisão desigual de tráfego.

Onde a análise por gatilho engana

O gatilho é uma ferramenta de poder, e toda ferramenta de poder corta nos dois sentidos. Quatro modos de falha aparecem com frequência.

O gatilho depende do tratamento. Este é o erro grave. Se o critério que define quem entrou no conjunto disparado é ele próprio afetado pela variação, os dois conjuntos deixam de ser comparáveis e você criou viés de seleção. O exemplo canônico é condicionar em “usuários que clicaram no novo botão”, já que o controle não tem novo botão. O disparo precisa depender apenas de informação fixada antes de a variação agir. Kohavi e colegas descrevem, na regra sobre evitar desenhos complexos, um caso em que uma checagem de elegibilidade rodava antes de o experimento sequer disparar e continha um defeito: quem já tinha visto o recurso uma vez entrava numa lista que o removia inteiramente do experimento. O resultado parecia mostrar usuários de tratamento abandonando o produto depois de uma visita, e levou dias para ser desvendado.

O gatilho é reportado sozinho. Um relatório que só mostra o efeito no segmento produz um roadmap cuja soma nunca aparece na receita. Se toda peça é reportada em moeda de segmento, o total prometido pode ser várias vezes o total possível.

O gatilho fica estreito demais por conveniência. Sempre é tentador afinar mais o segmento até o valor-p ceder. Isso é o mesmo mecanismo do problema do peeking, só que na dimensão do recorte em vez da dimensão do tempo. O critério de gatilho é parte do desenho e precisa estar escrito antes de os dados chegarem.

A métrica de guardrail é medida só no gatilho. Danos colaterais quase nunca respeitam o recorte. Uma mudança que melhora o segmento disparado e piora a navegação de quem passa perto precisa ser vista na população inteira. As métricas de guardrail ficam no denominador amplo, sempre.

Como montar isso na prática

Um roteiro curto, na ordem em que ele economiza retrabalho:

  1. Antes de rodar, escreva a condição de disparo em uma frase que qualquer pessoa do time consiga avaliar olhando um log, e confirme que ela não usa nenhuma informação posterior à exposição.
  2. Estime a taxa de disparo com dados históricos. Se você não sabe quantos por cento vão disparar, não sabe dimensionar o teste.
  3. Converta a meta de negócio em meta de gatilho dividindo pela taxa de disparo, e só então calcule o tamanho de amostra.
  4. Instrumente o evento de disparo como um evento próprio, e não como uma inferência feita depois na consulta. Gatilho reconstruído no SQL é gatilho que muda de definição a cada analista.
  5. Ao analisar, rode a checagem de sanidade pré-gatilho antes de olhar o resultado.
  6. Ao reportar, apresente os dois números lado a lado, nesta ordem: efeito no gatilho, taxa de disparo, efeito diluído. Nunca um sem os outros dois.

Erros comuns

Faça isso automático na Donnu

O trabalho chato aqui não é entender a regra de diluição, é lembrar de aplicá-la em toda leitura de resultado, todo dia, com a taxa de disparo correta daquele experimento. É exatamente o tipo de conta que some quando o relatório é montado à mão.

Na Donnu, o evento de disparo é declarado junto com o experimento, então cada resultado sai com as duas leituras já calculadas e rotuladas: o efeito na população que viu a mudança e o efeito diluído na base inteira, com a taxa de disparo entre os dois. A checagem de sanidade pré-gatilho roda sozinha e acende antes de você olhar o resultado, e não depois de a decisão já ter sido tomada. Se preferir fazer a conta na mão, a calculadora de significância aceita qualquer um dos dois denominadores.

Referências

Leia também: Métrica primária e OEC · Métricas de guardrail · Divisão desigual de tráfego · Efeito mínimo detectável · Calculadora de valor-p · Read in English

Perguntas frequentes

O que é análise por gatilho em teste A/B?
Análise por gatilho é restringir o cálculo do resultado apenas aos usuários que chegaram ao ponto em que a variação podia de fato mudar alguma coisa para eles. Kohavi e colegas usam o termo nesse sentido exato nas regras de bolso publicadas no KDD 2014, descrevendo experimentos do Bing com 8 milhões e com 3 milhões de usuários disparados, e explicando que disparado significa que pelo menos uma das consultas do usuário mostrou a página com o bloco alterado. Quem nunca chegou lá viu exatamente a mesma coisa nos dois braços e só adiciona ruído ao denominador.
Qual a diferença entre efeito por gatilho e efeito diluído?
São o mesmo efeito medido em dois denominadores diferentes. O efeito por gatilho usa como base só quem disparou; o efeito diluído usa a população inteira do experimento. A conversão entre os dois é direta: o ganho absoluto no total é igual ao ganho absoluto no segmento disparado multiplicado pela fração de usuários que dispararam. Um ganho de 1,5 ponto percentual num gatilho que atinge 15 por cento dos usuários vira 0,225 ponto percentual no total. Os dois números estão certos e respondem a perguntas diferentes.
Por que devo reportar o número diluído se ele é menor?
Porque é ele que fecha a conta do negócio. Kohavi e colegas afirmam na regra 2 do KDD 2014 que métricas devem ser diluídas pelo tamanho do segmento, e dão o exemplo de uma melhora de 10 por cento num segmento de 1 por cento resultando em impacto total de aproximadamente 0,1 por cento. Eles também registram que num site como o Bing os experimentos bem-sucedidos movem métricas-chave entre 0,1 e 1,0 por cento uma vez diluídos. Reportar só o número do gatilho é como somar o roadmap inteiro em moeda de segmento e prometer um resultado que a receita total nunca vai mostrar.
A análise por gatilho pode inventar um efeito que não existe?
Pode, se o critério de disparo for calculado depois da exposição e for afetado pelo tratamento. O disparo precisa depender apenas de informação que já estava definida antes de a variação agir. Quando o próprio tratamento muda quem entra no conjunto disparado, os dois braços deixam de ser comparáveis e o resultado carrega viés de seleção, que é uma falha de desenho e não de estatística. A checagem barata é verificar se a contagem de usuários disparados bate entre controle e tratamento.
Análise por gatilho aumenta mesmo o poder do teste?
Aumenta bastante quando o gatilho é estreito, porque remove do denominador usuários cujo efeito é zero por construção e que só carregavam variância. No exemplo trabalhado deste guia, o mesmo experimento precisa de cerca de 11.472 usuários por variação para detectar o efeito na população disparada e de cerca de 165.644 por variação para detectar o mesmo efeito já diluído, uma diferença de mais de 14 vezes no tamanho de amostra necessário.