Короткий ответ
Пользователей группируют по когорте — дате или неделе первого попадания в эксперимент — и сравнивают метрику (например, недельное удержание) для каждой когорты отдельно по группам A и B, что позволяет увидеть, устойчив ли эффект по времени и не искажён ли он смешиванием пользователей с разным 'стажем' в тесте.
Как это работает подробнее
Как это работает: без когортной разбивки агрегированная метрика на конкретную календарную дату смешивает пользователей, которые в тесте неделю, и тех, кто в тесте всего день — это может маскировать или искусственно усиливать эффект (например, из-за novelty effect у новых когорт).
Ожидаемый результат: таблица retention-кривых по когортам и группам; sanity check — для каждой когорты retention должен монотонно не возрастать с ростом day_since_entry (это нормальное поведение удержания).
Пример кода
SELECT
group_name,
DATE_TRUNC('week', first_seen_date) AS cohort_week,
day_since_entry,
AVG(is_retained) AS retention
FROM ab_user_cohorts
GROUP BY group_name, cohort_week, day_since_entry
ORDER BY cohort_week, day_since_entry;Что использовать на практике
- На практике: когортный анализ особенно важен для метрик удержания и LTV, где релевантен 'возраст' пользователя в продукте/тесте, а не календарная дата; визуализируют обычно как retention curve по дням с момента входа в тест, раздельно для A и B.
Подводные камни
- Частые ошибки: сравнение 'текущего' среднего удержания по всем пользователям теста на дату отчёта без учёта того, что когорты разного возраста находятся на разных точках своей retention curve — это даёт смещённую и нестабильную во времени оценку.