Métricas de Razão em Teste A/B: o intervalo ingênuo erra
Por que métricas de razão como cliques por página vista quebram o teste de significância, como o método delta corrige a variância e quando o veredito vira.

📚 Este artigo faz parte do guia Significância Estatística em Teste A/B: O Guia.
Métrica de razão é aquela cujo denominador não é a coisa que você sorteou, e o teste padrão de duas proporções erra nela. Cliques por página vista, itens por pedido e receita por sessão quebram todos a mesma suposição, porque linhas do mesmo usuário são correlacionadas, e a correção é estimar a variância pelo método delta em vez de fingir que as linhas são independentes. Este guia cobre quais métricas são afetadas, por que o intervalo ingênuo sai estreito demais, a correção em forma fechada, e um exemplo trabalhado em que a leitura ingênua declara um vencedor significativo a valor-p 0,016 e a corrigida para em 0,12. Faz parte do nosso guia completo de teste A/B e se apoia em significância estatística em teste A/B.
Unidade de randomização contra unidade de análise
Deng, Knoblich e Lu, escrevendo sobre análise de métricas na Microsoft para o KDD 2018, colocam o problema em duas definições. A unidade de randomização é a granularidade em que a amostragem ou o sorteio acontece. A unidade de análise é o nível de agregação em que a métrica é calculada. Nas palavras deles, a análise é direta quando as unidades de randomização e de análise coincidem, por exemplo ao sortear por usuário e também calcular receita média por usuário.
O problema começa quando elas divergem, o que eles notam acontecer dentro de um mesmo experimento entre métricas diferentes: você sorteia uma vez, por usuário, e depois monta um relatório em que algumas métricas são por usuário e outras por página, por sessão ou por pedido. As por usuário estão bem. As outras são o que o artigo chama de randomizadas por cluster, em que a unidade de randomização é um agrupamento de unidades de análise, e a variância delas não pode ser estimada do jeito usual.
| Métrica | Unidade de randomização | Unidade de análise | Teste padrão vale? |
|---|---|---|---|
| Taxa de conversão por usuário | usuário | usuário | sim |
| Receita por usuário | usuário | usuário | sim |
| Cliques por página vista | usuário | página vista | não, métrica de razão |
| Itens por pedido | usuário | pedido | não, métrica de razão |
| Receita por sessão | usuário | sessão | não, métrica de razão |
| Taxa de adição ao carrinho por visualização de produto | usuário | visualização | não, métrica de razão |
| Taxa de clique por e-mail enviado | usuário | não, métrica de razão | |
| Taxa de conversão por sessão | usuário | sessão | não, métrica de razão |
A regra é mecânica e vale escrever na parede: se um sujeito sorteado pode contribuir com mais de uma linha para o denominador, a métrica é de razão. Repare que a última linha pega muita gente de surpresa. Taxa de conversão por sessão parece uma proporção comum, mas se o mesmo usuário pode iniciar três sessões, não é.
Por que o intervalo ingênuo sai estreito demais
Toda fórmula padrão de significância para uma proporção carrega a suposição de que cada observação é um sorteio independente. Quando as linhas estão agrupadas dentro de usuários, essa suposição falha numa direção específica: linhas do mesmo usuário são positivamente correlacionadas, porque quem clica muito clica muito em toda página que gera. Correlação positiva dentro do cluster significa que a amostra carrega menos informação do que a contagem de linhas sugere, então a variância verdadeira é maior do que a fórmula diz.
Bakshy e Eckles, avaliando métodos de bootstrap sobre dados do Facebook para o KDD 2013, enunciam a consequência sem rodeios: procedimentos que ignoram essa estrutura de dependência são anticonservadores, ou seja, têm taxas de erro Tipo I maiores que as esperadas e seus intervalos de confiança nominais de 95% contêm o valor verdadeiro menos de 95% das vezes. A ilustração deles vale guardar sempre que uma contagem de linhas parecer tranquilizadora: um experimento de publicidade com um milhão de impressões pode conter apenas mil anúncios distintos e dez mil usuários distintos, então a amostra efetiva não chega nem perto de um milhão.
A forma padrão de quantificar isso é o efeito de desenho. Deng, Knoblich e Lu dão a forma fechada para o caso simplificado de clusters de tamanho igual: com K clusters de m observações cada e correlação intra-cluster rô, a variância da média é a variância do caso independente multiplicada por 1 + (m - 1) vezes rô. O erro-padrão é inflado pela raiz quadrada desse fator:
| Observações por usuário | rô = 0,02 | rô = 0,05 | rô = 0,10 | rô = 0,20 |
|---|---|---|---|---|
| 1 | 1,00x | 1,00x | 1,00x | 1,00x |
| 2 | 1,01x | 1,02x | 1,05x | 1,10x |
| 3 | 1,02x | 1,05x | 1,10x | 1,18x |
| 5 | 1,04x | 1,10x | 1,18x | 1,34x |
| 10 | 1,09x | 1,20x | 1,38x | 1,67x |
| 25 | 1,22x | 1,48x | 1,84x | 2,41x |
Duas leituras dessa tabela importam. Primeira, a uma observação por usuário toda coluna dá 1,00, e é por isso que métricas por usuário são seguras. Segunda, a inflação cresce com o agrupamento e com a correlação, então uma métrica como páginas por visita num site de conteúdo, em que os usuários geram muitas linhas e se comportam de forma muito consistente, mora no canto inferior direito, onde o erro-padrão ingênuo erra por mais de um fator de dois.
O artigo é explícito ao dizer que essa forma fechada tem, nas palavras deles, valor prático apenas limitado, porque na realidade os tamanhos dos clusters e as distribuições dentro de cada um são diferentes. Clusters de tamanhos desiguais inflam a variância além do que a tabela mostra, e é por isso que o método delta, que usa as variâncias observadas diretamente em vez de supor clusters iguais, é a ferramenta prática, e não a fórmula acima. A simulação deles dá o tamanho do erro concretamente: o método ingênuo reportou erro-padrão médio de 0,00522 contra desvio-padrão verdadeiro de 0,00895, cerca de 1,7 vez pequeno demais, enquanto o método delta reportou 0,00908, que está certo.
O método delta, em cinco números por braço
A correção não precisa de nada exótico. Para uma razão com numerador N e denominador D medidos por usuário sorteado, sobre n usuários, a variância da razão é aproximadamente:
Var(N̄/D̄) ≈ (1/n) × [ var(N)/média(D)²
− 2 × média(N)/média(D)³ × cov(N,D)
+ média(N)²/média(D)⁴ × var(D) ]
Esse é o estimador do Algorithm 1 de Deng, Knoblich e Lu, e a razão inteira de ele ser prático em escala está na lista de insumos: média de N, média de D, variância de N, variância de D, covariância de N com D. Cinco números por braço, todos somas que agregam trivialmente num pipeline distribuído. Sem reamostragem, sem ajuste de modelo, sem guardar linha por linha.
Bootstrap sobre usuários é alternativa válida e não faz aproximação de distribuição, mas é caro; o mesmo artigo enquadra a abordagem em forma fechada como um jeito de resolver problemas de big data com algoritmos distribuídos a uma fração do custo de procedimentos baseados em simulação como o bootstrap. Ajustar um modelo de efeitos mistos é uma terceira opção, e o artigo alerta contra ela para esse fim: a simulação deles mostra o estimador de efeitos mistos severamente viesado para a métrica como ela é usualmente definida, estimando 0,547 contra um valor verdadeiro de 0,667, porque o modelo pesa todo cluster igualmente enquanto a métrica pesa mais os clusters maiores.
Exemplo trabalhado: o veredito vira
Um teste na página de resultados de busca mede cliques por página de resultados vista, sorteado por usuário, ao longo de duas semanas. Cada braço tem 20.000 usuários. Comece pela leitura que uma calculadora padrão te dá, colando os totais:
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.
A leitura ingênua. Controle: 6.000 cliques em 60.000 páginas vistas, taxa de 10,0000%. Variação: 6.252 cliques em 60.000 páginas vistas, 10,4200%. Isso é +0,42 ponto percentual, +4,20% relativo, z = 2,40, valor-p 0,0163, intervalo de confiança de +0,077 a +0,763 ponto percentual. Significativo, pode subir.
Agora as estatísticas resumo por usuário de onde aqueles totais vieram, que é o que o método delta precisa:
| Estatística por usuário | Controle | Variação |
|---|---|---|
| Usuários (n) | 20.000 | 20.000 |
| Média de páginas vistas por usuário | 3,00 | 3,00 |
| Variância de páginas vistas por usuário | 12,00 | 12,00 |
| Média de cliques por usuário | 0,3000 | 0,3126 |
| Variância de cliques por usuário | 0,79 | 0,82 |
| Covariância entre cliques e páginas | 1,30 | 1,35 |
| Razão (cliques por página vista) | 10,0000% | 10,4200% |
Repare que as estimativas pontuais não mudam: 0,3000 dividido por 3,00 é 10,0000%, e 6.000 sobre 60.000 é o mesmo número. O método delta não move a estimativa, só o intervalo em torno dela.
Controle. O colchete dá 0,79 menos 2 vezes 0,10 vezes 1,30 mais 0,10 ao quadrado vezes 12,00, ou seja 0,79 - 0,26 + 0,12 = 0,65. Divida por n vezes média(D) ao quadrado, então 0,65 / (20.000 x 9) = 3,6111e-6, dando erro-padrão de 0,1900 ponto percentual. O erro-padrão ingênuo no mesmo braço, a raiz de 0,10 vezes 0,90 sobre 60.000, é 0,1225 ponto percentual. O número ingênuo é 1,55 vez pequeno demais, o que corresponde a um efeito de desenho de cerca de 2,41. Repare que nenhuma correlação intra-cluster isolada reproduz esse número pela fórmula de clusters iguais acima, porque as contagens de páginas aqui têm variância de 12,00 em torno de uma média de 3,00: parte da inflação é a correlação dentro do usuário e parte é a dispersão dos tamanhos de cluster, que é exatamente o motivo de o método delta usar as variâncias observadas em vez de uma tabela.
Variação. O colchete dá 0,82 - 0,28134 + 0,13029 = 0,66896, com variância de 3,7164e-6 e erro-padrão de 0,1928 ponto percentual.
A diferença. O erro-padrão da diferença é a raiz da soma, 0,2707 ponto percentual. Contra uma diferença observada de 0,42 ponto percentual isso dá z = 1,55, valor-p 0,1208, intervalo de confiança de -0,11 a +0,95 ponto percentual. O intervalo contém o zero.
Ou seja, os mesmos 40.000 usuários, as mesmas 120.000 páginas vistas e os mesmos 12.252 cliques sustentam p = 0,0163 e subir ou p = 0,1208 e continuar rodando, dependendo inteiramente de a análise lembrar o que foi sorteado. E a leitura corrigida não é só mais conservadora, é mais útil: o intervalo diz que o efeito está em algum lugar entre uma perda pequena e um ganho de cerca de 0,95 ponto, que é uma descrição honesta de um teste que ainda não terminou.
O que fazer a respeito
Existem três respostas legítimas, e uma que não é.
Mover a métrica para a unidade de randomização. Cliques por usuário em vez de cliques por página faz a unidade de análise bater com a de randomização, e o teste padrão volta a valer. É o conserto mais barato e muitas vezes o certo, mas é uma mudança genuína de pergunta: cliques por usuário sobe quando as mesmas pessoas simplesmente visitam mais, enquanto cliques por página pergunta o quanto uma página isolada convence. Só faça a troca se a nova métrica ainda responder o que você estava perguntando, distinção coberta em escolhendo a métrica primária.
Aplicar o método delta. Mantenha a métrica e corrija a variância. Cinco estatísticas resumo por braço, calculadas uma vez, aplicadas a toda métrica de razão do relatório.
Fazer bootstrap sobre usuários. Válido, mais caro, e não faz aproximação sobre o formato da distribuição. Reamostre usuários, nunca linhas. Reamostrar linhas reproduz a resposta ingênua com mais maquinaria em volta.
O que não funciona é aplicar um fator de correção tirado de uma tabela como a de cima sem medir a sua própria correlação intra-cluster ou, pior, decidir que a leitura ingênua está boa o bastante porque o valor-p era pequeno. No exemplo acima o valor-p ingênuo era pequeno justamente porque a variância estava errada.
Duas notas práticas. Métricas de razão interagem com dimensionamento: o efeito de desenho multiplica os usuários de que você precisa, não as linhas, então um teste dimensionado pela contagem de páginas fica sem poder exatamente por esse fator, aritmética exposta em efeito mínimo detectável. E técnicas de redução de variância se empilham com isso em vez de substituí-lo: o CUPED baixa a variância que você está estimando, enquanto o método delta garante que você a está estimando certo em primeiro lugar.
Erros comuns com métricas de razão
| Erro | O que ele produz |
|---|---|
| Colar totais de páginas numa calculadora de significância por usuário | Intervalos estreitos demais pelo efeito de desenho, e falsos vencedores na taxa que isso implica |
| Supor que toda porcentagem é uma proporção | Taxa de conversão por sessão parece proporção e não é, se usuários podem iniciar várias |
| Dimensionar o teste pelas linhas do denominador | Um teste que parece bem dimensionado no papel e não resolve nada |
| Fazer bootstrap de linhas em vez de usuários | A resposta ingênua, obtida de forma cara |
| Ajustar um modelo de efeitos mistos para obter o efeito médio | Estimativa viesada sempre que os clusters têm tamanhos diferentes, segundo Deng, Knoblich e Lu |
| Trocar para uma métrica por usuário sem avisar | O número reportado deixa de responder a pergunta em torno da qual o teste foi desenhado |
| Aplicar um efeito de desenho tirado de um artigo em vez de medir o seu rô | Uma correção de tamanho arbitrário, defensável só por acaso |
| Corrigir a métrica primária e deixar o resto do relatório ingênuo | Toda métrica secundária mantém a taxa inflada de falso positivo |
Faça isso automático na Donnu
A razão de métricas de razão continuarem quebradas na maioria das montagens é que a correção precisa ser aplicada por métrica, toda vez, e ninguém faz isso na mão num relatório inteiro. A Donnu A/B guarda a unidade de randomização junto de cada definição de métrica, aplica a variância do método delta sempre que a unidade de análise é mais fina que a unidade sorteada, e rotula a métrica na leitura para que a diferença entre uma taxa por usuário e uma taxa por evento fique visível em vez de subentendida. Quando um intervalo alarga por causa de agrupamento, a leitura diz que foi por isso.
Comece um teste grátis de 14 dias e confira se os seus denominadores são a coisa que você de fato sorteou.
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 do enquadramento unidade de randomização contra unidade de análise, do estimador de variância do método delta e do algoritmo dele, da fórmula do efeito de desenho para clusters iguais e da ressalva sobre o valor prático limitado dela, da comparação simulada em que o erro-padrão ingênuo saiu em 0,00522 contra 0,00895 verdadeiro enquanto o método delta deu 0,00908, da estimativa de efeitos mistos de 0,547 contra valor verdadeiro de 0,667, e do enquadramento da estimação fechada distribuída como custando uma fração de procedimentos baseados em simulação como o bootstrap. 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, produzindo taxas de erro Tipo I maiores que as nominais e intervalos de 95% que cobrem o valor verdadeiro menos de 95% das vezes, e da ilustração de publicidade em que um milhão de impressões abrange apenas mil anúncios e dez mil usuários. arxiv.org/abs/1304.7406.
- Kohavi, R., Longbotham, R., Sommerfield, D. e Henne, R. M. Controlled experiments on the web: survey and practical guide. Data Mining and Knowledge Discovery, 18(1), 2009. Sobre poder estatístico, tamanho de amostra e as suposições por trás dos testes padrão usados em experimentos online. 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 métricas, variância e análise de experimentos online. Material complementar em experimentguide.com.
Leia também: Significância estatística em teste A/B · Escolhendo a métrica primária · O que é CUPED · Efeito mínimo detectável · Calculadora de intervalo de confiança grátis · Read in English
Perguntas frequentes
- O que é uma métrica de razão em teste A/B?
- Métrica de razão é aquela cujo denominador não é a coisa que você sorteou. Cliques por página vista, itens por pedido, receita por sessão e páginas por visita são todas métricas de razão quando o experimento sorteia usuários, porque um usuário contribui com várias páginas, pedidos ou sessões. Deng, Knoblich e Lu (KDD 2018) chamam isso de distância entre a unidade de randomização, o nível em que a atribuição acontece, e a unidade de análise, o nível em que a métrica é calculada. Taxa de conversão por usuário não é métrica de razão nesse sentido, porque cada usuário contribui com exatamente uma observação.
- Por que o teste de significância padrão erra em métricas de razão?
- Porque ele supõe que toda linha do denominador é uma observação independente, e não são. Duas páginas vistas do mesmo usuário são correlacionadas: quem clica muito clica muito em todas elas. Tratar 60.000 páginas correlacionadas como 60.000 ensaios independentes subestima o erro-padrão, o que estreita o intervalo de confiança e encolhe o valor-p. Na simulação reportada por Deng, Knoblich e Lu (KDD 2018), o erro-padrão ingênuo saiu em 0,00522 contra um desvio-padrão verdadeiro de 0,00895, cerca de 1,7 vez pequeno demais.
- O que é o método delta para métricas de razão?
- O método delta estima a variância de uma razão a partir das estatísticas resumo por usuário do numerador e do denominador. Com N como numerador por usuário, D como denominador por usuário e n usuários, a variância da razão é aproximadamente (1/n) vezes a quantidade [var(N)/média(D)² menos 2 vezes média(N)/média(D)³ vezes cov(N,D) mais média(N)²/média(D)⁴ vezes var(D)]. São só cinco números por braço, todos agregáveis num pipeline distribuído, e é por isso que ele é barato o bastante para rodar em toda métrica.
- Quanto o intervalo ingênuo subestima a incerteza?
- Depende de quanto agrupamento existe, e a aproximação padrão é o efeito de desenho. Com m observações por usuário e correlação intra-cluster rô, a variância é inflada por 1 + (m - 1) vezes rô, então o erro-padrão é inflado pela raiz quadrada disso. A 5 observações por usuário e correlação de 0,20 isso é um efeito de desenho de 1,80 e um erro-padrão 1,34 vez maior; a 10 e 0,20 vira 2,80 e 1,67 vez. Clusters de tamanhos desiguais empurram ainda mais para cima.
- Posso simplesmente trocar para uma métrica por usuário?
- Muitas vezes sim, e quando a versão por usuário responde à mesma pergunta de negócio esse é o conserto mais simples, porque a unidade de análise passa a bater com a de randomização e o teste padrão volta a valer. Cliques por usuário em vez de cliques por página é uma métrica legítima sem problema de variância. O detalhe é que as duas não são intercambiáveis: cliques por usuário sobe quando as mesmas pessoas visitam mais, enquanto cliques por página mede o quanto uma página isolada convence. Só troque se a nova métrica ainda responder o que você estava perguntando.
- Isso muda o tamanho de amostra que eu preciso?
- Muda, e pelo efeito de desenho. Se o agrupamento infla a variância por um fator de 2,4, você precisa de cerca de 2,4 vezes os usuários para o mesmo efeito detectável naquela métrica, não 2,4 vezes as páginas. Dimensionar um teste de métrica de razão pela contagem bruta do denominador é a maneira mais comum de os times acabarem com um teste que parece bem dimensionado no papel e não resolve nada na prática.
- Bootstrap é alternativa ao método delta?
- É, e válida, desde que a reamostragem seja feita sobre a unidade de randomização e não sobre linhas. Reamostrar usuários preserva a correlação dentro do usuário; reamostrar páginas destrói ela e reproduz a resposta ingênua com passos a mais. Deng, Knoblich e Lu (KDD 2018) preferem o método delta em forma fechada principalmente por custo: eles o apresentam como forma de resolver problemas de big data com fórmulas fechadas distribuídas a uma fração do custo de procedimentos baseados em simulação como o bootstrap, e ele precisa só de estatísticas resumo, o que importa quando um relatório cobre centenas de métricas.