IT Blog

Интересные факты из аналитики, разработки, автоматизации и AI

← Все статьи

Парадокс Симпсона: как общая статистика может говорить обратное

Иногда общая статистика показывает, что один вариант хуже другого. Но если разделить данные на важные сегменты, вывод может полностью измениться. Это и есть парадокс Симпсона — одна из самых опасных ловушек при интерпретации данных.

Представьте, что команда сравнивает результаты двух вариантов продукта: старого интерфейса и нового. В общем отчёте новый интерфейс показывает конверсию 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.

Сложные сценарии имеют низкую конверсию независимо от интерфейса. Поэтому в общей метрике новый вариант оказался «наказан» большим количеством сложных случаев.

Главная причина — разные пропорции групп

Парадокс не возникает просто потому, что данные разделили на сегменты. Для него важно, чтобы:

  1. существовал фактор, влияющий на результат;
  2. этот фактор был по-разному распределён между сравниваемыми группами;
  3. агрегированный показатель скрывал это различие.

В нашем примере скрытый фактор — сложность сценария. Она влияет на вероятность успешного оформления заявки и распределена между интерфейсами неравномерно.

Общая метрика отвечает на вопрос о среднем результате всего объёма данных. Но она не всегда отвечает на вопрос, какой вариант работает лучше в сопоставимых условиях.

Пример на Python

Создадим таблицу с результатами теста. Для наглядности будем хранить число успешных заявок и общее число заявок в каждом сегменте.

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-тестах важно проверять баланс групп до интерпретации результата.

Продажи и регионы

Менеджер может иметь более низкую среднюю конверсию, чем коллега. Но он может работать преимущественно с крупными и сложными клиентами, где вероятность сделки изначально ниже.

Сравнивать менеджеров корректнее внутри сопоставимых сегментов: размера клиента, отрасли, региона, этапа воронки или источника лида.

Медицина и исследования

В медицинских данных парадокс особенно важен. Лечение может казаться менее эффективным в общей статистике, если его чаще назначают пациентам с тяжёлым состоянием. Без учёта возраста, диагноза, тяжести заболевания и других факторов общий показатель может вводить в заблуждение.

Связь с корреляцией и причинностью

Парадокс Симпсона тесно связан с проблемой скрытых факторов. Как и в случае с корреляцией, общая связь между показателями не всегда говорит о реальном механизме.

Например, можно заметить, что пользователи нового интерфейса имеют более низкую конверсию. Но это не означает, что интерфейс ухудшает результат. Возможно, именно в новый интерфейс чаще попадают пользователи со сложными сценариями.

Если общая метрика и сегменты говорят разное, это не ошибка математики. Это сигнал, что в данных есть важная структура, которую нельзя игнорировать.

Нужно ли всегда сегментировать данные

Нет, бесконечная сегментация тоже опасна. Чем больше срезов анализируется, тем выше риск случайных различий, маленьких выборок и ложных выводов.

Сегменты нужно выбирать не случайно, а исходя из предметной области и гипотезы. Полезно проверять факторы, которые одновременно:

  • могут влиять на целевую метрику;
  • неравномерно распределены между группами;
  • имеют понятное бизнес-объяснение.

Например, для конверсии в покупку разумно проверить устройство, источник трафика, регион, категорию товара, тип пользователя и этап воронки. А разделение по случайному признаку редко даст полезную интерпретацию.

Как не попасть в ловушку

Перед тем как делать вывод по общей статистике, стоит пройти небольшой чек-лист:

  1. Проверить, есть ли важные сегменты, влияющие на метрику.
  2. Сравнить общий результат с результатами внутри сегментов.
  3. Посмотреть, одинаково ли распределены сегменты между группами.
  4. Проверить размер выборки в каждом срезе.
  5. Не делать причинный вывод только по наблюдаемой разнице.
  6. Искать бизнес-причину обнаруженных различий.
  7. Для экспериментов контролировать случайное распределение пользователей.

Вывод

Парадокс Симпсона показывает, что одна общая цифра может быть недостаточной, а иногда — прямо противоположной по смыслу реальной картине.

Агрегированные метрики полезны для быстрого обзора, но перед важным решением их нужно проверять в ключевых сегментах. Особенно если группы отличаются по составу пользователей, сложности задач, источникам трафика или внешним условиям.

Прежде чем сказать «вариант A работает лучше варианта B», спросите: «А одинаковых ли пользователей и в одинаковых ли условиях мы сравниваем?»
← Все статьи