O que é teste A/B?

A/B Testing em Python

Moe Lotfy, PhD

Principal Data Science Manager

Introdução ao teste A/B

  • Um teste A/B é...

     
    • um experimento para ver qual versão é melhor
    • baseado em métrica(s): taxa de cadastro, vendas médias por usuário etc.
    • com atribuição aleatória e análise dos resultados
A/B Testing em Python

Testar ou não testar?

Bons usos de teste A/B:

  • Otimizar taxas de conversão
  • Lançar novos recursos do app
  • Avaliar efeitos incrementais de anúncios
  • Medir o impacto de ensaios clínicos

Não faça teste A/B se:

  • Tráfego insuficiente/amostra "pequena"
  • Sem hipótese clara e lógica
  • Questões éticas
  • Alto custo de oportunidade
A/B Testing em Python

Etapas fundamentais do teste A/B

  1. Definir a meta e os designs/experiências
  2. Amostrar usuários aleatoriamente para inclusão
  3. Atribuir usuários aleatoriamente a:
    • variante de controle: estado atual
    • variante(s) de tratamento/teste: novo design
  4. Registrar ações e calcular métricas
  5. Testar diferenças estatisticamente significativas

Etapas do teste A/B

A/B Testing em Python

Valor da randomização

  • Generalização e representatividade
  • Minimizar vieses entre grupos
  • Estabelecer causalidade isolando o efeito do tratamento

 

Ilustração de amostragem e atribuição aleatórias

1 https://www.statology.org/random-selection-vs-random-assignment/
A/B Testing em Python

Exemplo em Python de atribuição aleatória

checkout.info()
RangeIndex: 9000 entries, 0 to 8999
Data columns (total 6 columns):
 #   Column         Non-Null Count  Dtype  
 0   user_id        9000 non-null   int64  
 1   checkout_page  9000 non-null   object 
 2   order_value    7605 non-null   float64
 3   purchased      9000 non-null   float64
 4   gender         9000 non-null   object 
 5   browser        9000 non-null   object 
dtypes: float64(2), int64(1), object(3)
memory usage: 422.0+ KB
A/B Testing em Python

Exemplo em Python de atribuição aleatória

checkout['gender'].value_counts(normalize=True)
F    0.507556
M    0.492444
Name: gender, dtype: float64
sample_df = checkout.sample(n=3000)
sample_df['gender'].value_counts(normalize=True)
M    0.506333
F    0.493667
Name: gender, dtype: float64
A/B Testing em Python

Exemplo em Python de atribuição aleatória

checkout.groupby('checkout_page')['gender'].value_counts(normalize=True)
checkout_page  gender
A              M         0.505000
               F         0.495000
B              F         0.507333
               M         0.492667
C              F         0.520333
               M         0.479667
Name: gender, dtype: float64
A/B Testing em Python

Vamos praticar!

A/B Testing em Python

Preparing Video For Download...