Короткий ответ
Это парадокс Симпсона: сдвиг в структуре трафика между сегментами (например, рост доли сегмента с более высокой базовой конверсией) может развернуть агрегированную метрику в сторону, противоположную тренду каждого сегмента по отдельности.
Как это работает подробнее
Агрегированная конверсия — это взвешенное среднее конверсий сегментов, где веса — доли трафика; если структура трафика существенно меняется, итог может расти даже при падении конверсии в каждом сегменте.
Пример кода
simpsons_paradox.py
import pandas as pd
data = pd.DataFrame({
"device": ["desktop", "mobile", "desktop", "mobile"],
"period": ["before", "before", "after", "after"],
"sessions": [2000, 8000, 8000, 2000],
"conversions": [100, 240, 360, 50],
})
data["cr"] = data["conversions"] / data["sessions"]
print(data)
agg = data.groupby("period").apply(lambda d: d["conversions"].sum() / d["sessions"].sum())
print(agg)Что использовать на практике
- Применение. Всегда проверяйте тренды по сегментам и долю трафика каждого сегмента вместе с агрегатом; показывайте на дашборде не только общий показатель, но и вес (долю) каждого сегмента, чтобы объяснить расхождение; проверяйте декомпозицию метрики математически (взвешенная сумма), а не полагайтесь только на визуальное впечатление.
Подводные камни
- Частые ошибки. Доклад об агрегированном росте как о безусловно хорошей новости без проверки сегментов; отсутствие объяснения механизма сдвига структуры, когда это происходит (оставляет стейкхолдеров в недоумении или порождает недоверие к дашборду); отсутствие на дашборде доли трафика по сегментам, которая как раз и объясняет парадокс.