Выборка и смещение: вопросы для собеседования (часть 4)
Систематическая ошибка выборки, survivorship bias, selection bias — источники смещения, которые превращают любой анализ в мусор. На собеседовании дают кейс и просят найти, где может возникнуть смещение. Понимание этой темы показывает, способен ли аналитик критически мыслить о данных, а не просто считать метрики.
Вопросы 16–20 из 20
16В логировании покупок иногда происходит повторная отправка одного и того же события, и оно фиксируется дважды. Вы считаете выручку как сумму по событиям. Как лучше описать проблему?
AЭто ошибка выживших: учитываются только покупки, дошедшие до системы, а потерянные события не видны в логе пользователей
BЭто ошибка отбора: события для подсчёта попадают в выборку неслучайно, и поэтому выручка завышается на величину отбора
CЭто ошибка измерения из-за дублей при повторной отправке: одни и те же события считаются дважды и завышают выручку
DЭто улучшает репрезентативность: чем больше записей в логе, тем точнее становится сумма выручки и устойчивее метрика
Ответ: Дубли в событиях — это ошибка измерения, которая систематически завышает метрики, а не случайный шум.
Дублирование событий при повторной отправке — типичная measurement error: одно и то же действие пользователя записывается несколько раз, и сумма выручки систематически завышается. Лечится дедупликацией по `event_id` или паре (`order_id`, `event_name`) и идемпотентным consumer-ом в `ETL`. Survivorship bias тут не подходит: «выжившие» наблюдения — это не дубли. Selection bias предполагает неслучайный отбор объектов, а не их повторение. Утверждение про улучшение репрезентативности — обратное правды: дубли искажают, а не уточняют.
Подробный разбор → 17Вы оцениваете вероятность клика по карточке товара, используя только показы, которые алгоритм рекомендаций решил показать пользователю. Почему такая оценка может быть смещена?
AВозникает смещение отбора: попадание показа в выборку зависит от ожиданий алгоритма, связанных с вероятностью клика
BЭто ошибка выживших, не зависящая от алгоритма рекомендаций и логики ранжирования карточек на витрине маркетплейса
CЭто ошибка измерения: фиксация кликов в логах неизбежно искажает реальные сигналы интереса пользователя к карточке
DГенеральная совокупность показов по определению равна только показам, отобранным алгоритмом: смещения нет в принципе
Ответ: Если механизм отбора в выборку зависит от исхода, возникает смещение отбора, и причинные выводы могут стать некорректными.
Алгоритм рекомендаций не показывает карточки случайно — он отбирает их по предсказанной вероятности клика. Поэтому распределение признаков среди показанных карточек смещено в сторону тех, по которым алгоритм ожидает высокий CTR. Если оценивать вероятность клика только по этим показам, она систематически завышена для слабых карточек и не сравнима с вероятностью клика по случайной выборке карточек. Это classic selection bias. Survivorship bias требует выбытия объектов, ошибки измерения — искажений в записи данных. Подмена генеральной совокупности на «то, что показал алгоритм» — это игнорирование задачи.
Подробный разбор → 18Вы считаете длительность сессии по `client_time`, но у части устройств неверные часы, и длительность иногда получается отрицательной. Что лучше всего добавить в данные, чтобы снизить ошибку измерения?
AЛогировать только модель устройства и версию `OS`: фильтрация проблемных девайсов из расчёта длительности сессий
BЛогировать только язык интерфейса и `locale` пользователя: настройки локали влияют на точность клиентского времени
CЛогировать `server_time` вместе с `client_time` и `timezone_offset`: время нормализуется и видны некорректные события
DЛогировать только `sdk_version` логирующей библиотеки: разные сборки `sdk` по-разному пишут время в события сессии
Ответ: Чтобы снизить `measurement error` по времени, нужно иметь независимую опору вроде `server_time` и параметры часового пояса.
Когда `client_time` ненадёжен (часы устройства сбиты, пользователь крутит время вручную), нужен второй источник времени для коррекции — это `server_time`, проставляемое сервером в момент приёма события. Дополнительно `timezone_offset` позволяет привести всё к единому UTC и считать локальное время. Имея пару `client_time` + `server_time`, можно ловить события с большой разницей и помечать их некорректными. Логировать только модель устройства, локаль или версию SDK — отдельные полезные поля, но без второго таймстампа они не решают проблему: сравнивать остаётся не с чем.
Подробный разбор → 19Вы хотите оценить отток подписчиков за месяц, но берёте в анализ только тех, кто открывал приложение на прошлой неделе. Что наиболее вероятно произойдёт с оценкой оттока и почему?
AОтток будет занижен: вы исключили «тихо ушедших» и получили смещение отбора с элементами выживальщиков (survivorship bias)
BОтток будет завышен, потому что активные пользователи чаще отписываются, и среди них доля ушедших получится выше реальной
CОтток окажется точным, поскольку активные пользователи лучше отражают всю совокупность подписчиков сервиса в среднем за месяц
DОтток не изменится, так как выборка считается случайной, а фильтр по активности не влияет на оценку оттока подписчиков
Ответ: Если вы исключаете неактивных, вы меняете объект анализа (генеральную совокупность) и обычно занижаете отток.
Выборка только активных смещена в сторону пользователей, которые с большей вероятностью остаются, поэтому отток в такой выборке будет ниже, чем в полной совокупности подписчиков. Это смещение похоже на survivorship bias (смещение выживших), потому что вы анализируете тех, кто «дожил» до условия активности. Типичная ошибка — не замечать, что фильтр по активности меняет сам объект оценки.
Подробный разбор → 20Вы сделали пост-стратификационное взвешивание, чтобы выборка совпала с генеральной совокупностью по полу и возрасту. Какое утверждение наиболее корректно?
AВзвешивание по полу и возрасту полностью убирает любое смещение отбора и делает выборку идентичной генеральной совокупности по всем признакам
BВзвешивание снижает смещение по известным признакам, но не исправляет смещения по неизвестным причинам самоотбора респондентов
CВзвешивание автоматически увеличивает эффективный размер выборки и компенсирует малое количество ответов в недопредставленных группах
DВзвешивание исправляет ошибки измерения в ответах респондентов и приводит распределение ответов к истинному в генеральной совокупности
Ответ: Взвешивание помогает по тем признакам, которые вы контролируете, но не лечит смещение отбора по неизвестным причинам автоматически.
Если вы выровняли состав по полу и возрасту, оценки становятся ближе к генеральной совокупности по этим осям. Но если вероятность ответа связана с удовлетворённостью или доходом, а вы это не измерили, смещение может остаться. Кроме того, веса могут увеличить дисперсию оценок, если некоторые группы недопредставлены. Типичная ошибка — считать веса «магическим» решением для любого смещения отбора.
Подробный разбор →