O que é teste A/B? Do experimento à decisão

A aleatorização que permite falar em causa, a ANOVA que detecta se existe diferença entre as versões e o teste de Tukey que identifica entre quais grupos ela está, aplicados a três promoções sorteadas em 137 lojas.


Um teste A/B é um experimento que compara duas ou mais versões de algo, sorteando quem recebe cada uma. O sorteio é o que diferencia esse método de uma comparação qualquer: ele permite atribuir a diferença observada à versão testada, e não às características de quem a recebeu.

Neste artigo vemos por que a aleatorização resolve o problema de identificação, como conduzir a análise quando há mais de duas versões, e o que fazer quando o teste não aponta um vencedor. O exemplo usa dados de uma campanha de marketing real, em R.

Por que o sorteio muda tudo

Uma rede que oferece promoção e compara as vendas das lojas que aderiram com as que não aderiram mistura dois efeitos na mesma conta: o da promoção e o do perfil das lojas que decidiram participar.

Lojas em regiões movimentadas talvez adiram mais, e já venderiam mais de qualquer forma. Esse é o problema de seleção, e é o mesmo que impede concluir causa a partir de correlação em dados observacionais.

O sorteio elimina esse problema por construção. Quando a versão é atribuída ao acaso, os grupos ficam parecidos em tudo que não seja o tratamento, tanto no que conseguimos medir quanto no que não conseguimos. Qualquer diferença sistemática nos resultados passa a ter uma explicação só.

Os dados: três promoções em 137 lojas

A rede testou três promoções diferentes. Cada loja recebeu uma delas por sorteio, e as vendas foram acompanhadas por quatro semanas, totalizando 548 observações de venda semanal.

library(dplyr)   # manipulação de dados
library(readr)   # leitura de arquivos CSV

wa_mkt <- read_csv("WA_Marketing-Campaign.csv") |>
  mutate(Promotion = as.factor(Promotion))   # a promoção é categórica, não número

wa_mkt |>
  group_by(Promotion) |>                     # separa por promoção
  summarise(
    n       = n(),                           # quantas observações
    media   = mean(SalesInThousands),        # a venda semanal média
    dp      = sd(SalesInThousands),          # o desvio padrão
    mediana = median(SalesInThousands)       # a venda mediana
  )
Promoção Observações Venda média Desvio padrão Mediana
1 172 58,10 16,55 55,38
2 188 47,33 15,11 45,36
3 188 55,36 16,76 51,16
Gráfico de violino com a distribuição das vendas semanais nas três promoções, com as médias de 58,1, 47,3 e 55,4 mil dólares marcadas
As vendas em milhares de dólares por semana e por loja, nas três promoções.

A promoção 1 lidera com 58,10 mil dólares semanais, seguida pela 3 com 55,36 e pela 2 com 47,33. Mas as distribuições se sobrepõem bastante, e a pergunta é quais dessas diferenças resistem à variação natural entre lojas e semanas.

📩 Acompanhe nossas análises

O Boletim AM traz análises de conjuntura, exercícios em R e Python e material de estudo, direto no seu e-mail.

Assinar o Boletim AM →

A ANOVA pergunta se existe alguma diferença

Com três grupos, comparar todos os pares de uma vez aumenta a chance de encontrar uma diferença por acaso. A análise de variância, ou ANOVA, contorna isso fazendo uma pergunta única: existe alguma diferença entre as promoções?

O método compara a variação entre os grupos com a variação dentro de cada grupo. Quando a primeira supera a segunda por margem suficiente, concluímos que os grupos se distinguem.

modelo <- aov(SalesInThousands ~ Promotion, data = wa_mkt)   # ajusta a ANOVA

summary(modelo)   # estatística F e valor-p

A estatística F é de 21,95, com valor-p de 6,8 × 10⁻¹⁰. A variação entre as promoções supera com folga a variação interna de cada uma, então ao menos uma delas difere das outras.

O que a ANOVA não diz é qual. Para isso, precisamos comparar os pares.

O teste de Tukey compara os pares

O teste de Tukey examina cada par de promoções e corrige o nível de significância pelo número de comparações. Sem essa correção, testar três pares a 5% cada eleva o risco conjunto de falso positivo para cerca de 14%.

TukeyHSD(modelo)   # diferença, intervalo de confiança e valor-p de cada par
Comparação Diferença Intervalo de 95% Valor-p
Promoção 2 − Promoção 1 −10,77 [−14,77 ; −6,77] < 0,001
Promoção 3 − Promoção 1 −2,73 [−6,74 ; +1,27] 0,244
Promoção 3 − Promoção 2 +8,04 [+4,12 ; +11,95] < 0,001
Três intervalos de confiança horizontais para as comparações entre promoções, com o intervalo da comparação 3 contra 1 cruzando o zero
Apenas a comparação entre as promoções 3 e 1 tem intervalo que cruza o zero.

Duas conclusões se sustentam. A promoção 2 vende menos que as outras duas, com diferenças de 10,8 e 8,0 mil dólares semanais. E as promoções 1 e 3 não se distinguem: o intervalo da diferença vai de −6,74 a +1,27, incluindo o zero.

Quando o teste não elege um vencedor

O experimento identificou a pior opção com segurança, e deixou as duas melhores empatadas. Esse resultado parcial é comum, e a leitura correta depende de entender por que ele acontece.

A diferença entre as promoções 1 e 3 é de 2,73 mil dólares, menor que a variação entre lojas dentro de cada grupo. Com 137 lojas e quatro semanas, o experimento não tem precisão para separar um efeito desse tamanho do ruído.

Três caminhos se abrem a partir daí. Aumentar a amostra, se a diferença de 2,73 justificar o custo de um experimento maior. Escolher entre 1 e 3 por outro critério, como custo de execução. Ou tratar as duas como equivalentes, que é o que os dados sustentam.

O que o resultado não autoriza é anunciar a promoção 1 como vencedora porque ficou na frente. Essa diferença não se distingue do acaso nesta amostra.

O que pode invalidar o teste

A aleatorização precisa funcionar. Conferimos se as características observáveis ficaram equilibradas entre os grupos: porte das lojas, idade, região. Desequilíbrio grande sugere falha no sorteio.

O tamanho da amostra deve ser definido antes de olhar os resultados. Interromper o teste assim que a diferença fica significativa infla o falso positivo, prática conhecida como peeking.

O período precisa cobrir a sazonalidade relevante. Quatro semanas captam variação entre semanas do mês, mas não diferenças entre meses ou entre épocas do ano.

Resta um ponto sobre a leitura do resultado. Uma diferença de 0,5 mil dólares pode alcançar significância estatística numa amostra enorme e ainda assim não cobrir o custo de implantar a mudança.

Onde o teste A/B é usado

Em produto digital, duas versões de uma tela são sorteadas entre os usuários, e a métrica de conversão decide qual fica.

Em varejo, lojas recebem layouts ou promoções diferentes por sorteio, como no exemplo deste artigo.

Em crédito, uma política de concessão nova é aplicada a uma parcela sorteada da carteira antes de valer para todos, o que limita o risco da mudança.

Em políticas públicas, programas-piloto com atribuição aleatória medem o efeito antes da expansão, e é o desenho por trás de boa parte da avaliação de impacto moderna.

Considerações finais

Percorremos o teste A/B completo: a aleatorização que permite falar em causa, a ANOVA que detecta se existe diferença, e o teste de Tukey que identifica entre quais grupos ela está.

No nosso exemplo, o experimento descartou a promoção 2 com segurança e deixou as promoções 1 e 3 empatadas. Reconhecer esse empate é parte da análise, e não uma falha dela.

Conduzir experimentos muda o trabalho conforme a área:

  • Profissional de produto: decide por evidência em vez de opinião sobre o comportamento do usuário.
  • Analista de marketing: mede o efeito da campanha separado do perfil de quem a recebeu.
  • Cientista de dados: dimensiona a amostra antes de rodar o teste, pela diferença mínima que importa detectar.
  • Economista: aplica o mesmo desenho em avaliação de impacto de políticas.
  • Gestor: pergunta se o teste tinha poder suficiente antes de aceitar um resultado nulo como ausência de efeito.

Do experimento à análise de impacto

Rodar um teste A/B é o primeiro passo; medir efeito quando o sorteio é inviável exige outros métodos. O AM Black é a assinatura anual que dá acesso a todos os cursos da Análise Macro, em R e em Python, da estatística básica à econometria aplicada.

Conhecer o AM Black →

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print
Análise Macro © 2011 / 2026

comercial@analisemacro.com.br – Rua Visconde de Pirajá, 414, Sala 718
Ipanema, Rio de Janeiro – RJ – CEP: 22410-002

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp