Bootstrap для аналитика: как оценить интервал без сложной формулы
Понятное объяснение bootstrap для аналитика: повторная выборка с возвращением, интервалы для медианы, ratio-метрик и uplift, кластеризация по пользователю и ограничения метода.
Содержание статьи
Медиана, p90, LTV, revenue per user и разница между ratio-метриками плохо укладываются в простую формулу среднего. Bootstrap позволяет приблизить распределение оценки через многократную пересборку выборки. Но «запустили 10 000 повторов» не означает, что проблемы дизайна и смещения исчезли. Центральный вопрос материала: Как получить устойчивую оценку неопределённости для метрики, у которой нет удобной школьной формулы?
Ситуация из отчёта
Медиана, p90, LTV, revenue per user и разница между ratio-метриками плохо укладываются в простую формулу среднего. Bootstrap позволяет приблизить распределение оценки через многократную пересборку выборки. Но «запустили 10 000 повторов» не означает, что проблемы дизайна и смещения исчезли.
Bootstrap хорошо объясняется как «много разумных вариантов той же выборки». Он полезен, когда команда понимает, что интервал зависит от наблюдений и дизайна. Не продавай его как магический способ получить истину: это гибкий инструмент для неопределённости, а не замена качественному источнику данных.
Как получить устойчивую оценку неопределённости для метрики, у которой нет удобной школьной формулы?
Статистическая модель
Метод берёт исходные наблюдения и много раз формирует новые выборки с возвращением. Для каждой выборки считается целевая статистика, а квантили полученного распределения используются как оценка интервала. Ключевой выбор — единица пересэмплирования. Если рандомизация была по пользователю, пересобирать нужно пользователей, а не строки событий.
Определи estimand и уровень наблюдения, выбери число повторов и seed. Для двух групп пересэмплируй внутри каждой группы. Для paired-данных сохраняй пары. Построй распределение разницы и проверь его графиком. Сравни bootstrap interval с аналитическим методом там, где оба доступны: сильное расхождение — повод изучить данные, а не выбрать узкую границу.
Разбор чисел
В эксперименте медианное время до первой ценности снизилось на 0,7 дня, но распределение сильно скошено. Bootstrap по user_id показывает 95% interval от −1,1 до −0,2 дня. Это более содержательно, чем t-test по строкам событий, который искусственно повышает количество наблюдений.
Сначала убери дубли до уровня пользователя, затем фиксируй группы. Сохраняй каждый bootstrap estimate или агрегаты распределения, чтобы повторить расчёт. Проверь, как меняется интервал при 1 000, 5 000 и 20 000 повторах. Число повторов влияет на стабильность границ, но не исправляет выборку и не добавляет реальную информацию.
Условный пример: центральная масса повторов и границы интервала.
Что проверить в данных
До интерпретации проверь единицу наблюдения, период и правило включения. Затем пересчитай результат на небольшой выборке, где ответ известен заранее, и сравни с разумной альтернативой: другим горизонтом, зрелой когортой или user-level агрегацией.
Если показатель станет регулярным, сохрани рядом входные параметры, контрольные сверки и версию определения. Это важнее дополнительного знака после запятой.
| Шаг | Что зафиксировать | Риск |
|---|---|---|
| Единица | user_id или cluster_id | псевдорепликация |
| Estimand | median diff / ratio | другая метрика |
| Seed и B | 42 / 10 000 | нерепродуцируемый результат |
| Interval | percentile / BCa | неясная интерпретация |
- Зафиксируй baseline до просмотра результата.
- Проверь пропуски, дубли и зрелость периода.
- Покажи размер выборки и диапазон неопределённости.
Границы вывода
Нельзя пересэмплировать зависимые события как независимые. Для редкого события много bootstrap-выборок могут иметь нулевую долю. Ratio-of-sums и mean-of-ratios дают разные estimand. Не используй bootstrap, чтобы задним числом подобрать красивый метод после просмотра эффекта. И не забывай, что интервал отражает неопределённость при исходном дизайне.
Пиши: «Bootstrap по пользователям, 10 000 повторов, медианная разница −0,7 дня, 95% percentile CI [−1,1; −0,2]. В большинстве пересборок тест быстрее контроля; проверка на p90 показывает тот же знак». Читателю понятны объект, метод и устойчивость.
Сначала сообщи, что видно в данных. Затем назови, что мешает сделать более сильный вывод. В конце предложи один проверяемый следующий шаг.
Самостоятельный расчёт
Реализуй bootstrap для среднего, медианы и конверсии на одной выборке. Затем повтори расчёт по строкам и по пользователям и сравни ширину интервала. Разница покажет, почему grain важнее количества строк. Добавь seed и сохрани настройки в результат — иначе повторная проверка будет неполной.
import numpy as np
rng = np.random.default_rng(42)
diffs = []
for _ in range(10_000):
c = rng.choice(control_users, len(control_users), replace=True)
t = rng.choice(test_users, len(test_users), replace=True)
diffs.append(np.median(t) - np.median(c))
np.quantile(diffs, [0.025, 0.5, 0.975])- Сохрани период и параметры расчёта.
- Назови хотя бы один крайний случай.
- Сформулируй вывод отдельно от гипотезы о причине.
Как сообщить результат
Пиши: «Bootstrap по пользователям, 10 000 повторов, медианная разница −0,7 дня, 95% percentile CI [−1,1; −0,2]. В большинстве пересборок тест быстрее контроля; проверка на p90 показывает тот же знак». Читателю понятны объект, метод и устойчивость.
Bootstrap хорошо объясняется как «много разумных вариантов той же выборки». Он полезен, когда команда понимает, что интервал зависит от наблюдений и дизайна. Не продавай его как магический способ получить истину: это гибкий инструмент для неопределённости, а не замена качественному источнику данных.
Материалы по теме
Среднее, медиана и мода: какую «середину» выбрать в аналитике
Разбираем среднее арифметическое, медиану и моду на примерах выручки, времени доставки и размера заказа: когда показатели расходятся и что писать в выводе.
Effect size: как оценивать практическую значимость результата
Что такое размер эффекта и почему он важнее одной статистической значимости: абсолютная разница, относительный uplift, Cohen’s d и бизнес-порог.

Выбросы в данных: что удалять, что оставить и почему правило IQR почти всегда врёт на деньгах
Разбор на модельном наборе из 2000 заказов: правило 1,5×IQR помечает 6% заказов, из которых аномальны пять. Как отличить ошибку от редкого клиента и что делать с каждым случаем.