Ваш доверительный интервал может врать, если люди повторяются в выборке
Ваш доверительный интервал может врать, если люди повторяются в выборке
Обычно доверительный интервал для разницы между группами считают бутстрапом: много раз пересобирают выборку со случайным повторением и смотрят, как гуляет результат. Работает отлично, пока каждая строка - это отдельный независимый человек. А вот когда один и тот же человек сидит в данных несколько раз, начинаются сюрпризы.
Условный пример, цифры для иллюстрации. 10 000 человек, каждый попал в выборку по 3 раза, корреляция между строками одного человека 0,5. Бутстрап по строкам покажет интервал ±0,5 п.п. Честный, по людям, выйдет ±0,7 п.п. Эффект в 0,6 п.п. по первому расчету значим, по второму уже нет.
Откуда берется проблема
Типичный случай: несколько волн одного теста или повторные замеры одних и тех же людей. Один человек легко попадает в выборку 2-3 раза, например, участвовал в нескольких волнах. Обычный бутстрап пересэмплирует строки и считает их независимыми. Но строки одного человека связаны между собой: это не три случайных исхода, а один человек с одним набором привычек, которого просто записали несколько раз.
Чем это плохо
Интервал по строкам выходит уже, чем должен. Расчет думает, что данных больше и они разнообразнее, чем есть на самом деле. В статистике это называется псевдо-репликацией (pseudo-replication): неопределенность занижена, а уверенность в результате завышена.
Аналогия
Представьте, что вы меряете средний рост людей в комнате, но троих случайно измерили по 50 раз, а остальных по одному. Среднее уедет в сторону этих троих, а интервал без поправки покажет разброс куда уже, чем в реальной популяции.
Решение: кластерный бутстрап
Вместо строк пересэмплируем уникальных людей (кластеры) с возвращением, а в каждый ресемпл берем все строки выбранного человека целиком. Корреляция внутри человека сохраняется, и интервал честно показывает неопределенность.
Для средних есть путь попроще: сначала свернуть данные до одной строки на человека (среднее по человеку) и считать обычный бутстрап. Результат тот же или очень близкий, а объяснить и проверить такое проще. Кластерный бутстрап нужен, когда метрика сложнее среднего (отношение, квантиль) и до человека ее так легко не свернуть.
Когда стоит проверять
➖ Панельные данные: одни и те же люди измеряются несколько раз
➖ Несколько волн одного теста с пересекающейся аудиторией
➖ Любая кластерная структура: наблюдения сгруппированы по магазинам, регионам, командам
Насколько это важно на практике
Большая выборка тут сама по себе не спасает. Важны две вещи: сколько строк в среднем приходится на человека (m) и насколько строки одного человека похожи друг на друга (внутриклассовая корреляция ρ). Грубо оценить можно через design effect:
DEFF = 1 + (m − 1) × ρ
Честный интервал шире наивного примерно в √DEFF раз. При m = 3 и ρ = 0,5 это √2, то есть шире в 1,4 раза. Если людей с повторами мало или строки одного человека почти не связаны, разница будет небольшой. Если повторов много, она вполне может перевернуть вывод о значимости.
Так что проверяйте на своих данных, а не гадайте.
❤️🔥 Подписывайтесь и поддержите канал бустом
↗️ Менторю и помогаю выйти на оффер
❓ Проверяли когда-нибудь разницу между обычным и кластерным бутстрапом на своих данных?
@data_driven_bogdan
Откликнуться в Telegram →
⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.