896просмотров
80.7%от подписчиков
19 февраля 2026 г.
📷 ФотоScore: 986
Ну что, новых файлов Ебштейна не выходит😓, поэтому продолжим с bOOtstrap 🐓 Еще раз вернемся к проблеме смещения среднего в бутстрапе относительно общей оценки эффекта по тесту.
Когда данных много и они распределены ± километр близко к нормальному, всё ок: обычный bias correction работает нормально (а иногда и не нужен), потому что мы смещаем всё распределение симметрично относительно центра. Ну ок, а если у нас огромный хвост? Тогда справа перцентиль (например, 97,5) обрежет эти хвосты к херам, как будто их нет (он в домике), и доверительный интервал будет искажён (ПЭ-Валуе, кстати, тоже). И решить эту проблему поможет BCa - bias-corrected and accelerated. Мдаааааа, БЭМ БЭМ 🦢
Если ты - тру Мактрахер, листай в конец, там пару строчик кода, и готово 😎 Давай быстро вспомним про обычный BC. Если не вдаваться в математику, то:
Вводные для примера:
🍒 Размер каждой группы = 40 000
🍒 Метрика медиана чего-либо
🍒 Разница метрик T-C = 0,6 (Пусть будет X)
🍒 Среднее разниц медиан в бут распределении = 0,58 (назовем X_boot) Что делаем:
🍒 Наше среднее разниц в бут левее (0,58 < 0,6)
🍒 Берем каждую бут выборку и сдвигаем на 0,02
🍒 Считаем новый доверительный интервал и ПЭ-Валуе Окей, но вот у нас получилось бут-распределение с хвостом. Тут и поможет BCa — и здесь придется чуть погрузиться в математику под капотом (максимально упростил): 🟢 Считаем, сколько выборок меньше «настоящей разницы» X
🟢 Вот тут самое интересное - переводим эту цифру из п. 1 в нормальную Z-шкалу (чегоооо, Карл?). Это самый ор, потому что bootstrap типа не опирается ни на какие распределения (налюбилово), и получаем число z₀
🟢 Теперь считаем то же самое, но для среднего по бут-выборке → X_boot, и переводим в Z-шкалу
🟢 Теперь считаем acceleration - a. Это поправка на асимметрию того, как статистика реагирует на данные. Если упростить: если убрать одно наблюдение, статистика меняется симметрично или нет?
Тут используется метод jackknife 🔪. Если коротко, основная идея - расчет среднего отклонения, выбрасывая по одному наблюдению из оригинальной выборки разниц.
🟢 Всё есть - считаем
z_BCa = (z − z₀) / (1 + a (z − z₀))
🟢 Считаем ПЭ-Валуе с помощью преобразования z_BCa через CDF Да, тема огромная. Возможно, рожу норм статью (чтобы всё разжевано досконально, с формулами и графиками) 🧐 ‼️ Главное (если нихрена не понятно): если видишь, что бут-распределение получилось далёким от нормального (логнормал, хвостатое и т. д.), - применяй BCa. Ну и файнали - кодик, чтобы не париться:
from scipy.stats import bootstrap
import numpy as np data = np.random.randn(100) res = bootstrap( data, np.mean, confidence_level=0.95, n_resamples=10000, method="BCa" # вот оно
) print(res.confidence_interval) 🐓 - понятно 10% и больше
🐛 - как принимать BCA?
🐳 - что такое медиана?