Estatística

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.

Ilustração plana de três recipientes arredondados enfileirados, cada um contendo pequenos círculos, com uma linha vertical fina separando os recipientes inteiros em dois grupos, em verde profundo e verde menta

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.

Hierarquia de unidades e onde a linha de sorteio pode cairTrês níveis empilhados de granularidade. No topo, dois usuários, cada um representado por um retângulo largo. No meio, três sessões dentro de cada usuário. Embaixo, várias páginas dentro de cada sessão. Uma linha de corte marca o nível do sorteio no topo, mostrando que usuários inteiros vão para um braço ou para o outro, enquanto sessões e páginas herdam a atribuição de quem está acima. Uma marca de proibido indica que a linha de sorteio não pode ficar abaixo da unidade que a métrica usa como denominador.A linha de sorteio desce até onde a métrica permite, nunca alémusuáriosorteado para Bsorteado para Asessãopáginalinha do sorteioSorteando no topo, cada sessão e cada página herdam o braço do usuário: a experiência fica consistente.Descer a linha até a página e ainda medir por usuário coloca o mesmo usuário nos dois braços e apaga o efeito.A métrica escolhe o piso: a unidade de sorteio nunca pode ser mais fina que o denominador dela.
A hierarquia é sempre a mesma. O que muda de teste para teste é em qual altura a linha do sorteio é traçada, e essa altura tem consequências que aparecem no relatório.

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.

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 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.

Amostra efetiva por braço conforme a correlação intraclasseCinco barras horizontais em escala representando as sessões efetivas por braço. Com correlação intraclasse zero, a barra ocupa toda a largura, correspondendo a 300 mil sessões. Conforme a correlação sobe para 0,25, 0,5, 0,6 e 1, as barras encurtam para 200 mil, 150 mil, 136 mil e 100 mil, até coincidirem com o número de usuários realmente sorteados.Sessões nominais: 300.000. Sessões que o teste realmente usa: dependerho 0,00300.000rho 0,25200.000rho 0,50150.000rho 0,60136.364rho 1,00100.000 (igual ao nº de usuários)A linha laranja marca o piso: o número de unidades que foram de fato sorteadas.Nenhuma escolha de denominador consegue produzir mais informação do que o sorteio criou.
O ganho de contar sessões existe, mas é sempre menor que a razão de contagens. Quanto mais o comportamento pertence ao usuário, menor ele fica.

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.

Árvore de decisão para escolher a unidade de sorteioFluxo com quatro perguntas em sequência. A primeira pergunta é se a exposição vaza para além de quem foi sorteado; se sim, a unidade é agrupamento, região ou bloco de tempo. A segunda é se existe identificador estável de usuário; se não, a unidade é sessão ou dispositivo, com a ressalva de que o efeito medido fica limitado a uma visita. A terceira é se o efeito depende de consistência ou de acúmulo entre visitas; se sim, a unidade tem que ser usuário. Se nenhuma das anteriores obriga, a resposta padrão continua sendo usuário.Quatro perguntas, na ordem. A primeira que responder sim decide.1. A exposição vaza para quem não foi sorteado?agrupamento, região ou bloco de tempo2. Existe identificador estável de usuário?não: sessão ou dispositivo, com ressalva3. O efeito depende de consistência entre visitas?usuário, obrigatoriamente4. Nenhuma das anteriores obriga?usuário, por padrãoA pergunta 2 é a única que empurra para baixo na hierarquia, e ela é uma limitação de infraestrutura,não uma escolha de desenho. As perguntas 1 e 3 empurram para cima, e empurram por motivos de validade.Nenhuma das quatro perguntas é “onde eu consigo o valor-p menor”.
Repare que a busca por poder estatístico não entra na árvore. Poder é consequência da unidade escolhida, nunca critério para escolhê-la.

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:

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

  1. A unidade de sorteio está declarada em algum lugar? Se ninguém escreveu, ninguém vai conferir na hora de ler o resultado.
  2. 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.
  3. A unidade de sorteio é igual ou mais grossa que a unidade de análise? Nunca mais fina.
  4. 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.
  5. A divisão por braço bate com o planejado na unidade sorteada? Confira com o verificador de SRM, na unidade certa.
  6. O relatório mostra em qual unidade cada número foi calculado? Duas métricas em unidades diferentes na mesma tabela precisam estar rotuladas.
  7. A conta de poder foi feita na unidade sorteada? Não na mais numerosa.

Erros comuns

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

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.