Estatística

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.

Ilustração plana de pequenos círculos agrupados dentro de recipientes redondos de tamanhos bem diferentes, em tons de verde profundo

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 e-mail 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 é.

Quando a unidade de análise é menor que a de randomizaçãoNa linha de cima cada usuário sorteado contribui com exatamente uma observação, então as observações são independentes e o teste padrão vale. Na linha de baixo cada usuário contribui com várias páginas vistas em quantidades diferentes, então as observações dentro de um usuário são correlacionadas e a amostra efetiva é muito menor do que a contagem de linhas sugere.Os mesmos 6 usuários sorteados, dois denominadores diferentesconversão por usuário: 6 usuários, 6 observações independentesn efetivo = 6cliques por página vista: 6 usuários, 21 linhas correlacionadas21 linhas, maso n efetivo estábem mais perto de 6Repare nos tamanhos desiguais: um usuário traz uma página só, dois trazem cinco. Essa desigualdade infla ainda mais a variância.
O teste ingênuo conta os retangulozinhos laranjas e supõe que cada um é um lance de moeda independente. O que foi sorteado de fato foram os seis círculos, e as linhas dentro de um círculo se movem juntas.

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.

A mesma estimativa com o intervalo ingênuo e com o do método deltaA estimativa pontual de mais 0,42 ponto percentual é idêntica nos dois métodos. O intervalo de confiança ingênuo de 95% vai de mais 0,08 a mais 0,76 ponto percentual e exclui o zero. O intervalo do método delta vai de menos 0,11 a mais 0,95 ponto percentual e contém o zero, então os mesmos dados sustentam vereditos opostos.Mesma estimativa pontual, mesmos dados, vereditos opostosdiferença zeroteste ingênuo60.000 linhas por braço+0,08 a +0,76 ppp = 0,0163, significativométodo delta20.000 usuários por braço+0,42 pp-0,11 a +0,95 ppp = 0,1208, não significativoO intervalo fica cerca de 1,55 vez mais largo, o que aqui é toda a diferença entre subir e continuar rodando.
Nada na medição mudou. Só a suposição sobre quantas observações independentes foram coletadas, e é essa suposição que está decidindo o veredito.

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:

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.

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

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.