Estatística

Poder Estatístico por Simulação em Teste A/B

Poder estatístico por simulação: quando a fórmula fechada mente, como validar o simulador e quantas réplicas rodar. Com quatro casos medidos ponta a ponta.

Ilustração plana de centenas de traços finos e translúcidos verdes irradiando para baixo e formando juntos a silhueta de um sino sólido no centro

A fórmula de tamanho de amostra não é uma lei da natureza, é um modelo dos seus dados e da sua análise. Quando os dois batem, ela acerta em cheio: no nosso teste, o N prescrito devolveu 80,08 por cento de poder medido contra os 80 nominais. Quando não batem, ela erra em silêncio: o mesmo N entrega 65,07 por cento com três variações corrigidas e 54,66 por cento com sorteio por conta. Este artigo mostra como calcular poder estatístico por simulação, contando em vez de derivando, como validar o simulador antes de confiar nele, quantas réplicas bastam, e quatro casos medidos em que a fórmula acerta, mente pouco, mente muito ou nem existe. Faz parte do nosso guia completo de teste A/B e complementa quantos visitantes um teste A/B precisa.

O que a fórmula assume sem avisar

A fórmula clássica de duas proporções, a que está por trás de toda calculadora de amostra do mercado, carrega um pacote de suposições que ninguém lê:

A maior parte dos testes de conversão em landing page satisfaz as seis. E é por isso que a fórmula tem a fama que tem. O problema é que o momento em que você mais precisa de um plano de amostra confiável, quando a métrica é receita, a unidade é conta, as variações são quatro ou a leitura é sequencial, é exatamente o momento em que uma ou mais dessas suposições cai.

Simulação é o plano B universal, e o mais barato: ela não precisa que nada disso seja verdade, porque não deriva nada.

Poder estatístico por simulação: a receita em cinco passos

O laço de uma análise de poder por simulaçãoDiagrama de fluxo com cinco caixas conectadas por setas. A primeira caixa diz escolher o modelo dos dados e o efeito verdadeiro. A segunda diz gerar um experimento falso com N por braço. A terceira diz rodar a mesma análise que você vai rodar de verdade. A quarta diz anotar se deu significante. Uma seta curva volta da quarta para a segunda caixa, indicando repetição de milhares de vezes. Uma seta reta segue da quarta para a quinta caixa, que diz o poder é a fração de significantes.1. modelo dosdados e efeitoverdadeiro2. gerar umexperimentofalso com N3. rodar A MESMAanálise do testede verdade4. anotousignificante?repetir R vezes (milhares)5. poder = fração de significantes
O passo 3 é o que separa uma simulação útil de uma inútil: se o simulador roda um teste z simples mas você vai olhar o resultado três vezes com correção sequencial, o número que sair não descreve o seu teste.
  1. Escolha o modelo dos dados. Ou uma distribuição paramétrica (Bernoulli, lognormal, binomial negativa) ou, melhor ainda, a reamostragem dos seus próprios dados históricos, que dispensa escolher forma.
  2. Escolha o efeito verdadeiro que você quer ser capaz de detectar. É o MDE, e ele é uma decisão de negócio, não estatística. Veja efeito mínimo detectável.
  3. Rode a análise que você vai rodar de verdade. Com a mesma correção, o mesmo capping, a mesma unidade, as mesmas olhadas.
  4. Anote se deu significante.
  5. Repita e conte. A fração de significantes é o poder. Refazendo tudo com efeito verdadeiro igual a zero, a mesma fração é a taxa de falso positivo.

Passo zero: calibrar contra o caso conhecido

Antes de confiar em qualquer número exótico que sai do seu simulador, ele precisa reproduzir um caso onde a resposta certa já é conhecida. É o mesmo princípio de um teste A/A, aplicado ao código de simulação em vez do sistema de sorteio.

Peça à fórmula o plano mais simples: base de 5 por cento, alvo de detectar mais 10 por cento relativo, 95 por cento de confiança, 80 por cento de poder.

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.

Ela devolve 31.234 por variação. Rodando 4 mil experimentos simulados nesse N, com o efeito verdadeiro de mais 10 por cento realmente presente:

Cenário Esperado Simulado EP de Monte Carlo
Poder com efeito de mais 10% relativo 80,00% 80,08% 0,63 pp
Ganho relativo médio observado 10,00% 10,09% -
Falso positivo com efeito zero 5,00% 5,35% 0,34 pp

O simulador reproduz a fórmula com uma folga de menos de um décimo de ponto percentual no poder. Só depois disso os números dos casos difíceis significam alguma coisa. Se essa calibração falha, o problema está no código, não na estatística, e vale procurar o suspeito de sempre: gerador aleatório com estado compartilhado entre execuções, o que faz uma semente “fixa” produzir resultados diferentes conforme a ordem em que as simulações rodam.

Quantas réplicas? A conta em uma linha

Toda estimativa de poder por simulação é ela mesma uma estimativa, com erro. Como o resultado de cada réplica é um sim ou não, o erro-padrão de Monte Carlo é a raiz de p vezes (1 menos p) dividido pelo número de réplicas.

Réplicas EP para poder perto de 80% Intervalo de 95% EP para alfa perto de 5% Intervalo de 95%
200 2,828 pp mais ou menos 5,54 pp 1,541 pp mais ou menos 3,02 pp
1.000 1,265 pp mais ou menos 2,48 pp 0,689 pp mais ou menos 1,35 pp
5.000 0,566 pp mais ou menos 1,11 pp 0,308 pp mais ou menos 0,60 pp
20.000 0,283 pp mais ou menos 0,55 pp 0,154 pp mais ou menos 0,30 pp
100.000 0,126 pp mais ou menos 0,25 pp 0,069 pp mais ou menos 0,14 pp

Duas leituras práticas. Primeiro, 200 réplicas não servem para nada: um poder medido em 80 por cento poderia ser 75 ou 85, e essa faixa cobre a diferença entre um plano bom e um ruim. Segundo, o retorno cai rápido: sair de 20 mil para 100 mil réplicas custa cinco vezes mais tempo para ganhar 0,3 ponto percentual de precisão.

Reportar poder simulado sem o erro de Monte Carlo é o equivalente a reportar uma conversão sem intervalo de confiança. Neste artigo toda linha vem com o dela.

Caso 1: a fórmula acerta (conversão binária)

É o caso já mostrado na calibração, e vale registrar a conclusão de forma explícita porque ela costuma se perder em artigos que só falam dos casos difíceis: para taxa de conversão com duas variações e uma leitura no fim, a fórmula fechada está certa e simular é desperdício de tempo. Ela é instantânea, é reprodutível, não tem erro de Monte Carlo e devolve o mesmo número que 4 mil simulações devolveram.

Deng, Knoblich e Lu defendem esse ponto na direção geral: no contexto de dados em escala, a maioria das métricas segue distribuição aproximadamente normal, o que abre a chance de modelá-las direto com fórmulas fechadas e algoritmos distribuídos, a uma fração do custo de procedimentos baseados em reamostragem como o bootstrap. A simulação é a ferramenta para quando o caso sai do trilho, não a substituta padrão.

Caso 2: a fórmula mente sobre o intervalo, não sobre o teste (receita por usuário)

Aqui a coisa fica interessante, e a resposta é mais sutil do que o folclore sugere.

Nossa métrica: receita por usuário, em que 5 por cento dos visitantes compram e o valor do pedido segue uma lognormal. Os momentos exatos dessa mistura:

Propriedade Valor
Média 7,4579
Desvio-padrão 49,4463
Coeficiente de variação 6,630
Coeficiente de assimetria 15,134

Assimetria de 15 é o território que Kohavi, Deng, Longbotham e Xu tratam na regra de bolso número 7. A regra deles: o número mínimo de observações independentes para que a média tenha distribuição normal é 355 vezes o quadrado do coeficiente de assimetria, por variação, e eles recomendam aplicá-la sempre que o módulo da assimetria passar de 1. Para a nossa métrica isso dá 81.306 usuários por variação.

A tabela do Bing que os autores publicam mostra a ordem de grandeza real do problema:

Métrica do Bing Assimetria Amostra mínima pela regra Sensibilidade a 80% de poder
Receita por usuário 17,9 114 mil 4,4%
Receita por usuário (com capping) 5,2 9,7 mil 10,5%
Sessões por usuário 3,6 4,70 mil 5,4%
Tempo até o sucesso 2,1 1,55 mil 12,3%

Fomos medir. E o resultado se divide em dois, o que é justamente o tipo de nuance que só a simulação revela.

O intervalo de confiança de UMA amostra quebra feio. Perguntamos, em 20 mil réplicas por linha, com que frequência o intervalo de 95 por cento em torno da média de um único braço contém o valor verdadeiro de 7,4579:

Usuários no braço Cobertura do IC 95% Cauda que erra por baixo Cauda que erra por cima
100 79,83% 20,08% 0,09%
300 87,43% 12,29% 0,27%
1.000 92,25% 7,08% 0,67%
3.000 93,81% 5,10% 1,08%
10.000 94,56% 3,90% 1,54%
30.000 95,19% 2,95% 1,86%
81.306 (a regra) 94,77% 2,88% 2,35%

Com 100 usuários, o intervalo que promete 95 por cento entrega 79,83, e o erro é quase todo de um lado só: em 20 por cento das vezes o intervalo inteiro fica abaixo da média verdadeira, porque a amostra não pegou nenhum dos pedidos gigantes que fazem a média. Kohavi e coautores registram exatamente esse comportamento, ao dizer que com 100 e mil usuários a distribuição da média amostral fica bem assimétrica e o intervalo bilateral assumindo normalidade erraria a média verdadeira mais de 5 por cento das vezes.

E olhe a última linha. A regra dos 355 promete um intervalo em que as duas probabilidades de cauda, nominalmente 0,025 cada, ficam não maiores que 0,03 e não menores que 0,02. No N que ela prescreve, medimos caudas de 0,0288 e 0,0235: as duas dentro da faixa prometida. Em 30 mil, a cauda de cima cai para 0,0186 e sai da faixa. A regra entrega exatamente o que promete, no N em que ela promete.

Cobertura do intervalo de confiança conforme a amostra cresceCurva ascendente sobre um eixo horizontal em escala logarítmica de 100 a 81 mil usuários. A cobertura do intervalo de confiança de uma amostra começa em 79,83 por cento com 100 usuários, sobe para 87,43 em 300, 92,25 em mil, 93,81 em 3 mil, 94,56 em 10 mil e alcança 95,19 em 30 mil e 94,77 em 81.306. Uma linha tracejada horizontal marca o nível nominal de 95 por cento. Uma linha pontilhada vertical marca o N prescrito pela regra dos 355.95%regra dos 35579,8%87,4%92,3%94,6%1003001 mil3 mil10 mil30 mil81 milusuários no braço (escala logarítmica)
Com assimetria de 15, o intervalo de confiança de uma amostra só é gravemente otimista até a casa dos milhares e só entra no prometido perto do N que a regra dos 355 prescreve.

Mas a comparação entre DOIS braços se comporta muito melhor. Medimos a taxa de falso positivo do teste de duas médias sobre a mesma métrica, sob hipótese nula verdadeira, também em 20 mil réplicas:

Usuários por braço Falso positivo (nominal 5%) Cauda esquerda Cauda direita
100 3,18% 1,57% 1,60%
300 4,31% 2,33% 1,98%
1.000 4,88% 2,44% 2,44%
3.000 4,74% 2,46% 2,27%
10.000 4,91% 2,54% 2,37%
30.000 4,93% 2,46% 2,48%

Com mil usuários por braço, um centésimo do que a regra dos 355 pede, o teste já está em 4,88 por cento. Com 100 usuários ele fica conservador (3,18 por cento), o que erra para o lado seguro. E no N que a fórmula fechada prescreve para detectar mais 10 por cento relativo nessa métrica (69.005 por variação), a simulação devolveu 78,60 por cento de poder contra 80 nominais, e alfa de 4,50.

O motivo do contraste é que a assimetria dos dois braços aponta para o mesmo lado e boa parte dela se cancela na diferença. É um resultado bom para quem roda teste A/B e um resultado péssimo para quem usa o intervalo de confiança de um braço isolado como se fosse a verdade sobre aquela receita.

Erro do intervalo de uma amostra contra erro do teste de duas amostrasGráfico de barras pareadas em quatro tamanhos de amostra. Em cada par, a barra escura é a taxa de erro do intervalo de uma amostra e a barra clara é a taxa de erro do teste de duas amostras, as duas comparadas ao nominal de 5 por cento marcado por uma linha tracejada. Com 100 usuários a barra escura chega a 20,2 por cento e a clara fica em 3,2. Com mil a escura cai para 7,8 e a clara sobe para 4,9. Com 10 mil a escura é 5,4 e a clara 4,9. Com 30 mil a escura é 4,8 e a clara 4,9.5%20,2%7,8%5,4%4,8%3,2%4,9%4,9%4,9%1001.00010.00030.000erro do IC de uma amostraerro do teste de duas amostras
A mesma distribuição assimétrica, duas perguntas diferentes. O intervalo de um braço só erra 4 vezes o prometido com 100 usuários; a comparação entre braços já está calibrada com mil.

E a saída mais barata continua sendo a que Kohavi e coautores apontam na própria tabela: capping. Cortando a receita no percentil 99 da distribuição (o corte cai em 212,19), a assimetria da nossa métrica desaba de 15,134 para 5,764, e o N pela fórmula, para o mesmo alvo de mais 10 por cento relativo, cai de 69.005 para 40.840 por variação. Com o capping, o falso positivo do teste de duas amostras já está em 4,87 por cento com 300 usuários por braço. O detalhamento está em outliers e capping.

Caso 3: não existe fórmula (métrica de quantil)

Métrica de percentil não tem fórmula fechada de tamanho de amostra que caiba num artigo. Deng, Knoblich e Lu registram que quantis de tempo de carregamento em 75, 95 ou 99 por cento estão entre as métricas que mais recebem atenção na comunidade de performance web, e que as duas rotas usuais para o intervalo de confiança, estimar a densidade ou reamostrar por bootstrap, têm problemas próprios: a densidade na cauda decai para zero, então um pequeno viés na estimativa vira um viés grande na variância, e o bootstrap exige ordenar os dados repetidas vezes, o que fica caro em escala.

Para planejamento de amostra, porém, o custo é irrelevante: você roda o simulador uma vez, no seu laptop, antes do teste existir.

Modelamos o tempo de carregamento como uma lognormal com mediana de 544,6 ms, média de 633,5 ms e percentil 90 de 1.102,0 ms. A variação reduz o tempo em 5 por cento. A análise simulada foi a que um time realmente rodaria: calcular o p90 de cada braço e comparar com erro-padrão vindo de 120 reamostragens bootstrap. 400 réplicas por linha:

Usuários por braço Redução real Resultado EP de Monte Carlo
2.000 5% poder 41,75% 2,47 pp
3.000 5% poder 52,75% 2,50 pp
5.000 5% poder 75,50% 2,15 pp
10.000 5% poder 97,00% 0,85 pp
3.000 0% falso positivo 5,25% 1,12 pp
10.000 0% falso positivo 6,25% 1,21 pp

Duas coisas saem daí, e nenhuma delas sairia de fórmula nenhuma. O plano certo para detectar 5 por cento no p90 fica entre 5 e 10 mil usuários por braço, e a curva é íngreme nessa faixa, então errar o N para baixo custa muito poder. E o procedimento é honesto sob a nula (5,25 e 6,25 por cento, os dois dentro de dois erros-padrão de Monte Carlo do nominal), o que é uma validação do método de análise em si, não só do plano.

Mais sobre a família em métricas de quantil.

Caso 4: a fórmula mente por omissão (três variações)

Este é o caso mais perigoso, porque tudo parece certo. Você abre a calculadora, ela devolve 31.234 por variação para 80 por cento de poder, você multiplica por 4 braços para saber o tráfego total e vai dormir tranquilo. Só que a calculadora respondeu sobre uma comparação, e o seu teste tem três.

Simulamos 1.500 programas de um controle contra três variações, em que uma das variações tem efeito real de mais 10 por cento e as outras duas são nulas, aplicando Bonferroni sobre as três comparações:

Cenário Detecta a variação verdadeira Declara alguma vencedora Falso positivo numa nula
n = 31.234, com Bonferroni 65,07% 65,13% 1,33%
n = 31.234, sem correção 80,07% 80,07% 4,27%
n = 43.000, com Bonferroni 82,00% 82,00% 1,13%
n = 31.234, nenhuma vencedora, com Bonferroni - 1,73% 1,73%
n = 31.234, nenhuma vencedora, sem correção - 5,33% 5,33%

O poder cai de 80,07 para 65,07 por cento sem que nada mude no experimento além do número de braços. Para voltar aos 80, o N precisa subir de 31.234 para cerca de 43 mil por variação, um acréscimo de 38 por cento em cada braço, quatro vezes. É o pedágio de comparar mais coisas ao mesmo tempo, e ele é invisível na calculadora.

Vale notar a coluna da direita: a correção funciona. Sem Bonferroni, 5,33 por cento dos programas sem vencedora nenhuma declaram uma vencedora falsa; com Bonferroni, 1,73. Mais em testar várias variações.

Caso 5: a fórmula erra por 25 pontos (sorteio por cluster)

O maior desvio que medimos não veio de métrica esquisita, veio da unidade de sorteio. Quando o experimento sorteia a conta e a análise conta o usuário, o plano de 31.234 por variação, que promete 80 por cento, entrega 54,66 por cento de poder com 5 usuários por conta e correlação intraclasse de 0,20, e 38,06 por cento com 10 usuários por conta.

A fórmula não faz ideia disso porque não tem como saber: nada no formulário da calculadora pergunta como o sorteio foi feito. A simulação sabe, porque o modelo de dados que você escreve inclui a estrutura de conta. Tratamos o caso inteiro, com a correção do efeito de desenho, em randomização por cluster.

Poder prometido pela fórmula contra poder medido em cinco cenáriosGráfico de barras com cinco cenários. Uma linha tracejada horizontal marca os 80 por cento prometidos pela fórmula. A barra da conversão binária alcança 80,08 por cento. A barra da receita por usuário no N da fórmula alcança 78,60. A barra das três variações com Bonferroni cai para 65,07. A barra do sorteio por conta com cinco usuários cai para 54,66. A barra do sorteio por conta com dez usuários cai para 38,06.80%80,08%78,60%65,07%54,66%38,06%conversãobináriareceita/usuárioassimetria 153 variaçõesBonferronipor conta5 usuáriospor conta10 usuáriostodos rodando exatamente o mesmo plano de 31.234 por variação
O mesmo N, a mesma promessa de 80 por cento, cinco realidades. A fórmula não erra por ser ruim, erra porque só sabe do caso que ela descreve.

Quatro armadilhas de quem simula

Simular o modelo em vez dos dados. Se você escolhe uma lognormal porque é bonita e a sua receita real não é lognormal, o poder que sair descreve a lognormal. A defesa é reamostrar: pegue um mês de dados reais por usuário, sorteie com reposição para formar os dois braços, e aplique o efeito multiplicando a métrica do braço tratado. Isso preserva a forma real da sua distribuição, incluindo os pedaços que você nem sabe que existem.

Simular uma análise diferente da que você vai rodar. É o erro mais comum e o mais caro. Se o simulador roda um teste z simples e o time vai olhar o painel toda segunda-feira, o poder simulado descreve um teste que não é o seu. O mesmo vale para capping, exclusão de outliers, filtros de bot e ajuste por covariável: tudo que estiver na análise real precisa estar na simulação. Veja o problema do peeking.

Semente não fixada, ou pior, fixada só na aparência. Gerador com estado global compartilhado entre execuções faz a mesma semente devolver resultados diferentes conforme a ordem em que as simulações rodam. O sintoma é um número que não reproduz quando você roda o script sozinho. Toda tabela deste artigo foi gerada com semente explícita por linha e conferida rodando isoladamente.

Reportar o poder sem o erro de Monte Carlo. Já dito acima, e repetido aqui porque é o que mais some do relatório final. Uma diferença de 2 pontos percentuais entre dois planos não significa nada se o erro de simulação for de 2,8.

Quando NÃO simular

Simulação custa tempo de escrita, tempo de execução e um artefato a mais para manter. Não vale a pena quando:

A regra de bolso: simule para planejar, use fórmula fechada para operar. O plano roda uma vez e pode demorar minutos; a leitura roda todo dia e precisa ser barata.

Faça isso automático na Donnu

O motivo de quase ninguém fazer análise de poder por simulação não é dificuldade conceitual, é que ela exige escrever código descartável, sem lugar para morar, e refazer tudo quando o plano muda. Na Donnu o plano de amostra é calculado dos dois jeitos e mostra os dois lado a lado: o número da fórmula fechada e o número que sai de simular a sua análise, com o seu histórico reamostrado no lugar de uma distribuição inventada. Quando o desenho do experimento inclui alguma coisa que a fórmula não cobre, mais de duas variações, sorteio por conta, capping, leitura sequencial, o painel avisa quanto poder aquele detalhe custa antes de você ligar o teste, com o erro de Monte Carlo declarado junto.

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 é análise de poder por simulação?
É estimar o poder de um teste gerando milhares de experimentos falsos com um efeito que você mesmo escolheu, rodando em cada um exatamente a análise que você vai rodar de verdade, e contando em que fração deles o resultado sai significante. Não existe fórmula envolvida: o número sai de contar. Isso permite calcular poder para qualquer métrica e qualquer análise, inclusive as que não têm fórmula fechada nenhuma.
Quando a fórmula fechada de tamanho de amostra deixa de valer?
Ela vale muito bem para o caso que ela foi feita: comparação de duas proporções com uma olhada só. Nossa simulação devolveu 80,08 por cento de poder no N que a fórmula prescreveu, contra os 80 nominais. Ela deixa de valer quando a análise muda: com três variações e correção de Bonferroni o mesmo N entrega 65,07 por cento, e com sorteio por conta e correlação intraclasse de 0,20 entrega 54,66.
Quantas réplicas eu preciso rodar?
Depende da precisão que você quer. O erro-padrão de Monte Carlo de uma estimativa de poder perto de 80 por cento é a raiz de 0,16 dividido pelo número de réplicas. Com mil réplicas o intervalo é de mais ou menos 2,48 pontos percentuais, com 20 mil é de 0,55 e com 100 mil é de 0,25. Para decisão de planejamento, entre 2 mil e 10 mil réplicas costuma bastar; para publicar uma tabela, vale subir.
Como sei que o meu simulador não está errado?
Calibrando contra um caso em que a resposta certa é conhecida. Rode o simulador no cenário mais simples, duas proporções e uma olhada só, no N que a fórmula fechada prescreve: ele tem que devolver 80 por cento de poder e 5 por cento de falso positivo. O nosso devolveu 80,08 e 5,35. Se esse caso não fecha, nenhum resultado exótico do mesmo código merece confiança.
A assimetria da receita por usuário quebra o teste A/B?
Quebra o intervalo de confiança de uma amostra só, não a comparação entre duas. Na nossa simulação com assimetria de 15,13, o intervalo de 95 por cento para a média de um único braço cobriu o valor verdadeiro em só 79,83 por cento das vezes com 100 usuários, mas a comparação entre os dois braços manteve o falso positivo em 4,88 por cento já com mil usuários por braço. A assimetria se cancela em boa parte entre os dois lados.
Simulação substitui a fórmula fechada?
Não, complementa. Para métrica binária com uma olhada só, a fórmula é instantânea e certa, e simular seria desperdício. Deng, Knoblich e Lu lembram que procedimentos baseados em reamostragem ficam caros em escala grande, e propõem justamente fórmulas fechadas como alternativa. A regra prática é usar a fórmula quando o caso é o dela e simular quando ele não é.