Что такое бутстреп
Что проверяют
Понимаете ли вы, откуда берётся оценка неопределённости, когда аналитической формулы под метрику нет. Для инженера данных и аналитика это заодно проверка на аккуратность: бутстреп легко применить механически и получить уверенно неверный интервал.
Как отвечать
Идея в замене неизвестного генерального распределения эмпирическим. Из имеющейся выборки многократно берут выборки того же размера с возвращением, на каждой считают интересующую статистику и по набору её значений судят о разбросе.
Что это даёт: стандартную ошибку и доверительный интервал для величин без удобной формулы, например медианы, квантиля, площади под ROC-кривой, разности конверсий двух групп. Интервал берут перцентильным или поправленным вариантом вроде BCa.
boot = [stat(rng.choice(x, size=len(x), replace=True)) for _ in range(2000)]
lo, hi = np.quantile(boot, [0.025, 0.975])В машинном обучении на той же идее построены бэггинг и случайный лес, а объекты, не попавшие в очередную выборку, дают честную оценку качества вне обучения. Условие применимости одно и важное: наблюдения независимы и одинаково распределены, а исходная выборка не микроскопическая.
Где спотыкаются
Ресемплят без возвращения или берут выборку меньше исходной. И то и другое занижает разброс, интервал выходит узким, а вывод чрезмерно уверенным.
Применяют метод к зависимым данным: временному ряду, событиям одного пользователя, объектам внутри кластера. Нужен блочный вариант или ресемпл по единице независимости, иначе интервал окажется в разы уже настоящего.
Ждут, что процедура исправит смещение выборки. Бутстреп описывает разброс вокруг того, что уже собрано: на нерепрезентативных данных, на максимуме и крайних квантилях он честно врёт вместе с исходной выборкой.