Estatística

Randomização por Cluster em Teste A/B: o efeito de desenho

Randomização por cluster em teste A/B: sortear conta e analisar usuário infla o falso positivo de 5 para 14,5 por cento. O efeito de desenho corrige.

Ilustração plana de dois recipientes cilíndricos verdes lado a lado, cada um com pilhas de discos empilhados, e uma seta curva movendo uma pilha inteira de um recipiente para o outro

Se você sorteia a conta e mede o usuário, o seu teste A/B não tem o nível de confiança que diz ter. Com 5 usuários por conta e uma correlação intraclasse de 0,20, o teste que você acha que erra 5 por cento das vezes erra 14,50 por cento, e o plano de amostra que prometia 80 por cento de poder entrega 54,66. Este artigo mostra de onde vem essa distorção da randomização por cluster, dá a fórmula de uma linha que a corrige, mede a correção em 20 mil réplicas e traz um exemplo trabalhado em que o mesmo teste vence pelo cálculo errado e fica inconclusivo pelo certo. Faz parte do nosso guia completo de teste A/B e complementa a escolha da unidade de sorteio.

Randomização por cluster: sorteio e medição em níveis diferentes

Todo experimento tem duas unidades, e elas nem sempre coincidem. A unidade de sorteio é a granularidade em que o acaso decide quem vai para qual braço. A unidade de análise é a granularidade em que a métrica é calculada. Deng, Knoblich e Lu definem as duas exatamente assim e observam que a análise é direta quando as duas concordam, por exemplo sortear por usuário e medir receita por usuário.

O problema aparece quando a unidade de sorteio é um agregado de unidades de análise. Em B2B isso é a regra, não a exceção: você não pode mostrar uma interface para metade do time de uma empresa e outra para a outra metade, então a conta inteira vai para o mesmo braço. Os autores citam esse caso com todas as letras, política corporativa que proíbe usuários da mesma organização de verem experiências diferentes, entre os motivos que tornam o experimento com randomização por cluster comum na prática.

Sorteio por usuário contra sorteio por contaDois painéis lado a lado. No painel da esquerda, rotulado sorteio por usuário, quatro caixas representam contas e dentro de cada uma os cinco usuários aparecem misturados entre a cor do controle e a cor da variação. No painel da direita, rotulado sorteio por conta, as mesmas quatro caixas aparecem com todos os cinco usuários da mesma cor dentro de cada caixa, duas caixas inteiras no controle e duas inteiras na variação.Sorteio por usuárioSorteio por contaCada caixa é uma conta com 5 usuários. Verde é controle, vermelho é variação.
À esquerda, cada usuário sorteia o próprio braço e as 4 contas ficam misturadas. À direita, a conta inteira vai junta, e é isso que quebra a suposição de independência da análise por usuário.

Kohavi, Longbotham, Sommerfield e Henne são explícitos sobre a suposição que está por trás de toda a matemática do teste: as unidades são assumidas independentes, e para qualquer métrica de nível de usuário, sessão ou pageview a preferência é sortear por usuário. Quando o sorteio sobe um nível e a análise não, a suposição cai, e ela é justamente a que sustenta o erro-padrão.

O que exatamente fica errado

O ponto estimado não fica errado. Se o efeito é zero, a diferença observada continua girando em torno de zero; se o efeito é positivo, a diferença observada continua estimando o efeito certo. O que fica errado é o erro-padrão, e por um motivo simples: o teste de duas proporções conta cada usuário como uma informação nova, mas dois usuários da mesma conta compartilham muita coisa (o mesmo setor, o mesmo plano, o mesmo administrador que configurou o produto, o mesmo momento de contrato).

Deng, Knoblich e Lu mediram essa distorção em uma simulação com mil clusters. O estimador ingênuo, que trata todas as observações como independentes, devolveu erro-padrão médio de 0,00522 quando o desvio verdadeiro do estimador era 0,00895. O erro-padrão saiu com 58 por cento do tamanho que deveria ter. O método delta devolveu 0,00908 para o mesmo desvio verdadeiro de 0,00895, quase em cima.

Erro-padrão pequeno demais é valor-p pequeno demais é falso positivo demais.

A fórmula de uma linha: o efeito de desenho

A correção clássica é o efeito de desenho. Ele é o fator pelo qual a variância do estimador cresce quando o sorteio é por cluster:

efeito de desenho = 1 + (m menos 1) vezes rô

com m sendo o tamanho médio do cluster e rô a correlação intraclasse, a fração da variação total que está entre clusters em vez de dentro deles. Rô igual a zero significa que a conta não informa nada sobre o usuário e o efeito de desenho vale 1: não há problema nenhum. Rô igual a 1 significa que todos os usuários da conta são cópias e a conta inteira vale por um único usuário.

Killip, Mahfoud e Pearce descrevem o mesmo mecanismo em pesquisa de atenção primária e registram um número que assusta pela ordem de grandeza: com 4 consultórios recrutando 32 pacientes cada, e rô de apenas 0,017, o efeito de desenho sai em 1,527, o que reduz a amostra efetiva de 128 pessoas para 84 e explica por que o poder do estudo ficou em 61 por cento. Um rô de menos de 2 por cento derrubou um terço da amostra, porque o cluster era grande.

Usuários por conta (m) rô = 0,01 rô = 0,05 rô = 0,10 rô = 0,20 rô = 0,40
2 1,010 1,050 1,100 1,200 1,400
3 1,020 1,100 1,200 1,400 1,800
5 1,040 1,200 1,400 1,800 2,600
10 1,090 1,450 1,900 2,800 4,600
25 1,240 2,200 3,400 5,800 10,600
50 1,490 3,450 5,900 10,800 20,600

Repare na assimetria da tabela: o tamanho do cluster pesa muito mais que a correlação. Um rô modesto de 0,05 é inofensivo com 3 usuários por conta (1,100) e devastador com 50 (3,450). É por isso que a pergunta operacional certa raramente é “como reduzo a correlação” e quase sempre é “como aumento o número de contas”.

Como o efeito de desenho cresce com o tamanho do clusterTrês curvas ascendentes partindo do valor 1 no eixo vertical. O eixo horizontal traz o número de usuários por conta, de 1 a 25. A curva mais baixa, correlação intraclasse de 0,05, chega a 2,2 em 25 usuários. A curva intermediária, correlação de 0,10, chega a 3,4. A curva mais alta, correlação de 0,20, chega a 5,8. As três são retas, porque o efeito de desenho é linear no tamanho do cluster.rô 0,05rô 0,10rô 0,2012351025usuários por conta1x2x3x4x
O efeito de desenho é linear no tamanho do cluster. Dobrar o número de usuários por conta quase dobra o custo em amostra; dobrar o número de contas não cobra nada.

Quanto isso custa em dias de calendário

Vamos a um plano concreto. Base de conversão de 5 por cento, alvo de detectar um ganho relativo de 10 por cento, 95 por cento de confiança, 80 por cento de poder, 40 mil visitantes por semana. A calculadora abaixo devolve 31.234 por variação, o que dá 11 dias com os dois braços rodando.

Calculadora de tamanho de amostra
-Visitantes por variação
-Total (2 variações)
-Duração estimada

Cálculo por aproximação normal de duas proporções, 2 variações (50/50). Mexa nos campos e veja o impacto ao vivo.

Esse 31.234 é o número para usuários independentes. Se o sorteio é por conta, ele é o piso, não o alvo. Multiplique pelo efeito de desenho e divida pelo tamanho do cluster para saber quantas contas você precisa em cada braço:

Perfil da base Efeito de desenho Usuários por braço Contas por braço Dias
5 usuários/conta, rô 0,05 1,200 37.481 7.497 14
5 usuários/conta, rô 0,10 1,400 43.728 8.746 16
5 usuários/conta, rô 0,20 1,800 56.222 11.245 20
3 usuários/conta, rô 0,30 1,600 49.975 16.659 18
10 usuários/conta, rô 0,20 2,800 87.456 8.746 31
25 usuários/conta, rô 0,05 2,200 68.715 2.749 25

O teste de 11 dias vira um teste de 20 dias no cenário mais comum de SaaS B2B, e de 31 dias quando as contas são maiores. Vale reparar na linha de 25 usuários por conta: ela precisa de só 2.749 contas por braço, o que parece pouco, mas custa 25 dias, porque cada conta grande é cara em usuários e barata em informação.

O falso positivo, medido

Nada disso precisa ser aceito por fé. Simulamos 20 mil experimentos por linha com um modelo beta-binomial, em que a taxa de conversão de cada conta é sorteada de uma distribuição com a correlação intraclasse desejada e os usuários dentro dela convertem de forma independente dada aquela taxa. O efeito verdadeiro é exatamente zero em todas as linhas.

Cenário Efeito de desenho Falso positivo previsto Falso positivo medido (usuário) Falso positivo medido (conta)
5 usuários/conta, rô 0,05 1,200 7,36% 7,38% 5,08%
5 usuários/conta, rô 0,10 1,400 9,76% 9,70% 5,04%
3 usuários/conta, rô 0,30 1,600 12,13% 12,03% 4,79%
5 usuários/conta, rô 0,20 1,800 14,41% 14,50% 4,82%
10 usuários/conta, rô 0,20 2,800 24,15% 23,47% 4,88%
5 usuários/conta, rô próximo de zero 1,000 5,00% 5,20% 5,21%

A coluna “previsto” não é um chute: é simplesmente a probabilidade de o z inflado passar de 1,96, ou seja, o que sobra depois de dividir o corte por raiz do efeito de desenho. Ela bate com a medida em todas as linhas dentro do erro de simulação, que aqui é de cerca de 0,15 ponto percentual. E a última linha é a prova por contraste: quando a correlação some, o teste ingênuo volta a errar 5 por cento, porque não havia cluster nenhum para ignorar.

Falso positivo do teste ingênuo contra o teste no nível da contaGráfico de barras pareadas em cinco cenários. Em cada par, a barra escura é a taxa de falso positivo do teste no nível do usuário e a barra clara é a do teste no nível da conta. Os valores da barra escura sobem de 7,38 por cento com correlação 0,05 até 23,47 por cento com dez usuários por conta e correlação 0,20, enquanto a barra clara fica sempre perto de 5 por cento. Uma linha tracejada horizontal marca o nível nominal de 5 por cento.5%7,49,712,014,523,55 u. rô 0,055 u. rô 0,103 u. rô 0,305 u. rô 0,2010 u. rô 0,20análise por usuárioanálise por conta
Vinte mil réplicas por cenário, todas com efeito verdadeiro igual a zero. A análise no nível da conta segura os 5 por cento em todos os arranjos; a análise no nível do usuário chega a errar quase uma vez em quatro.

O poder também some, e o efeito de desenho devolve

Se a correção fosse só um pedágio, dava para fingir que não existe. Ela não é: sem ela, o teste fica sem poder, que é o problema oposto e igualmente caro. Rodamos 8 mil réplicas por linha com um efeito verdadeiro de 10 por cento relativo, comparando o número de contas que sai do plano ajustado pelo efeito de desenho com o número que sai do plano ingênuo.

Cenário Contas/braço pelo plano ajustado Poder medido Contas/braço sem ajuste Poder medido
5 usuários/conta, rô 0,10 8.746 79,84% 6.247 65,36%
5 usuários/conta, rô 0,20 11.245 79,71% 6.247 54,66%
10 usuários/conta, rô 0,20 8.746 79,81% 3.124 38,06%

O plano ajustado devolve os 80 por cento prometidos nas três linhas, com desvio menor que 0,4 ponto percentual do alvo. O plano ingênuo entrega 38 por cento de poder no cenário de contas grandes: dois em cada três ganhos reais de 10 por cento passariam despercebidos. Larsen e coautores resumem o mecanismo em uma frase, ao discutir randomização por cluster em redes sociais: com os clusters sendo a unidade de sorteio em vez dos usuários individuais, o tamanho efetivo de amostra, e portanto o poder, cai drasticamente.

O exemplo trabalhado: o mesmo teste, dois vereditos

Simulamos um único experimento com semente fixa. 1.200 contas por braço, 5 usuários por conta, correlação intraclasse de 0,20, e efeito verdadeiro igual a zero. A variação não faz absolutamente nada.

Controle Variação
Usuários 6.000 6.000
Conversões 304 360
Taxa 5,0667% 6,0000%

Cole esses quatro números na calculadora de significância e o veredito vem redondo: z de 2,2360, valor-p de 0,025354, ganho relativo de mais 18,42 por cento, intervalo de confiança de 0,1154 a 1,7513 ponto percentual, a variação vence. É o tipo de resultado que um time comemora, escreve no relatório e manda para produção.

Agora a mesma tabela lida no nível certo. Cada conta tem uma taxa de conversão própria (0 em 5, 1 em 5, 2 em 5), e o teste é sobre as 1.200 taxas de conta de cada braço. As médias são idênticas às taxas globais, porque as contas têm todas o mesmo tamanho: 0,050667 no controle e 0,060000 na variação. O que muda é o erro-padrão, que agora vem do espalhamento entre contas e não da soma dos usuários: 0,005759 em vez de 0,004174.

Análise Diferença Erro-padrão Estatística valor-p IC 95% Veredito
Por usuário (ingênua) 0,9333 pp 0,004174 z 2,2360 0,025354 0,1154 a 1,7513 pp vence
Por conta (correta) 0,9333 pp 0,005759 t 1,6206 0,105093 -0,1954 a 2,0621 pp inconclusivo
Os dois intervalos de confiança do mesmo experimentoDuas barras horizontais de intervalo de confiança sobre um eixo em pontos percentuais que vai de menos 0,5 a mais 2,5. A barra de cima, da análise por usuário, vai de 0,1154 a 1,7513 e não toca a linha vertical do zero. A barra de baixo, da análise por conta, vai de menos 0,1954 a 2,0621 e atravessa a linha do zero. As duas têm o mesmo ponto central, 0,9333 ponto percentual.0-0,51,02,0diferença em pontos percentuaispor usuário: p 0,0254, vencepor conta: p 0,1051, inconclusivo
Mesmo ponto estimado, intervalos diferentes. O intervalo da análise por usuário é 27 por cento mais estreito do que deveria, e é só isso que separa “vence” de “inconclusivo”.

Vale conferir que a conta fecha por outro caminho. Dividindo o z ingênuo de 2,2360 pela raiz do efeito de desenho de 1,8 saem 1,6666 e valor-p de 0,095596, praticamente o mesmo que o teste no nível da conta devolveu (1,6206 e 0,105093). A pequena diferença é ruído amostral do rô real daquela amostra específica. Aplicando o estimador de análise de variância aos dados simulados, os dois braços devolveram correlação intraclasse de 0,1946 e 0,2526, ao redor do 0,20 verdadeiro.

Este experimento não tinha efeito nenhum. Ele só entrou na fatia de 14,50 por cento de falsos positivos que a análise ingênua produz nesse arranjo. Se você roda dez testes por trimestre com sorteio por conta e leitura por usuário, o número esperado de vitórias inventadas por ano é próximo de seis.

Como medir o seu rô sem rodar nenhum experimento

A correlação intraclasse é uma propriedade da sua base, não do teste, então dá para estimá-la com dados históricos de um período sem experimento nenhum. O caminho mais curto:

  1. Escolha uma janela recente com volume parecido com o do teste que você vai rodar.
  2. Para cada conta, calcule a taxa de conversão dos usuários dela naquela janela.
  3. Separe a variação entre contas da variação dentro de cada conta, com o estimador de análise de variância.
  4. Rô é a fração da variação total que está entre contas.

Um atalho de sanidade, se o número parecer alto ou baixo demais: rode um teste A/A com sorteio por conta, compare a leitura por usuário com a leitura por conta e veja quanto os erros-padrão divergem. A razão entre os dois ao quadrado é uma estimativa direta do efeito de desenho, sem precisar de fórmula nenhuma.

Killip e coautores registram que em estudos com pessoas os valores típicos ficam entre 0,01 e 0,02, e pedem que os pesquisadores publiquem seus rôs para que o campo acumule referências. Vale repetir de onde vem esse intervalo: pesquisa clínica com pacientes de consultórios. Contas de software costumam ser bem mais homogêneas por dentro, então esse não é o número para copiar, é só o lembrete de que até um rô muito pequeno derruba a amostra efetiva quando o cluster é grande.

Contas, não usuários por conta

A consequência mais acionável da fórmula é uma regra de recrutamento. Como o efeito de desenho depende de m e não de k, quem quer poder deve buscar mais clusters, não clusters maiores. Killip e coautores demonstram isso mantendo o total de pessoas fixo em 128 e só mudando o arranjo:

Clusters (k) Pessoas por cluster (m) Total Efeito de desenho Amostra efetiva Poder
4 32 128 1,527 84 61%
8 16 128 1,255 102 70%
16 8 128 1,119 114 75%
32 4 128 1,051 122 78%
64 2 128 1,017 126 79%
128 1 128 1,000 128 80%

O mesmo número de pessoas entrega de 61 a 80 por cento de poder dependendo só de como elas estão agrupadas. E na direção contrária os autores mostram o custo de engordar o cluster: mantendo 4 consultórios e subindo de 10 para 80 pacientes cada, o efeito de desenho vai de 1,153 para 2,343 e o poder só chega a 82 por cento porque o total foi de 40 para 320 pessoas. Multiplicar por 8 o recrutamento para sair de 29 para 82 por cento de poder é um péssimo negócio comparado a simplesmente conseguir mais clusters.

Na prática, em produto B2B, isso significa preferir rodar o teste na base inteira de contas pequenas e médias a rodá-lo só nas contas enterprise, mesmo que as enterprise tragam mais usuários. E significa que estender o experimento em dias, quando não entram contas novas, ajuda muito menos do que a curva de duração sugere.

As três saídas de análise, e o que cada uma cobra

Reconhecido o problema, existem três formas usuais de analisar, e elas não são equivalentes.

Agregar por cluster. Calcule a taxa de cada conta e faça um teste de duas amostras sobre essas taxas. É o que fizemos no exemplo trabalhado, é trivial de implementar em SQL e devolveu 4,79 a 5,08 por cento de falso positivo em todos os cenários simulados. A limitação é que ele responde sobre a conta média, não sobre o usuário médio, o que importa quando as contas têm tamanhos muito diferentes.

Método delta na métrica de razão. Mantém a métrica no nível do usuário e corrige só a variância, tratando a taxa como razão de duas médias de quantidades por cluster. É o que Deng, Knoblich e Lu recomendam, e na simulação deles devolveu erro-padrão de 0,00908 contra desvio verdadeiro de 0,00895. Detalhamos o mecanismo em métricas de razão e o método delta.

Modelo de efeitos mistos. Acerta a variância mas tem um problema de estimando que costuma passar batido. Deng, Knoblich e Lu mediram: com valor verdadeiro de 0,667, o modelo misto devolveu 0,547. O motivo é que ele estima a média das médias de conta, dando peso igual a toda conta, o que só coincide com a média populacional quando o efeito é homogêneo. Em conjunto de contas com tamanhos e comportamentos muito diferentes, o viés é grande.

Quando isso aparece fora do B2B

Sorteio por cluster não é exclusividade de SaaS empresarial. A mesma matemática vale quando:

Em todos, a pergunta de diagnóstico é a mesma e cabe em uma frase: a coisa que o acaso escolheu é a mesma coisa que a métrica conta? Se não for, você tem um efeito de desenho para pagar.

Faça isso automático na Donnu

O motivo mais comum de um teste B2B nascer com o falso positivo errado não é ignorância da estatística, é que a ferramenta pergunta “quantos visitantes” e nunca pergunta “sorteados como”. Na Donnu a unidade de sorteio é um campo do experimento, não uma convenção implícita: ao declarar que o sorteio é por conta, o cálculo de amostra já multiplica pelo efeito de desenho estimado a partir do seu próprio histórico, a data prevista de término considera a entrada de contas novas e não só de usuários, e a leitura do resultado sai no nível do sorteio, com o intervalo de confiança certo desde a primeira olhada. Se a correlação intraclasse observada durante o teste divergir da que entrou no plano, o experimento avisa em vez de deixar o número velho de pé.

Perguntas frequentes

As respostas curtas estão na seção de perguntas frequentes desta página, montadas a partir dos mesmos cálculos apresentados aqui.

Referências

Leia também

Read in English

Perguntas frequentes

O que é randomização por cluster em um teste A/B?
É quando o sorteio acontece em um nível mais grosso do que o nível em que a métrica é calculada. O caso mais comum em B2B é sortear a conta e medir a conversão por usuário: todos os usuários da mesma empresa caem no mesmo braço. Deng, Knoblich e Lu descrevem exatamente esse caso, com política corporativa que proíbe usuários da mesma organização de verem experiências diferentes, como um exemplo prático de experimento com randomização por cluster.
Por que analisar usuários quando o sorteio foi por conta quebra o teste?
Porque o teste de duas proporções assume que cada observação é independente, e usuários da mesma conta não são. Nas nossas 20 mil réplicas com 5 usuários por conta e correlação intraclasse de 0,20, o teste ingênuo no nível do usuário devolveu 14,50 por cento de falso positivo em vez de 5. O ponto estimado continua certo; o que fica errado é o erro-padrão, que sai pequeno demais.
O que é o efeito de desenho e como se calcula?
É o fator pelo qual a amostra precisa crescer para compensar a semelhança dentro do cluster. Vale 1 mais (m menos 1) vezes rô, com m sendo o tamanho médio do cluster e rô a correlação intraclasse. Com 5 usuários por conta e rô de 0,20 dá 1,8: você precisa de 80 por cento mais usuários. Com 10 usuários por conta e o mesmo rô dá 2,8.
Como estimar a correlação intraclasse antes de rodar o teste?
Pelos seus próprios dados históricos, com o estimador de análise de variância aplicado às taxas por conta em um período sem experimento nenhum. No nosso exemplo trabalhado, em que o valor verdadeiro era 0,20, os dois braços devolveram 0,1946 e 0,2526. Killip, Mahfoud e Pearce registram que em estudos com pessoas os valores costumam ficar entre 0,01 e 0,02, mas isso é a realidade de pesquisa clínica em consultórios, não de contas de software, onde a semelhança interna tende a ser bem maior.
Vale mais a pena aumentar o número de contas ou o número de usuários por conta?
Contas, quase sempre. Killip e coautores mostram que mantendo 128 pessoas no total e apenas mudando o arranjo, 4 clusters de 32 devolvem poder de 61 por cento e 32 clusters de 4 devolvem 78 por cento. O efeito de desenho depende do tamanho do cluster, não do total, então cluster grande é caro e cluster pequeno é quase de graça.
Existe um jeito de continuar analisando no nível do usuário?
Existe, desde que o erro-padrão seja calculado no nível do sorteio. As duas rotas usuais são o método delta aplicado à métrica de razão e o teste sobre as médias por cluster. Deng, Knoblich e Lu compararam as duas contra o modelo de efeitos mistos e registraram que o ingênuo subestima a variância, o delta acerta, e o modelo misto acerta a variância mas devolve um ponto estimado enviesado, porque ele estima a média das contas e não a média dos usuários.