Урок курса

Bootstrap в A/B-тестах: доверительный интервал

A/B тесты и анализ данных на Python

Bootstrap приближает выборочное распределение статистики повторным ресемплированием наблюдений с возвращением. Из исходной выборки размера n много раз собирают новую выборку того же размера, каждый раз считают метрику и получают распределение оценок.

Для A/B-теста обычно ресемплируют группы отдельно, вычисляют метрику A, метрику B и их разницу. Квантили распределения разниц дают percentile-интервал.

for _ in range(iterations):
    a_star = rng.choice(a, size=len(a), replace=True)
    b_star = rng.choice(b, size=len(b), replace=True)
    effects.append(metric(b_star) - metric(a_star))

Метод особенно удобен для медианы, квантиля и сложной метрики, у которой неудобна аналитическая формула стандартной ошибки.

Единица ресемплирования

Bootstrap должен сохранять структуру данных. Если вариант назначается пользователю, а таблица содержит события, ресемплируют пользователей вместе со всеми их событиями, а не отдельные строки. Иначе зависимые события искусственно увеличат эффективный размер выборки.

Для временных рядов простой независимый bootstrap часто разрушает автокорреляцию; используют block bootstrap или временную модель. Для кластерного эксперимента ресемплируют кластеры. Метод не исправляет плохую рандомизацию, утечку между группами и систематическое смещение.

Число итераций влияет на стабильность хвостовых квантилей. Фиксируйте seed для воспроизводимости и проверяйте, что увеличение итераций заметно не меняет вывод.

Ограничения и интерпретация

Percentile bootstrap прост, но может работать плохо при сильном смещении, малой выборке или статистике на границе допустимых значений. Существуют basic и BCa-интервалы; выбор метода нужно зафиксировать до просмотра желаемого результата.

Bootstrap не означает «метод без предположений». Он предполагает, что наблюдаемая выборка достаточно представляет генеральную совокупность и что схема ресемплирования отражает механизм получения данных.

В отчёте укажите метрику, единицу ресемплирования, число итераций, seed и тип интервала. Сравните результат с простым аналитическим методом на тестовой задаче: резкое расхождение часто обнаруживает ошибку реализации или неверную единицу анализа.

Попробуйте решить

Что нужно ресемплировать, если вариант A/B назначается пользователю, а у пользователя много событий?

Продолжить с проверкой и прогрессом

Откройте интерактивный раннер с заданиями урока.

Перейти к интерактивному уроку