Interferência entre Variações: quando os braços se falam
Interferência entre variações: quando o tratamento afeta o controle, o teste A/B mede a diferença errada. Os canais de vazamento e como reduzir o viés.

📚 Este artigo faz parte do guia Significância Estatística em Teste A/B: O Guia.
Todo teste A/B assume em silêncio que tratar um usuário não muda o resultado de nenhum outro. Quando essa premissa cai, e ela cai sempre que os dois braços disputam um recurso finito, o controle deixa de ser uma linha de base limpa: ele vira um grupo que o próprio experimento já prejudicou. A diferença medida passa a somar o ganho do tratamento com a perda do controle, e o resultado pode facilmente sair pelo dobro do efeito real. Este guia cobre os três canais por onde a interferência entre variações entra, um exemplo trabalhado em que um vencedor de mais 22 por cento é na verdade um vencedor de mais 10 por cento, o que a eBay mediu num experimento de verdade, e o que dá para fazer a respeito sem abandonar a experimentação. Faz parte do nosso guia completo de teste A/B e conversa com métricas de guardrail.
A premissa silenciosa que a interferência entre variações quebra
O teste de duas proporções compara a taxa do braço A com a do braço B e chama a diferença de efeito do tratamento. Isso só é válido se o resultado de cada usuário depender apenas do braço em que ele caiu, e não do que aconteceu com os outros usuários. Na literatura de inferência causal essa condição tem nome, SUTVA, a premissa de valor de tratamento estável por unidade.
Ela é razoável quando você muda a cor de um botão. Ela é falsa quando existe alguma coisa finita no meio do caminho.
A parte perigosa é que a interferência não deixa rastro estatístico. Um experimento contaminado produz valor-p pequeno, intervalo de confiança estreito e barra verde no painel, exatamente como um experimento limpo. Não existe correção de valor-p que resolva, porque o problema não está na variância, está no que o controle representa. Rodar por mais tempo piora, já que mais amostra estreita o intervalo em torno do número enviesado.
Três canais por onde o vazamento entra
| Canal | Como se parece | Sinal típico |
|---|---|---|
| Recurso finito | Estoque, vagas, inventário de anúncio, orçamento, agenda de atendimento | Métrica por usuário se move, total agregado não se move |
| Infraestrutura compartilhada | Cache, fila, pool de conexão, limite de taxa, modelo treinado com dados dos dois braços | Teste A/A com divisão desigual falha |
| Conexão entre pessoas | Convite, mensagem, feed, indicação, conteúdo público visível aos dois braços | Efeito cresce com a porcentagem exposta |
O primeiro canal é o mais conhecido e o mais fácil de explicar para quem não é do time de dados: se existe uma quantidade fixa de alguma coisa, o que o tratamento leva a mais o controle deixa de levar. O segundo é o mais traiçoeiro, porque não envolve usuário nenhum interagindo com outro. O terceiro é o clássico de produto social, e é o único dos três em que o vazamento pode inflar o controle em vez de deprimi-lo, quando o tratamento gera conteúdo ou convites que o controle consome.
Vale insistir num ponto do segundo canal, porque ele pega times que juram não ter marketplace. Kohavi relata no artigo de resultados inesperados publicado no SIGKDD Explorations um teste A/A com divisão de 90 e 10 por cento que falhava de forma consistente. A causa era um recurso limitado: um cache de descarte por menos uso recente em que as entradas de controle e tratamento eram disjuntas. Como o experimento rodava a 90 por cento contra 10, o controle tinha significativamente mais entradas no cache, o que levava a uma taxa de acerto maior, desempenho melhor e, por consequência, métricas melhores. Nenhum usuário conversou com outro. A infraestrutura fez o vazamento sozinha.
Exemplo trabalhado: o vencedor de mais 22 por cento
Uma loja com estoque limitado testa uma mudança de vitrine. São 100.000 usuários por variação e o período tem 5.400 unidades disponíveis, um teto real que não se move durante o teste. Cole os números na calculadora abaixo:
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.
Sem estoque limitado, o controle converteria à sua taxa histórica de 3,000 por cento, ou 3.000 pedidos, e a variação converteria a 3,300 por cento, ou 3.300 pedidos. Só que o estoque não comporta os dois: a variação puxa 3.300 unidades, e o que sobra para o controle são 2.100 mais o que ele já tinha reservado, fechando em 2.700 pedidos em vez de 3.000. Os 300 pedidos que o controle perdeu não sumiram do mundo, foram para o tratamento.
Foi isso que o painel mostrou:
| Comparação ingênua | Usuários | Pedidos | Taxa |
|---|---|---|---|
| A, controle | 100.000 | 2.700 | 2,700 por cento |
| B, variação | 100.000 | 3.300 | 3,300 por cento |
A calculadora devolve mais 0,600 ponto percentual, mais 22,22 por cento relativo, z = 7,865, valor-p abaixo de 0,00001, com intervalo de 95 por cento de mais 0,450 a mais 0,750 ponto percentual. Um vencedor esmagador, pelos padrões de qualquer time.
Agora a comparação que interessa, entre a variação e o que o controle teria feito num mundo sem canibalização:
| Efeito verdadeiro | Usuários | Pedidos | Taxa |
|---|---|---|---|
| A, controle sem interferência | 100.000 | 3.000 | 3,000 por cento |
| B, variação | 100.000 | 3.300 | 3,300 por cento |
A calculadora devolve mais 0,300 ponto percentual, mais 10,00 por cento relativo, z = 3,841, valor-p 0,00012, com intervalo de mais 0,147 a mais 0,453 ponto percentual.
A mudança é real e vale subir. O número honesto é metade do que o painel mostrou. O ganho absoluto medido, 0,600 ponto percentual, é exatamente o dobro do verdadeiro, 0,300, porque cada pedido deslocado aparece duas vezes na diferença entre os braços: uma vez somando no tratamento e outra vez subtraindo no controle. Essa duplicação é a assinatura aritmética da interferência por recurso finito, e é a razão pela qual o fator dois aparece com tanta frequência.
O que a eBay mediu
O exemplo acima é aritmética montada para ensinar o mecanismo. A medição real existe e é maior do que a intuição sugere.
Thomas Blake e Dominic Coey, do laboratório de pesquisa da eBay, publicaram na conferência de economia e computação da ACM em 2014 um estudo de uma campanha de e-mail marketing da própria eBay. O ponto de partida deles é o mesmo: a inferência estatística clássica assume que o tratamento afeta o grupo de teste e não o de controle, e essa premissa é violada em marketplaces por efeitos de equilíbrio geral, porque mudar a demanda do teste altera a oferta disponível para o controle.
O resultado é direto. Nas palavras do artigo, ignorar a interferência entre teste e controle leva a estimativas da efetividade da campanha grandes demais por um fator de cerca de dois. A estimativa no nível de usuário apontava 0,74 por cento. Refeita no nível de leilão, com 1,40 participante de teste e 1,39 de controle por leilão em média, o cálculo dava aproximadamente 0,35 por cento, sobre uma amostra de mais de 10,4 milhões de leilões. Eles registram ainda a economia do viés: ele é maior onde a oferta é mais inelástica, e é positivo quando a demanda é elástica, ou seja, a comparação ingênua superestima o benefício do tratamento.
A recomendação que fecha o artigo é a mesma que vale para qualquer time hoje: uma estratégia melhor pode ser comparar unidades num nível mais alto de agregação, como leilões em vez de indivíduos, entre as quais a interferência é menos pronunciada.
Como reduzir o viés
Não existe correção estatística para um controle contaminado. O que existe é escolher uma unidade de aleatorização que contenha a interação em vez de atravessá-la.
- Aleatorizar por grupo, não por usuário. Se a interferência acontece dentro de uma cidade, aleatorize cidades. Se acontece dentro de uma conta corporativa, aleatorize contas. Se acontece dentro de um leilão, compare leilões. O braço passa a ser um conjunto fechado e o vazamento fica dentro dele.
- Aleatorizar por janela de tempo. Alternar o site inteiro entre controle e tratamento em blocos de horas ou dias elimina o vazamento entre braços simultâneos, ao custo de ficar exposto a sazonalidade e tendência. Funciona melhor onde o recurso compartilhado se renova rápido.
- Segurar o tratamento numa fração pequena. Quanto menor a exposição, menor a pressão sobre o recurso compartilhado e menor o viés. Isso não elimina o problema, e a divisão desigual traz os seus próprios riscos, mas serve como leitura de sensibilidade.
- Medir o agregado, não só o usuário. Se a métrica por usuário sobe e a métrica total do mercado não se move, você não achou crescimento, achou deslocamento. Essa comparação é barata e deveria ser padrão em qualquer teste com recurso finito.
O custo dessas alternativas é sempre o mesmo: menos unidades independentes, portanto menos poder. Aleatorizar 40 cidades em vez de 200.000 usuários derruba o poder do desenho de forma brutal, e é preciso dimensionar com honestidade, o que quase sempre significa rodar por mais tempo. É uma troca de precisão por ausência de viés, e vale porque estimativa enviesada não melhora com amostra.
Como detectar antes de doer
- Teste A/A com divisão desigual. Rode 90 e 10 e veja se ele passa. Este é o detector que pegou o problema do cache no relato de Kohavi, e é barato. Um teste A/A com divisão igual pode passar mesmo com interferência presente, porque o efeito é simétrico; a divisão desigual é o que quebra a simetria. Vale ler junto com teste A/A e validação da plataforma.
- Rampa de exposição. Meça o efeito a 5, 20 e 50 por cento de exposição. Num experimento limpo, o efeito estimado não deveria depender do tamanho do braço. Se ele encolhe conforme você amplia, existe interferência.
- Painel do agregado. Coloque a métrica total ao lado da métrica por usuário em todo teste que toque estoque, orçamento ou fila.
- Checagem de proporção. Divisão desigual não intencional tem várias causas, e a interferência é uma delas. O procedimento de divisão desigual de tráfego é a primeira parada.
Erros comuns
- Achar que é problema de marketplace. Qualquer coisa finita serve: estoque, orçamento de mídia, atendimento humano, cache, vaga de curso, lote promocional.
- Rodar por mais tempo para resolver. Mais tempo estreita o intervalo em torno da estimativa enviesada e aumenta a confiança na conclusão errada.
- Confundir interferência com efeito de interação entre experimentos. São coisas diferentes. Interação é dois experimentos distintos cujos efeitos não somam. Interferência é um único experimento em que o braço A muda o resultado do braço B. O primeiro caso está em testes simultâneos e efeito de interação.
- Aleatorizar por grupo e analisar por usuário. Se a unidade de aleatorização é a cidade, a unidade de análise também precisa ser, sob pena de o intervalo de confiança sair estreito demais. Esse é o mesmo mecanismo descrito em métricas de razão.
Faça isso automático na Donnu
Interferência é um problema de desenho, então o momento de resolver é antes de rodar, e é exatamente quando ninguém está pensando nisso.
Na Donnu, a unidade de aleatorização é uma escolha explícita na criação do experimento, e não um padrão silencioso: dá para aleatorizar por usuário, por conta ou por grupo geográfico, e a análise usa automaticamente a mesma unidade, sem a inconsistência que aperta o intervalo de confiança. Todo experimento marcado como sensível a recurso finito carrega a métrica agregada ao lado da métrica por usuário no mesmo relatório, então deslocamento disfarçado de crescimento fica visível na hora de decidir. Para dimensionar o custo em poder de aleatorizar por grupo, a calculadora de tamanho de amostra aceita o número de unidades independentes que você realmente tem.
Referências
- Blake, T. e Coey, D. Why Marketplace Experimentation Is Harder than it Seems: The Role of Test-Control Interference. ACM Conference on Economics and Computation, 2014. Fonte da premissa de que a inferência clássica assume que o tratamento afeta o teste e não o controle, da violação por efeitos de equilíbrio geral, da conclusão de que ignorar a interferência produz estimativas grandes demais por um fator de cerca de dois, da estimativa de 0,74 por cento no nível de usuário contra aproximadamente 0,35 por cento no nível de leilão com média de 1,40 e 1,39 participantes por leilão sobre mais de 10,4 milhões de leilões, do resultado de que o viés é maior sob oferta inelástica e positivo sob demanda elástica, e da recomendação de comparar unidades num nível mais alto de agregação. dominiccoey.github.io.
- Kohavi, R. Unexpected Results in Online Controlled Experiments. SIGKDD Explorations, 12(2), 2010. Fonte do teste A/A com divisão de 90 e 10 por cento que falhava de forma consistente por causa de um cache de descarte por menos uso recente com entradas disjuntas entre os braços, com o controle acumulando mais entradas, taxa de acerto maior e métricas melhores, e da recomendação de começar por testes A/A e vigiar desempenho. kdd.org.
- Kohavi, R., Deng, A., Longbotham, R. e Xu, Y. Seven Rules of Thumb for Web Site Experimenters. KDD 2014. Fonte da faixa de 0,1 a 1,0 por cento para experimentos bem-sucedidos depois de diluídos e do princípio de que resultados devem ser lidos em impacto total, não em impacto de segmento. exp-platform.com.
- Kohavi, R., Tang, D. e Xu, Y. Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing. Cambridge University Press, 2020. Capítulos sobre vazamento e interferência entre variações e sobre escolha da unidade de aleatorização. Material complementar em experimentguide.com.
Leia também: Teste A/A e validação · Divisão desigual de tráfego · Métricas de razão · Métricas de guardrail · Calculadora de poder estatístico · Read in English
Perguntas frequentes
- O que é interferência entre variações em teste A/B?
- Interferência é quando o que acontece com um usuário do tratamento muda o resultado de um usuário do controle. O teste A/B padrão assume que isso não acontece, uma premissa que a literatura de inferência causal chama de SUTVA. Quando ela cai, o controle deixa de ser uma linha de base limpa e passa a ser um grupo já afetado pelo experimento, então a diferença medida entre os braços não é mais o efeito do tratamento. O problema é de desenho, não de estatística: nenhum ajuste de valor-p conserta um controle contaminado.
- Qual o tamanho do erro que a interferência causa?
- Depende do canal e pode ser enorme. Blake e Coey, da eBay Research Labs, estudaram uma campanha de e-mail da eBay e concluíram no artigo publicado na conferência de economia e computação da ACM em 2014 que ignorar a interferência entre teste e controle leva a estimativas de efetividade grandes demais por um fator de cerca de dois. A estimativa no nível de usuário dava 0,74 por cento, enquanto a análise no nível de leilão apontava aproximadamente 0,35 por cento.
- Interferência só acontece em marketplace?
- Não. Marketplace é só o caso mais visível, porque a oferta é obviamente finita. O mesmo mecanismo aparece com estoque limitado, com orçamento de mídia compartilhado, com atendimento humano compartilhado e com infraestrutura compartilhada. Kohavi relata um teste A/A com divisão de 90 e 10 por cento que falhava de forma consistente porque os dois braços usavam um cache de descarte por menos uso recente com entradas separadas, e o braço maior acabava com taxa de acerto melhor. Nenhum usuário interagiu com outro nesse caso e mesmo assim os braços se contaminaram.
- Como reduzir o viés de interferência?
- Aleatorizando numa unidade que contenha a interação em vez de atravessá-la. Blake e Coey sugerem exatamente isso ao concluir que uma estratégia melhor pode ser comparar unidades num nível mais alto de agregação, como leilões em vez de indivíduos, entre os quais a interferência é menos pronunciada. Na prática isso vira aleatorização por região geográfica, por mercado, por conta ou por janela de tempo. Você troca poder estatístico por ausência de viés, e essa troca quase sempre vale a pena.
- Dá para detectar interferência antes de tomar a decisão errada?
- Dá, em parte. Três sinais ajudam: um teste A/A com divisão desigual que falha, uma métrica agregada que não se move enquanto a métrica por usuário se move muito, e um efeito que encolhe quando você aumenta a porcentagem exposta ao tratamento. Esse terceiro sinal é o mais informativo, porque sob interferência o efeito medido depende do tamanho do braço, e sob um experimento limpo ele não deveria depender.