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.

📚 Este artigo faz parte do guia Significância Estatística em Teste A/B: O Guia.
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 métrica é uma proporção, não uma média de valores contínuos.
- Cada observação é independente das outras.
- A distribuição da diferença entre as médias é aproximadamente normal no N escolhido.
- Existe uma comparação só, entre exatamente dois braços.
- O resultado será lido uma única vez, no fim.
- Nenhum ajuste, capping, estratificação ou covariável entra na análise.
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
- 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.
- 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.
- Rode a análise que você vai rodar de verdade. Com a mesma correção, o mesmo capping, a mesma unidade, as mesmas olhadas.
- Anote se deu significante.
- 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.
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.
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.
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.
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 métrica é binária, há dois braços e uma leitura só. Use a fórmula.
- Você precisa de uma resposta em trinta segundos numa reunião. Use a fórmula e anote a dúvida.
- O objetivo é um intervalo de confiança para uma métrica de quantil em produção, todo dia, em escala. Aí a recomendação de Deng, Knoblich e Lu vale: uma fórmula fechada, como o intervalo externo que eles propõem, custa uma fração do bootstrap.
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
- Ron Kohavi, Alex Deng, Roger Longbotham e Ya Xu. Seven Rules of Thumb for Web Site Experimenters, KDD 2014. A regra 7 é a fonte da regra de bolso de 355 vezes o quadrado do coeficiente de assimetria como número mínimo de observações independentes por variação para que a média tenha distribuição normal, da recomendação de aplicá-la quando o módulo da assimetria passa de 1, da definição do coeficiente de assimetria usada aqui, da tabela do Bing (receita por usuário com assimetria 17,9 e amostra de 114 mil para sensibilidade de 4,4 por cento; receita com capping em 5,2 e 9,7 mil para 10,5 por cento; sessões por usuário em 3,6 e 4,70 mil para 5,4 por cento; tempo até o sucesso em 2,1 e 1,55 mil para 12,3 por cento), da promessa de que as duas probabilidades de cauda ficam entre 0,02 e 0,03, do registro de que a regra deriva do trabalho de Boos e Hughes-Oliver, e da observação de que com 100 e mil usuários a distribuição da média amostral é bem assimétrica e o intervalo bilateral assumindo normalidade erraria a média verdadeira mais de 5 por cento das vezes.
- Alex Deng, Ulf Knoblich e Jiannan Lu. Applying the Delta Method in Metric Analytics: A Practical Guide with Novel Ideas, KDD 2018. Fonte da observação de que em escala grande a maioria das métricas segue distribuição aproximadamente normal, o que permite modelá-las com fórmulas fechadas e algoritmos distribuídos a uma fração do custo de procedimentos baseados em reamostragem como o bootstrap; da seção 4, do registro de que quantis de tempo de carregamento em 75, 95 e 99 por cento são métricas centrais para a comunidade de performance web, da crítica à estimativa de densidade na cauda (a densidade aparece no denominador e decai a zero, então um viés pequeno vira um viés grande na variância) e do registro de que o bootstrap funciona bem em escala pequena mas fica caro em escala grande porque calcular quantis exige ordenação repetida.
- Nicholas Larsen, Jonathan Stallrich, Srijan Sengupta, Alex Deng, Ron Kohavi e Nathaniel T. Stevens. Statistical Challenges in Online Controlled Experiments: A Review of A/B Testing Methodology, arXiv 2212.11366, 2024. Usado aqui como panorama dos desenhos que saem do caso coberto pela fórmula fechada, incluindo o registro de que sob randomização por cluster o tamanho efetivo de amostra e portanto o poder caem drasticamente, que é o cenário do caso 5.
Leia também
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 é.