«Конверсия выросла на 15%»
// Условие
Маркетинг тестировал новый лендинг и уже пишет пресс-релиз: «конверсия выросла на 15%!». Тебя просят проверить формулировку перед публикацией.
Что нужно
Посчитай абсолютный прирост (в долях), относительный прирост и p-value. Сохрани в result — dict с ключами abs_lift, rel_lift, p_value.// Данные
df:
user_id, group (A/B), converted (0/1) — одна строка на юзера// Решение
Подсказка
Абсолютный прирост: conv_b - conv_a (в долях; ×100 — процентные пункты). Относительный: (conv_b - conv_a) / conv_a.
p-value — обычный z-тест двух долей, как в первых задачах.
Сначала попробуй сам → Показать решение
df = load_data()
from scipy import stats
s = df.groupby('group')['converted'].agg(['sum', 'count'])
pa = s.loc['A', 'sum'] / s.loc['A', 'count']
pb = s.loc['B', 'sum'] / s.loc['B', 'count']
abs_lift = pb - pa
rel_lift = abs_lift / pa
p_pool = df['converted'].mean()
se = (p_pool * (1 - p_pool) * (1 / s.loc['A', 'count'] + 1 / s.loc['B', 'count'])) ** 0.5
z = abs_lift / se
p_value = 2 * (1 - stats.norm.cdf(abs(z)))
result = {'abs_lift': abs_lift, 'rel_lift': rel_lift, 'p_value': p_value}
print(result)
8.0% → 9.2%: абсолютный прирост +1.2 п.п., относительный +15%. Оба числа верные — путаница начинается, когда «+15%» читают как «+15 процентных пунктов». В отчётах пиши оба и всегда уточняй базу.
Формулировка «конверсия выросла на 15%» — публикуем?
«Выросла на 15%» без уточнения базы — классическая двусмысленность: читатель не знает, 8% → 23% (+15 п.п.) или 8.0% → 9.2% (+15% относительных). Рост при этом реальный и статзначимый (p ≈ 10⁻⁷) — врать не нужно, нужно точно формулировать: указывай обе величины и базу. Это зона ответственности аналитика: цифры в коммуникации — тоже твоя работа.