Представьте, что команда сравнивает результаты двух вариантов продукта: старого интерфейса и нового. В общем отчёте новый интерфейс показывает конверсию 54%, а старый — 62,5%.
На первый взгляд вывод очевиден: новый интерфейс работает хуже, его нужно отключить. Но после сегментации по сложности сценария оказывается, что новый интерфейс показывает лучший результат в каждой отдельной группе.
Как такое возможно? Общий результат зависит не только от показателей внутри групп, но и от того, сколько наблюдений попало в каждую группу.
Парадокс Симпсона возникает, когда тенденция в нескольких отдельных группах исчезает или меняет направление после объединения данных.
Что такое парадокс Симпсона
Парадокс Симпсона — это статистический эффект, при котором вывод по агрегированным данным противоречит выводу по сегментированным данным.
Обычно причина в скрытом факторе, который влияет одновременно:
- на распределение объектов между сравниваемыми группами;
- на итоговую метрику;
- на интерпретацию результата.
В продуктовой аналитике такими факторами могут быть источник трафика, тип устройства, регион, размер клиента, сезонность, опыт пользователя, категория товара или сложность задачи.
Простой пример: два интерфейса и сложность сценария
Допустим, компания тестирует новый интерфейс оформления заявки. Пользователи могут проходить простой или сложный сценарий.
Сравним, какая доля пользователей успешно оформила заявку в простом и сложном сценариях для каждого интерфейса:
| Сценарий | Новый интерфейс | Старый интерфейс | Лучший вариант |
|---|---|---|---|
| Простой | 90 из 100 — 90% | 19 из 22 — 86,4% | Новый интерфейс |
| Сложный | 18 из 100 — 18% | 1 из 10 — 10% | Новый интерфейс |
В простом сценарии новый интерфейс лучше: 90% против 86,4%. В сложном сценарии он тоже лучше: 18% против 10%.
Кажется, что новый вариант должен победить и в общем сравнении. Однако посмотрим на агрегированные данные:
| Интерфейс | Успешные заявки | Всего заявок | Общая конверсия |
|---|---|---|---|
| Новый | 108 | 200 | 54% |
| Старый | 20 | 32 | 62,5% |
По общей конверсии старый интерфейс выглядит лучше: 62,5% против 54%. Получается противоположный вывод, хотя в каждом сегменте новый вариант показывал лучший результат.
Почему так произошло
Новый интерфейс чаще использовали в сложных сценариях: на него пришлось 100 сложных заявок из 200. У старого интерфейса сложных заявок было только 10 из 32.
Сложные сценарии имеют низкую конверсию независимо от интерфейса. Поэтому в общей метрике новый вариант оказался «наказан» большим количеством сложных случаев.
Главная причина — разные пропорции групп
Парадокс не возникает просто потому, что данные разделили на сегменты. Для него важно, чтобы:
- существовал фактор, влияющий на результат;
- этот фактор был по-разному распределён между сравниваемыми группами;
- агрегированный показатель скрывал это различие.
В нашем примере скрытый фактор — сложность сценария. Она влияет на вероятность успешного оформления заявки и распределена между интерфейсами неравномерно.
Общая метрика отвечает на вопрос о среднем результате всего объёма данных. Но она не всегда отвечает на вопрос, какой вариант работает лучше в сопоставимых условиях.
Пример на Python
Создадим таблицу с результатами теста. Для наглядности будем хранить число успешных заявок и общее число заявок в каждом сегменте.
Скачать Jupyter Notebook Открыть в Google Colab
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data = pd.DataFrame({
'interface': [
'Новый интерфейс',
'Новый интерфейс',
'Старый интерфейс',
'Старый интерфейс'
],
'scenario': [
'Простой',
'Сложный',
'Простой',
'Сложный'
],
'successful_orders': [90, 18, 19, 1],
'total_orders': [100, 100, 22, 10]
})
data['conversion'] = (
data['successful_orders'] / data['total_orders']
)
data
| interface | scenario | successful_orders | total_orders | conversion | |
|---|---|---|---|---|---|
| 0 | Новый интерфейс | Простой | 90 | 100 | 0.900000 |
| 1 | Новый интерфейс | Сложный | 18 | 100 | 0.180000 |
| 2 | Старый интерфейс | Простой | 19 | 22 | 0.863636 |
| 3 | Старый интерфейс | Сложный | 1 | 10 | 0.100000 |
Сначала сравним конверсию внутри каждого сегмента:
segment_conversion = data.pivot(
index='scenario',
columns='interface',
values='conversion'
)
(segment_conversion * 100).round(1)
| interface | Новый интерфейс | Старый интерфейс |
|---|---|---|
| scenario | ||
| Простой | 90.0 | 86.4 |
| Сложный | 18.0 | 10.0 |
Новый интерфейс лучше в обоих сценариях. Теперь посчитаем общую конверсию без сегментации:
overall = data.groupby('interface', as_index=False).agg(
successful_orders=('successful_orders', 'sum'),
total_orders=('total_orders', 'sum')
)
overall['conversion'] = (
overall['successful_orders'] / overall['total_orders']
)
overall['conversion_percent'] = (
overall['conversion'] * 100
).round(1)
overall
| interface | successful_orders | total_orders | conversion | conversion_percent | |
|---|---|---|---|---|---|
| 0 | Новый интерфейс | 108 | 200 | 0.540 | 54.0 |
| 1 | Старый интерфейс | 20 | 32 | 0.625 | 62.5 |
После объединения сегментов результат перевернулся: по общему показателю старый интерфейс кажется лучше.
Как визуализировать проблему
Для поиска парадокса Симпсона недостаточно одной диаграммы с общими значениями. Полезно строить графики сразу в двух разрезах:
- агрегированный показатель по всем данным;
- тот же показатель по ключевым сегментам.
sns.set_theme(style='whitegrid')
plot_data = data.copy()
plot_data['conversion_percent'] = plot_data['conversion'] * 100
plt.figure(figsize=(10, 5))
sns.barplot(
data=plot_data,
x='scenario',
y='conversion_percent',
hue='interface',
palette=['#4C78A8', '#E45756']
)
plt.title('Конверсия интерфейсов по сложности сценария')
plt.xlabel('Сценарий')
plt.ylabel('Конверсия, %')
plt.legend(title='Интерфейс')
plt.tight_layout()
plt.show()
На таком графике будет видно, что новый интерфейс опережает старый в каждой группе. Отдельно можно построить график общих конверсий — и увидеть противоположную картину.
Где парадокс Симпсона встречается в реальной жизни
Маркетинговые каналы
Один рекламный канал может иметь более низкую общую конверсию, чем другой. Но причина может быть в том, что он приводит больше холодной аудитории, новых пользователей или посетителей с мобильных устройств.
Если сравнить каналы внутри одинаковых сегментов аудитории, результат может оказаться другим.
A/B-тесты
В эксперименте вариант B может выглядеть хуже по общему показателю, но быть лучше отдельно на desktop и mobile. Иногда это происходит, если доля мобильного трафика в группах случайно различается или если распределение пользователей между группами было нарушено.
Поэтому в A/B-тестах важно проверять баланс групп до интерпретации результата.
Продажи и регионы
Менеджер может иметь более низкую среднюю конверсию, чем коллега. Но он может работать преимущественно с крупными и сложными клиентами, где вероятность сделки изначально ниже.
Сравнивать менеджеров корректнее внутри сопоставимых сегментов: размера клиента, отрасли, региона, этапа воронки или источника лида.
Медицина и исследования
В медицинских данных парадокс особенно важен. Лечение может казаться менее эффективным в общей статистике, если его чаще назначают пациентам с тяжёлым состоянием. Без учёта возраста, диагноза, тяжести заболевания и других факторов общий показатель может вводить в заблуждение.
Связь с корреляцией и причинностью
Парадокс Симпсона тесно связан с проблемой скрытых факторов. Как и в случае с корреляцией, общая связь между показателями не всегда говорит о реальном механизме.
Например, можно заметить, что пользователи нового интерфейса имеют более низкую конверсию. Но это не означает, что интерфейс ухудшает результат. Возможно, именно в новый интерфейс чаще попадают пользователи со сложными сценариями.
Если общая метрика и сегменты говорят разное, это не ошибка математики. Это сигнал, что в данных есть важная структура, которую нельзя игнорировать.
Нужно ли всегда сегментировать данные
Нет, бесконечная сегментация тоже опасна. Чем больше срезов анализируется, тем выше риск случайных различий, маленьких выборок и ложных выводов.
Сегменты нужно выбирать не случайно, а исходя из предметной области и гипотезы. Полезно проверять факторы, которые одновременно:
- могут влиять на целевую метрику;
- неравномерно распределены между группами;
- имеют понятное бизнес-объяснение.
Например, для конверсии в покупку разумно проверить устройство, источник трафика, регион, категорию товара, тип пользователя и этап воронки. А разделение по случайному признаку редко даст полезную интерпретацию.
Как не попасть в ловушку
Перед тем как делать вывод по общей статистике, стоит пройти небольшой чек-лист:
- Проверить, есть ли важные сегменты, влияющие на метрику.
- Сравнить общий результат с результатами внутри сегментов.
- Посмотреть, одинаково ли распределены сегменты между группами.
- Проверить размер выборки в каждом срезе.
- Не делать причинный вывод только по наблюдаемой разнице.
- Искать бизнес-причину обнаруженных различий.
- Для экспериментов контролировать случайное распределение пользователей.
Вывод
Парадокс Симпсона показывает, что одна общая цифра может быть недостаточной, а иногда — прямо противоположной по смыслу реальной картине.
Агрегированные метрики полезны для быстрого обзора, но перед важным решением их нужно проверять в ключевых сегментах. Особенно если группы отличаются по составу пользователей, сложности задач, источникам трафика или внешним условиям.
Прежде чем сказать «вариант A работает лучше варианта B», спросите: «А одинаковых ли пользователей и в одинаковых ли условиях мы сравниваем?»