Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Randomização e Tamanho da Amostra | Projetando Testes A/B Eficazes
Testes A/B com Python

Randomização e Tamanho da Amostra

Deslize para mostrar o menu

A atribuição aleatória é a base de testes A/B confiáveis. Ao atribuir usuários a grupos de forma aleatória, garante-se que ambos os grupos sejam estatisticamente semelhantes, o que reduz o risco de viés de seleção. O viés de seleção ocorre quando certos usuários têm maior probabilidade de acabar em um grupo do que em outro, o que pode distorcer os resultados e levar a conclusões equivocadas. Sem uma randomização adequada, as diferenças entre os grupos podem ser causadas por características subjacentes, e não pela variável que está sendo testada.

Diversas técnicas de randomização são comumente utilizadas em testes A/B:

  • Randomização simples: cada usuário tem a mesma chance de ser atribuído a qualquer grupo, geralmente utilizando um gerador de números aleatórios;
  • Randomização em blocos: os usuários são agrupados em blocos e, dentro de cada bloco, são atribuídos aleatoriamente a diferentes grupos para manter o equilíbrio ao longo do teste;
  • Randomização estratificada: os usuários são divididos em estratos com base em características (como idade ou localização), e a randomização ocorre dentro de cada estrato para garantir que todos os subgrupos estejam representados.

A randomização simples é a mais direta e geralmente suficiente para a maioria dos experimentos digitais. No entanto, técnicas mais avançadas ajudam a manter o equilíbrio ao lidar com tamanhos de amostra menores ou subgrupos importantes.

1234567891011121314151617
import random # Simulating random assignment of 20 users to groups 'A' and 'B' users = [f"user_{i+1}" for i in range(20)] groups = ['A', 'B'] # Dictionary to hold group assignments assignment = {} for user in users: # Randomly choosing a group for each user assigned_group = random.choice(groups) assignment[user] = assigned_group # Printing out the assignment for user, group in assignment.items(): print(f"{user} assigned to group {group}")

Determinar o tamanho de amostra adequado é fundamental para a confiabilidade dos resultados do teste A/B. Uma amostra muito pequena pode levar a resultados não confiáveis ou inconclusivos, enquanto uma amostra excessivamente grande desperdiça recursos. O tamanho da amostra afeta diretamente o poder estatístico do teste – a probabilidade de detectar uma diferença real caso ela exista.

Conceitos-chave no cálculo do tamanho da amostra incluem:

  • Efeito mínimo detectável (MDE): a menor diferença entre os grupos que se deseja detectar;
  • Nível de significância (alfa): a probabilidade de um falso positivo (geralmente definido em 0,05);
  • Poder (1 - beta): a probabilidade de detectar um efeito real (geralmente definido em 0,8 ou 80%).

A análise de poder combina esses fatores para estimar o número mínimo de usuários necessários em cada grupo. Efeitos maiores ou níveis de significância mais altos exigem menos usuários, enquanto efeitos menores ou maior poder exigem mais usuários.

12345678910111213141516171819202122
from scipy.stats import norm import math # Parameters for sample size calculation alpha = 0.05 # Significance level power = 0.8 # Desired power p1 = 0.10 # Baseline conversion rate (control group) p2 = 0.13 # Expected conversion rate (treatment group) effect_size = abs(p2 - p1) # Minimum detectable effect # Calculate pooled standard deviation pooled_prob = (p1 + p2) / 2 std_dev = math.sqrt(2 * pooled_prob * (1 - pooled_prob)) # Z-scores for alpha and power z_alpha = norm.ppf(1 - alpha / 2) z_beta = norm.ppf(power) # Sample size formula for two-proportion z-test n = ((z_alpha + z_beta) * std_dev / effect_size) ** 2 print(f"Required sample size per group: {math.ceil(n)}")
question mark

Qual é o principal risco de uma randomização inadequada ou do uso de um tamanho de amostra muito pequeno em testes A/B?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 2

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 2. Capítulo 2
some-alt