Парадокс Симпсона простыми словами
Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.
Зачем это знать
Наверх смотрите агрегаты — группа A лучше B. Разбиваете на сегменты — в каждом сегменте B лучше A. Это парадокс Симпсона, один из главных источников ошибок в аналитике. Если не умеете его распознавать — легко сделать неправильный вывод.
На собесах SQL / статистика / продуктовая аналитика парадокс Симпсона встречается регулярно. Пропустить — минус балл.
Короткое объяснение
Тренд в подгруппах может быть противоположным общему тренду.
A лучше B в каждой подгруппе → в агрегате B лучше AЭто не ошибка в расчётах — это реальный парадокс.
Классический пример: UC Berkeley admissions
1973: Berkeley обвинили в гендерной discrimination. Agregated data:
- Мужчины: 44% приём
- Женщины: 35% приём
Разница 9 п.п. — дискриминация?
Разбили по департаментам: в большинстве департаментов женщины принимались с выше % чем мужчины.
Почему разница? Женщины подавали в более конкурентные департаменты (низкий overall acceptance), мужчины — в менее конкурентные (высокий overall acceptance).
Когда учли этот confounder — дискриминации не было.
Второй пример: медицина
Drug А лучше drug B в overall.
Разбили по severity:
- Mild patients: B лучше
- Severe patients: B лучше
Почему А выигрывает в agregated? А получали больше mild patients (лучше outcomes overall), B — severe (хуже overall).
В A/B-тестах
Group A vs Group B, CR:
- Overall: A > B
Смотрим по platforms:
- iOS: B > A
- Android: B > A
Проблема: A больше iOS (где baseline CR выше). Unbalanced assignment.
Решение: stratified randomization или post-stratification.
SQL пример
-- Overall
SELECT GROUP, AVG(converted) FROM ab_test GROUP BY GROUP;
-- A: 10%, B: 8% → A better
-- By platform
SELECT GROUP, platform, AVG(converted) FROM ab_test
GROUP BY GROUP, platform;
-- iOS: A=5%, B=7% → B better
-- Android: A=15%, B=17% → B betterКак распознать
1. Смотрите sub-segments
Всегда anti-segment analysis: по platform, гео, user tenure, premium.
2. Проверьте balance
Если treatment и control имеют разный composition по важным segments — риск Simpson.
3. Sanity check
Знаете, что B должен быть хуже, но данные показывают A → ищите confounder.
Почему возникает
Confounding — есть скрытая переменная, коррелирующая и с group, и с outcome.
Без контроля на confounder — agregate вводит в заблуждение.
Fix
Stratification
Разделить по confounder, посчитать weighted average:
CR_fair = Σ (CR_segment × weight_segment)Regression
Добавить confounder в модель:
Y ~ treatment + confounderCoefficient на treatment — controlled effect.
Propensity score
Match units с similar propensity → balance groups.
Реальные кейсы
Google Flu Trends
Agregated search data vs flu incidence показывала correlation, но skewed by region.
Mortality rates
По странам А выше, чем В. Разбили по age — в каждой возрастной группе B выше. Дело в возрастном составе.
На собесе
«Что такое парадокс Симпсона?» Когда тренд в агрегате противоположен трендам в подгруппах.
«Как распознать?» Segment analysis, balance check, sanity check.
«Как fix?» Stratification, regression, propensity score matching.
«Классический пример?» Berkeley admissions, medical treatment.
Частые ошибки
Доверять агрегатам
Always segment. Especially when stakes высоки.
Random assignment = not a cure
Random assignment в большой выборке обычно балансирует, но на малой — не гарантирует.
Ignore domain knowledge
Если результат странный — ищите confounder, не принимайте сразу.
Связанные темы
FAQ
Все agregated data плохие?
Нет. Но segment analysis — best practice.
Simpson vs confounding?
Simpson — manifestation confounding.
Только в stats?
Везде где aggregation: политика, медицина, бизнес.
Тренируйте аналитику — откройте тренажёр с 1500+ вопросами для собесов.