Este repositório fornece um framework completo e profissional para A/B Testing, combinando abordagens frequentista e bayesiana. É uma ferramenta essencial para cientistas de dados, analistas de produto e growth hackers que precisam tomar decisões baseadas em dados com rigor estatístico.
Fornecer um toolkit robusto e bem documentado para conduzir testes A/B de forma profissional, incluindo cálculo de tamanho de amostra, testes de hipótese, análise bayesiana e interpretação de resultados.
A/B Testing é fundamental para:
- Product Development: Validar features antes do lançamento completo
- Marketing: Otimizar campanhas, CTAs e landing pages
- E-commerce: Aumentar conversão e receita
- UX/UI: Melhorar experiência do usuário baseado em dados
- Growth: Tomar decisões data-driven para crescimento
| Aspecto | Frequentista | Bayesiana | 
|---|---|---|
| Filosofia | Probabilidade como frequência de longo prazo | Probabilidade como grau de crença | 
| Output | P-valor e intervalo de confiança | Probabilidade de B > A | 
| Interpretação | Rejeitar ou não H₀ | Probabilidade direta do resultado | 
| Stopping Rule | Deve ser definido antes | Pode parar quando quiser | 
| Prior Knowledge | Não utiliza | Incorpora conhecimento prévio | 
ab-testing-statistical-framework-python/
├── src/
│   └── hypothesis_testing/
│       └── ab_test.py                 # Framework principal
├── tests/
│   └── test_ab_framework.py           # Testes unitários
├── requirements.txt
└── README.md
# Clone o repositório
git clone https://github.com/galafis/ab-testing-statistical-framework-python.git
# Navegue até o diretório
cd ab-testing-statistical-framework-python
# Instale as dependências
pip install scipy numpy pandas
# Execute o exemplo
python src/hypothesis_testing/ab_test.pySaída esperada:
Sample Size Calculation:
------------------------------------------------------------
Required sample size per group: 3841
============================================================
A/B TEST RESULTS (FREQUENTIST)
============================================================
Conversion Rate A: 0.0800
Conversion Rate B: 0.0967
Absolute Difference: 0.0167
Relative Lift: 20.83%
Z-Statistic: 1.6084
P-Value: 0.1077
Significant: False
95% CI: (-0.0036, 0.0370)
============================================================
============================================================
A/B TEST RESULTS (BAYESIAN)
============================================================
Probability B > A: 94.38%
Probability A > B: 5.62%
Expected Loss (choosing B): 0.000248
Expected Loss (choosing A): 0.016875
============================================================
Antes de iniciar um teste A/B, é crucial calcular quantos usuários você precisa:
from src.hypothesis_testing.ab_test import ABTest
# Inicializar framework
ab_test = ABTest(alpha=0.05, power=0.80)
# Calcular tamanho de amostra necessário
sample_size = ab_test.calculate_sample_size(
    baseline_rate=0.10,      # Taxa de conversão atual: 10%
    mde=0.20,                # Efeito mínimo detectável: 20% de melhoria
    ratio=1.0                # Proporção 1:1 entre controle e tratamento
)
print(f"Você precisa de {sample_size} usuários por grupo")
# Output: Você precisa de 3841 usuários por grupo# Dados do teste
conversions_a = 120    # Conversões no grupo A (controle)
visitors_a = 1500      # Visitantes no grupo A
conversions_b = 145    # Conversões no grupo B (tratamento)
visitors_b = 1500      # Visitantes no grupo B
# Executar teste
results = ab_test.two_proportion_ztest(
    conversions_a, visitors_a,
    conversions_b, visitors_b
)
# Imprimir resultados
ab_test.print_results(results, 'frequentist')# Executar análise bayesiana
bayes_results = ab_test.bayesian_ab_test(
    conversions_a, visitors_a,
    conversions_b, visitors_b,
    n_simulations=100000
)
# Imprimir resultados
ab_test.print_results(bayes_results, 'bayesian')| Conceito | Definição | Valor Típico | 
|---|---|---|
| Alpha (α) | Probabilidade de erro tipo I (falso positivo) | 0.05 (5%) | 
| Beta (β) | Probabilidade de erro tipo II (falso negativo) | 0.20 (20%) | 
| Power (1-β) | Probabilidade de detectar efeito real | 0.80 (80%) | 
| MDE | Minimum Detectable Effect (menor efeito detectável) | 10-20% | 
| P-value | Probabilidade de observar resultado se H₀ for verdadeira | < 0.05 para significância | 
| Funcionalidade | Descrição | Método | 
|---|---|---|
| Sample Size Calculation | Calcula n necessário | calculate_sample_size() | 
| Z-Test | Teste frequentista de duas proporções | two_proportion_ztest() | 
| Bayesian Test | Análise bayesiana com Beta distributions | bayesian_ab_test() | 
| Confidence Intervals | Intervalos de confiança para diferença | Incluído no Z-test | 
| Expected Loss | Perda esperada de cada decisão | Incluído no Bayesian | 
| Relative Lift | Percentual de melhoria | Calculado automaticamente | 
O framework possui uma suite completa de testes com 83%+ de cobertura:
# Executar todos os testes
pytest tests/ -v
# Executar com relatório de cobertura
pytest tests/ --cov=src --cov-report=term-missingTestes incluem:
- Testes unitários para todas as funções principais
- Testes de integração para workflows completos
- Testes de casos extremos (edge cases)
- Validação de precisão estatística
Contribuições são bem-vindas! Por favor, leia o CONTRIBUTING.md para detalhes sobre nosso código de conduta e processo de submissão de pull requests.
Passos para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
- Commit suas mudanças (git commit -m 'Add some AmazingFeature')
- Push para a branch (git push origin feature/AmazingFeature)
- Abra um Pull Request
This repository provides a complete and professional framework for A/B Testing, combining frequentist and Bayesian approaches.
git clone https://github.com/galafis/ab-testing-statistical-framework-python.git
cd ab-testing-statistical-framework-python
pip install scipy numpy pandas
python src/hypothesis_testing/ab_test.pyAuthor: Gabriel Demetrios Lafis
License: MIT
Last Updated: October 2025