Короткий ответ
Без рандомизации точную причинность установить нельзя, но можно получить разумную оценку эффекта с явными допущениями через difference-in-differences (сравнение изменения retention у затронутой группы с похожей незатронутой/рынком-контролем до и после), синтетический контроль или matching — выбор метода и его ограничения нужно явно обсуждать, единственно верного решения здесь нет.
Как это работает подробнее
diff-in-diff сравнивает изменение метрики "до/после" в группе, где фича была включена, с изменением в контрольной группе (например, другой рынок/платформа, где фичи не было), опираясь на допущение "параллельных трендов" (без фичи обе группы менялись бы одинаково); synthetic control конструирует искусственную контрольную группу как взвешенную комбинацию нескольких непострадавших сегментов, лучше повторяющую довходной тренд.
Проверка: убедиться, что тренды retention на iOS и Android были похожи в периодах до раскатки (plot pre-trend) — иначе допущение diff-in-diff нарушено и оценку нельзя считать надёжной.
Что использовать на практике
- Практика. если фичу включили буквально всем одновременно и нет естественной контрольной группы (например, другой платформы, где раскатка задержалась), доступные методы сильно ограничены — остаётся сравнение с историческим трендом (что слабее, так как не учитывает другие одновременные изменения) или попытка найти "естественный эксперимент" (случайная задержка раскатки по техническим причинам на части пользователей).
Подводные камни
- Частая ошибка. интерпретируют рост после включения фичи как доказанный причинный эффект без проверки параллельных трендов и других одновременных изменений (сезонность, другие релизы); используют diff-in-diff, не проверив, что control-группа действительно сопоставима и не подвержена эффекту фичи косвенно (например, через сетевые эффекты).