Estatística

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.

Ilustração plana de dois canteiros cercados lado a lado puxando água por canos de um único tanque redondo compartilhado entre eles, em tons de verde profundo

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.

Como a interferência infla a diferença medidaNo experimento limpo, o controle fica na linha de base e o tratamento sobe, e a diferença medida é igual ao efeito verdadeiro. No experimento com interferência, o tratamento sobe a mesma quantidade, mas o controle cai abaixo da linha de base porque o tratamento consumiu um recurso finito. A diferença medida passa a somar a subida do tratamento com a queda do controle, e fica maior que o efeito verdadeiro.A diferença medida soma duas coisas quando há interferênciabaseexperimento limpocontroletratamentoefeito realcom interferênciacontrolecanibalizadotratamentodiferença medidamaior que o efeito realO tratamento subiu igual nos dois cenários. O que mudou foi o controle, que deixou de ser uma linha de base neutra.
Esquemático. Sob interferência, parte do que o tratamento ganhou foi tirado do controle, então a diferença entre os braços conta esse deslocamento duas vezes.

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:

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.

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.

A comparação ingênua contra o efeito verdadeiroA comparação ingênua entre os braços devolve mais 22,22 por cento relativo com valor-p abaixo de 0,00001. A comparação contra a linha de base sem canibalização devolve mais 10,00 por cento relativo com valor-p 0,00012. Os dois resultados são estatisticamente significativos, mas o primeiro é aproximadamente o dobro do segundo.Os dois são significativos. Só um deles é o efeito.0%ingênuamais 22,22%verdadeiramais 10,00%A diferença entre as duas barras é o deslocamento de 300 pedidos, contado uma vez em cada braço.
O erro não é de precisão, é de direção da conta. Mais amostra estreita o intervalo em torno do número errado.

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.

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

Erros comuns

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

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.