Unidade de Sorteio em Teste A/B: usuário ou sessão
A unidade de sorteio decide o que o teste mede e quanta amostra você realmente tem. Como escolher entre usuário, sessão e pageview sem inflar o valor-p.

📚 Este artigo faz parte do guia Significância Estatística em Teste A/B: O Guia.
A unidade de sorteio é o nível em que o sorteio entre controle e tratamento acontece, e ela decide duas coisas de uma vez: que tipo de efeito o teste consegue medir e quanta amostra estatística você realmente tem. Trocar de unidade não é um detalhe de implementação, é uma troca entre poder e validade, e a versão que produz o valor-p mais bonito quase sempre é a errada. Este guia cobre a diferença entre unidade de sorteio e unidade de análise, um exemplo trabalhado em que o mesmo teste sai com z igual a 3,680 ou 6,374 conforme a unidade escolhida para ler, o efeito de desenho que explica a diferença, e uma regra de decisão para escolher entre usuário, sessão, pageview e agrupamento. Faz parte do nosso guia completo de teste A/B e continua o raciocínio de métricas de razão em teste A/B.
As duas unidades que todo teste tem
Todo experimento online carrega duas unidades diferentes, e a maioria das discussões confusas sobre resultado nasce de tratá-las como se fossem uma só.
Deng, Knoblich e Lu definem as duas com precisão no artigo de KDD 2018 sobre o método delta em análise de métricas. A unidade de aleatorização é o nível de granularidade em que a amostragem ou o sorteio é feito. A unidade de análise é o nível de agregação em que a métrica é calculada. Segundo os autores, a análise é direta quando as duas coincidem, por exemplo quando se sorteia por usuário e também se calcula a receita média por usuário.
O problema aparece quando elas não coincidem, e isso é mais comum do que parece. Ainda segundo os autores, para o mesmo experimento normalmente existem métricas com unidades de análise diferentes: eles relatam que a maioria dos experimentos aleatorizados por usuário rodados na plataforma de experimentação da Microsoft contém tanto métricas em nível de usuário quanto métricas em nível de página.
Existe uma restrição dura nessa relação, e ela é a primeira coisa a entender antes de escolher qualquer unidade. A unidade de sorteio não pode ser mais granular que a unidade de análise. Os autores explicam o porquê: se fosse, a unidade de análise conteria observações sob tratamento e sob controle ao mesmo tempo, o que anula o propósito de diferenciar os dois grupos. Sortear por pageview e depois reportar “taxa de conversão por usuário” significa que quase todo usuário terá visto os dois lados, e a diferença medida entre os braços encolhe por construção, não por ausência de efeito.
Exemplo trabalhado: o mesmo teste, duas leituras
Uma loja roda um teste sorteando por usuário. São 100.000 usuários por braço, e cada usuário faz em média 3 sessões durante o período. A métrica de interesse é “converteu ao menos uma vez”.
Cole os números abaixo na calculadora para reproduzir o cálculo linha por linha.
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 leitura correta, com a unidade de análise igual à unidade de sorteio:
| Leitura por usuário | Usuários | Conversões | Taxa |
|---|---|---|---|
| Controle | 100.000 | 12.000 | 12,000 por cento |
| Tratamento | 100.000 | 12.540 | 12,540 por cento |
Na tela, a calculadora mostra taxas de 12,00 e 12,54 por cento, lift de mais 4,5 por cento, valor-p de 0,0002 e intervalo de 95 por cento de mais 0,3 a mais 0,8 ponto percentual, com veredito de vitória de B. A interface arredonda a exibição e não mostra o escore z, então os valores exatos do motor, que são os usados neste artigo, ficam assim: mais 0,540 ponto percentual, mais 4,500 por cento relativo, z = 3,680, valor-p de 0,00023, intervalo de mais 0,252 a mais 0,828 ponto percentual. Um resultado sólido e nada espetacular.
Agora a mesma coisa lida por sessão. Como cada usuário fez 3 sessões, o painel mostra 300.000 sessões por braço, e a taxa de conversão por sessão é a mesma:
| Leitura por sessão | Sessões | Conversões | Taxa |
|---|---|---|---|
| Controle | 300.000 | 36.000 | 12,000 por cento |
| Tratamento | 300.000 | 37.620 | 12,540 por cento |
A calculadora mostra as mesmas taxas e o mesmo lift de mais 4,5 por cento, e o valor-p cai para a faixa que ela exibe como menor que 0,0001. Em precisão cheia: mesmo lift de mais 4,500 por cento relativo, z = 6,374, valor-p de 0,00000000018, intervalo de mais 0,374 a mais 0,706 ponto percentual. Nada mudou no experimento. O único movimento foi trocar o denominador da métrica de usuário para sessão.
A razão entre os dois valores de z é exatamente a raiz de 3, o número de sessões por usuário: 6,374 dividido por 3,680 dá 1,7321. Isso não é coincidência, é a assinatura de um erro-padrão calculado como se cada sessão fosse uma observação independente nova.
O efeito de desenho: quanto da amostra é real
As sessões de um mesmo usuário não são independentes. Quem compra numa visita tende a comprar em outra; quem nunca converte tende a não converter em nenhuma. A quantidade que mede isso é a correlação intraclasse, e no artigo de Deng, Knoblich e Lu ela aparece definida como a fração da variância total que vem da variância entre agrupamentos.
Para agrupamentos de tamanho igual, os autores registram a forma fechada da variância, e dela sai o fator conhecido como efeito de desenho: 1 mais o produto da correlação intraclasse pelo tamanho do agrupamento menos 1. Eles descrevem os dois extremos com clareza. Quando a variância dentro do agrupamento é zero, todas as observações do agrupamento são idênticas, a correlação intraclasse vale 1 e a variância passa a depender só do número de agrupamentos. Quando a variância entre agrupamentos é zero, as observações são de fato independentes, a correlação intraclasse vale 0, e a fórmula colapsa no caso simples.
Aplicando isso ao nosso teste, com agrupamentos de 3 sessões por usuário:
| Correlação intraclasse | Efeito de desenho | z corrigido | Valor-p | Sessões efetivas por braço |
|---|---|---|---|---|
| 0,00 | 1,000 | 6,374 | 0,00000000018 | 300.000 |
| 0,25 | 1,500 | 5,205 | 0,00000019 | 200.000 |
| 0,50 | 2,000 | 4,507 | 0,0000066 | 150.000 |
| 0,60 | 2,200 | 4,298 | 0,000017 | 136.364 |
| 1,00 | 3,000 | 3,680 | 0,00023 | 100.000 |
Repare na última linha: com correlação intraclasse igual a 1, o z corrigido volta a ser exatamente o 3,680 da leitura por usuário, e a amostra efetiva volta a ser exatamente os 100.000 usuários. A fórmula degrada para o caso certo, o que é uma boa checagem de sanidade.
E repare no que ela diz de fato. As 300.000 sessões nunca valeram 300.000 unidades. Elas valem alguma coisa entre 100.000 e 300.000, dependendo de quanto do comportamento é propriedade do usuário e quanto é propriedade da visita. Sessão extra do mesmo visitante não é amostra nova, é informação parcialmente repetida.
Uma ressalva honesta dos próprios autores: essa fórmula fechada, apesar de teoricamente correta, tem valor prático limitado, porque assume que todos os agrupamentos têm o mesmo tamanho e a mesma distribuição, o que não acontece na vida real. Usuários fazem números muito diferentes de sessões. A saída que eles propõem é o método delta, aplicado direto à definição da métrica como razão de duas médias em nível da unidade sorteada, e a mesma lógica que sustenta o tratamento de métricas de razão.
Vale saber o tamanho do erro que se comete ignorando isso. Na simulação publicada no mesmo artigo, com mil agrupamentos de tamanhos heterogêneos, o desvio-padrão verdadeiro do estimador era 0,00895 e o erro-padrão calculado pelo método ingênuo saiu 0,00522, ou seja, cerca de 42 por cento menor que o real. O método delta devolveu 0,00908, próximo do verdadeiro.
Como escolher a unidade de sorteio
A escolha não é uma questão de preferência técnica, é uma sequência de restrições. Percorra na ordem.
Detalhando as opções:
| Unidade de sorteio | Quando é a escolha certa | O que você perde |
|---|---|---|
| Usuário (cookie, conta, dispositivo) | Padrão. Qualquer mudança que o visitante possa perceber entre visitas | Nada, além de precisar de identificador estável |
| Sessão | A mudança só existe dentro da visita e não deixa memória, ou não há identificador estável | Consistência entre visitas, e qualquer efeito que se acumule |
| Pageview | Praticamente nunca, em teste de produto | Consistência dentro da própria visita; contamina a leitura |
| Conta ou organização | Produto B2B em que colegas não podem ver telas diferentes | Poder, porque a conta vira o agrupamento |
| Região geográfica | Intervenção que não é entregável por usuário, como mídia offline | Muito poder, ver experimento geográfico |
| Bloco de tempo | Marketplace com oferta compartilhada entre os braços | Poder, e exige tratamento de dependência temporal, ver teste switchback |
Duas das linhas dessa tabela merecem nota. Deng, Knoblich e Lu citam como razões reais para sortear em nível de agrupamento tanto política corporativa que proíbe usuários da mesma organização de receber experiências diferentes, quanto a necessidade de reduzir viés na presença de interferência de rede, que é exatamente o problema tratado em interferência entre variações.
O custo em amostra de subir a unidade
Subir a unidade de sorteio custa poder, e o cálculo dá pra fazer antes de começar. Com base de conversão de 12 por cento e efeito mínimo detectável de 4,5 por cento relativo, o motor de tamanho de amostra devolve 57.948 usuários por variação a 95 por cento de confiança e 80 por cento de poder.
Se você fosse sortear por sessão em vez de por usuário, precisaria desse mesmo número em sessões, o que a princípio parece 3 vezes mais barato. Mas essas sessões correlacionadas não valem uma unidade cada. Aplicando o efeito de desenho ao número necessário:
| Cenário | Unidades necessárias por variação | Equivalente em usuários |
|---|---|---|
| Sorteio por usuário | 57.948 usuários | 57.948 |
| Sorteio por sessão, correlação intraclasse 0 (irreal) | 57.948 sessões | 19.316 |
| Sorteio por sessão, correlação intraclasse 0,25 | 86.922 sessões | 28.974 |
| Sorteio por sessão, correlação intraclasse 0,50 | 115.896 sessões | 38.632 |
O desconto existe, mas é menor que a razão de contagens e diminui rápido conforme a correlação sobe. E, mais importante, o desconto só é real se o efeito que você quer medir couber dentro de uma única sessão. Se ele não couber, você não está economizando amostra, está medindo outra coisa.
Quando sortear por sessão é legítimo
Existe um caso honesto, e vale nomear para não parecer que a sessão é sempre pecado:
- A mudança testada não deixa memória. Ordenação de resultados dentro de uma busca, formato de um bloco de recomendação, comportamento de um filtro. O visitante volta amanhã e não tem por que estranhar uma tela diferente da de ontem.
- Não existe identificador estável. Site sem login, público majoritariamente novo, alto índice de bloqueio de cookie. Nesse caso o “usuário” que você acha que está sorteando já é uma sessão disfarçada, e assumir isso explicitamente é mais honesto que fingir o contrário.
- A janela de decisão é curta. Se a conversão acontece na mesma visita em quase todos os casos, o efeito de acúmulo entre visitas é pequeno por natureza.
Fora disso, o preço é alto. Sortear por sessão significa que o mesmo visitante vê o controle na segunda e o tratamento na quarta, e qualquer efeito que dependa de reconhecimento, hábito ou aprendizado fica diluído entre os braços. Também significa contaminação: parte da experiência do braço A já está na cabeça de quem está sendo medido no braço B. O parente próximo desse problema aparece em efeito novidade em teste A/B.
Checklist antes de rodar
- A unidade de sorteio está declarada em algum lugar? Se ninguém escreveu, ninguém vai conferir na hora de ler o resultado.
- A métrica primária tem a mesma unidade no denominador? Se não, o intervalo de confiança precisa de método delta ou de correção por efeito de desenho.
- A unidade de sorteio é igual ou mais grossa que a unidade de análise? Nunca mais fina.
- O identificador da unidade é estável durante todo o teste? Cookie que rotaciona transforma sorteio por usuário em sorteio por sessão sem avisar ninguém.
- A divisão por braço bate com o planejado na unidade sorteada? Confira com o verificador de SRM, na unidade certa.
- O relatório mostra em qual unidade cada número foi calculado? Duas métricas em unidades diferentes na mesma tabela precisam estar rotuladas.
- A conta de poder foi feita na unidade sorteada? Não na mais numerosa.
Erros comuns
- Escolher a unidade pela contagem disponível. “Temos mais sessões que usuários, então vamos sortear por sessão” é uma decisão de poder aparente tomada contra a validade.
- Sortear por usuário e reportar taxa por página sem correção. É o caso mais comum de todos, e é justamente onde o erro-padrão ingênuo saiu 42 por cento menor que o verdadeiro na simulação de Deng, Knoblich e Lu.
- Trocar a unidade no meio do teste. Migrar de cookie para conta logada durante o experimento reembaralha quem está em qual braço.
- Tratar dispositivo como usuário sem dizer. A mesma pessoa no celular e no desktop são duas unidades diferentes, e o efeito medido é por dispositivo, não por pessoa.
- Usar mínimo de agrupamento como se fosse mínimo de observação. Vinte contas B2B com muitos usuários dentro continuam sendo vinte unidades sorteadas.
- Ignorar a heterogeneidade de tamanho. Os autores recomendam explicitamente tornar os agrupamentos homogêneos em tamanho, porque a variância do tamanho do agrupamento entra direto na variância da métrica e derruba o poder para detectar efeitos pequenos.
Faça isso automático na Donnu
O erro caro aqui não é escolher a unidade errada no início, é escolher uma unidade no início e ler o resultado em outra no fim, sem que nada no relatório sinalize a troca.
Na Donnu, a unidade de aleatorização faz parte da declaração do experimento, e cada métrica do relatório carrega o rótulo da unidade em que o denominador dela foi calculado. Quando o denominador é mais fino que a unidade sorteada, o aviso de dependência aparece junto do intervalo de confiança em vez de ficar escondido numa nota de rodapé. E se você quiser refazer qualquer conta na mão, a calculadora de valor-p e a calculadora de tamanho de amostra aceitam as contagens brutas na unidade que você escolher.
Referências
- Deng, A., Knoblich, U. e Lu, J. Applying the Delta Method in Metric Analytics: A Practical Guide with Novel Ideas. KDD 2018. Fonte das definições de unidade de aleatorização como o nível de granularidade em que a amostragem ou aleatorização é feita e de unidade de análise como o nível de agregação do cálculo da métrica, da observação de que a análise é direta quando as duas coincidem, da restrição de que a unidade de aleatorização não pode ser mais granular que a unidade de análise sob pena de a unidade de análise conter observações dos dois braços, do relato de que a maioria dos experimentos aleatorizados por usuário da plataforma da Microsoft contém métricas em nível de usuário e de página, da forma fechada da variância para agrupamentos de tamanho igual e do fator 1 mais correlação intraclasse vezes tamanho menos 1, dos dois casos extremos com correlação 0 e 1, da ressalva de que essa forma fechada tem valor prático limitado por assumir agrupamentos iguais, das razões práticas de aleatorização por agrupamento (política corporativa e interferência de rede), da recomendação de tornar os agrupamentos homogêneos em tamanho, e dos números da simulação com desvio verdadeiro 0,00895, erro-padrão ingênuo 0,00522 e método delta 0,00908. arxiv.org/abs/1803.06336.
- Bakshy, E. e Eckles, D. Uncertainty in Online Experiments with Dependent Data: An Evaluation of Bootstrap Methods. KDD 2013. Fonte da afirmação de que procedimentos que ignoram dependência são anticonservadores, com taxas de erro Tipo I acima do nominal e intervalos de 95 por cento cobrindo o valor verdadeiro menos de 95 por cento das vezes. arxiv.org/abs/1304.7406.
- Kohavi, R., Deng, A., Longbotham, R. e Xu, Y. Seven Rules of Thumb for Web Site Experimenters. KDD 2014. Referência sobre métricas organizacionais em vez de métricas de recurso, sobre diluição de efeito por tamanho de segmento e sobre o volume de falsos positivos gerado por rodar muitos experimentos com métricas não correlacionadas. 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. Referência geral sobre escolha de unidade de aleatorização, consistência de experiência e consequências de analisar em unidade diferente da sorteada. Material complementar em experimentguide.com.
Leia também: Métricas de razão em teste A/B · Interferência entre variações · Teste switchback · SRM: divisão desigual de tráfego · Análise por gatilho e diluição · Calculadora de valor-p · Read in English
Perguntas frequentes
- O que é a unidade de sorteio em um teste A/B?
- É o nível de granularidade em que o sorteio entre controle e tratamento acontece. Deng, Knoblich e Lu definem a unidade de aleatorização como o nível de granularidade em que a amostragem ou a aleatorização é feita, e a unidade de análise como o nível de agregação em que a métrica é calculada. Na prática, a unidade de sorteio é quem recebe um lado do teste e continua nele: um usuário identificado por cookie, uma sessão, um dispositivo, uma conta, uma região ou um bloco de tempo.
- Qual a diferença entre unidade de sorteio e unidade de análise?
- A unidade de sorteio é o que o sorteio atribui; a unidade de análise é o que a métrica conta no denominador. Quando as duas coincidem, a análise é direta: sorteia por usuário e calcula receita média por usuário. Quando o denominador da métrica é mais fino que a unidade sorteada, como sortear por usuário e medir taxa de clique por página, cada unidade sorteada vira um agrupamento de várias observações correlacionadas, e o erro-padrão calculado como se fossem independentes sai menor do que o verdadeiro.
- Posso sortear por sessão em vez de por usuário?
- Pode, e às vezes é a escolha certa, mas o preço é alto e precisa ser consciente. Sorteando por sessão, o mesmo visitante vê o controle numa visita e o tratamento na seguinte, o que quebra qualquer efeito que dependa de consistência ou de acúmulo entre visitas e polui a leitura por contaminação entre os braços. Sortear por sessão faz sentido sobretudo quando a decisão testada só existe dentro de uma visita e não deixa memória, ou quando não existe identificador estável de usuário.
- A unidade de sorteio pode ser mais fina que a unidade de análise?
- Não. Deng, Knoblich e Lu são explícitos: a unidade de aleatorização não pode ser mais granular que a unidade de análise, porque nesse caso a unidade de análise conteria observações sob tratamento e sob controle ao mesmo tempo, anulando o propósito de diferenciar os dois grupos. Sortear por pageview e reportar uma métrica por usuário significa que quase todo usuário está nos dois braços, e a diferença medida entre os braços tende a zero por construção.
- Como corrigir o valor-p quando a análise é mais fina que o sorteio?
- Estimando o efeito de desenho e inflando a variância por ele. Para agrupamentos de tamanho igual a m, o fator vale 1 mais o produto do coeficiente de correlação intraclasse pelo tamanho do agrupamento menos 1, com a correlação intraclasse medindo quanto da variância total vem da variância entre agrupamentos. Os próprios autores alertam que essa fórmula fechada tem valor prático limitado porque assume agrupamentos de tamanho igual, algo que não acontece na vida real; a saída que eles propõem é o método delta aplicado direto à definição da métrica.
- Sortear por sessão dá mais poder estatístico que sortear por usuário?
- Menos do que a contagem sugere. O número de sessões é maior que o número de usuários, mas as sessões do mesmo visitante não são independentes, então cada sessão extra vale menos que uma unidade nova. No limite em que o comportamento é totalmente determinado pelo usuário, o ganho é zero: a amostra efetiva volta a ser o número de usuários. O poder real fica entre esses dois extremos, e depende da correlação intraclasse do seu próprio dado, não de um valor de referência genérico.