← К портфолио A/B Testing Methodology Toolkit preview
Стек
PythonNumPy / SciPypytestuv
Эффект
  • 15 модулей, каждый откалиброван симуляцией: Type I error ≈ α, power-кривые
  • CUPED: SE сжимается в ~corr(X,Y)² раз
  • Наивный peeking раздувает Type I error — Pocock/OBF и mSPRT держат его под контролем
  • Delta-method даёт корректный SE для ratio-метрик (CTR, RPC) — наивный per-unit t-test смещён
  • End-to-end pipeline: SRM → CUPED → delta-method CTR → сегментные ATE + BH → novelty check

A/B Testing Methodology Toolkit

Business Context

Метод A/B-теста настолько же хорош, насколько хороши его ошибки первого рода под нулевой гипотезой и мощность под реальным эффектом. Вместо того чтобы доверять асимптотическим обещаниям, каждый модуль этого тулкита симулирует пайплайн end-to-end и сообщает эмпирические частоты.

Modules

МодульМетодЧто показывает демо
srm_test.pySample Ratio Mismatch (χ²)ловит бакинг-баги до любых downstream-тестов
sample_size.pyFixed-horizon sizingn/arm для пропорций и средних
delta_method_ratio.pyRatio-метрики (CTR, RPC)корректный SE для ΣY/ΣX; наивный per-unit t-test смещён
cuped.pyVariance reductionSE ↓ в ~corr(X,Y)² за счёт pre-period
group_sequential.pyAlpha-spending границыPocock/OBF держат Type I, пока наивный peeking его раздувает
msprt_always_valid.pyAlways-valid p-valuesmSPRT позволяет смотреть и останавливаться когда угодно
sequential_ratio.pySequential ratio-метрикиdelta-method + mSPRT для CTR под мониторингом
sequential_ab_testing.pySequential rule Эвана Миллеравоспроизводит таблицу размеров, валидирует Type I/power, экономию выборки
bayesian_ab_test.pyAnalytic Bayesian A/BBeta-Binomial / Normal-Normal, P(B>A), expected loss, ROPE
bootstrap_ci.pyBootstrap CIpercentile и BCa для скошенных метрик
heterogeneous_treatment_effects.pyHTE по сегментамinteraction-модель ловит Simpson-подобное зануление
multiple_comparisons.pyМножественное тестированиеBonferroni (FWER) vs Benjamini-Hochberg (FDR)
novelty_primacy.pyTime-varying effectstreat×day interaction ловит novelty decay / primacy growth
switchback.pyCluster & switchbackcluster-robust SE; carryover bias
test_simulator.pyGeneric calibrationлюбой DGP + тест → эмпирические Type I и power

End-to-end pipeline

scripts/run_full_pipeline.py связывает модули в один реалистичный сценарий на синтетических данных: SRM check → CUPED → delta-method CTR test → per-segment ATE с BH-коррекцией → novelty check → markdown-отчёт в outputs/report.md.

Testing Philosophy

Тестовый набор перепрогоняет каждую калибровку с ассертами:

  • Type I error ≈ α (± tolerance) для каждого метода под его нулевой гипотезой;
  • покрытие CI ≈ 95% для bootstrap;
  • наивный peeking раздувает Type I, always-valid / alpha-spending контролируют его;
  • наивный per-unit SE для ratio-метрик неточен, delta-method точен;
  • корректность на known-answer фикстурах (SRM splits, сегментные uplift-ы).

Run

uv sync --all-groups
uv run pytest                 # calibration test suite
uv run python scripts/run_full_pipeline.py   # end-to-end demo → outputs/report.md

Impact

  • 15 калиброванных модулей — от SRM до switchback, каждый с A/A-проверкой.
  • Числа проверены — Type I ≈ α, coverage ≈ 95%, контроль peeking.
  • Ratio-метрики без смещения — delta-method вместо наивного per-unit t-test.
  • Связный pipeline — от SRM-проверки до сегментных ATE и novelty check.

Documentation

Разбор кейса

Проблема

Методы A/B-тестирования продаются на асимптотических обещаниях, но никто не проверяет Type I error под нулевой гипотезой и power под реальным эффектом. Наивный peeking, неправильный SE для ratio-метрик и множественное тестирование молча ломают решения.

Подход

Каждый модуль реализован из первичной литературы и откалиброван симуляцией: A/A-проверка на Type I error ≈ α и power-кривая под эффектом. Покрыты 15 тем — SRM, sizing, CUPED, delta-method, alpha-spending (Pocock/OBF), mSPRT, sequential ratio, Bayesian A/B, bootstrap BCa, HTE, Bonferroni/BH, novelty/primacy, switchback. Всё связано в end-to-end pipeline: SRM → CUPED → CTR test → сегментные ATE с BH → novelty check → отчёт.

Результат

Числа проверены, а не предполагаются: тестовый набор ассертит Type I error ≈ α для каждого метода, покрытие CI ≈ 95% для bootstrap, контроль peeking для always-valid/alpha-spending, точность delta-method для ratio-метрик и корректность на known-answer фикстурах.

15 Модулей
A/A для каждого Проверок Type I error
~corr(X,Y)² SE reduction (CUPED)
Pocock/OBF, mSPRT Контроль peeking

Смотрите также