Продуктовая аналитика (IT)Продуктовый аналитик

Каким методом следует оценивать причинно-следственный эффект внедрения функции совместного просмотра каталога в реальном времени (co-browsing) на конверсию и средний чек, если внедрение происходит постепенно по когортам пользователей, существуют сетевые эффекты между участниками сессии (контаминация между тестом и контролем), а принятие функции коррелирует с существующими социальными связями внутри платформы?

Проходите собеседования с ИИ помощником Hintsage

Ответ на вопрос

Исторический контекст. Концепция co-browsing перекочевала из B2B-сектора (поддержка клиентов) в социальную коммерцию (например, функции «Shop Together» в мобильных приложениях). Традиционная аналитика долго опиралась на предположение SUTVA (Stable Unit Treatment Value Assumption), предполагающее независимость пользователей. Однако социальные функции нарушают это предположение, так как обработка одного пользователя влияет на поведение его связей, что делает классические A/B-тесты методологически некорректными.

Постановка проблемы. Стандартное сравнение средних (difference-in-means) дает смещенную оценку из-за interference (взаимного загрязнения): пользователи из контрольной группы, приглашенные друзьями из тестовой, изменяют поведение, создавая spillover-эффект. Самоотбор по социальной активности искажает распределение ковариат, а поэтапный rollout (staggered adoption) вносит временные конфаундеры, такие как сезонность и эффект новизны, которые коррелируют с временем подключения когорт.

Подробное решение. Необходимо применить кластерную рандомизацию (cluster randomized trial) на уровне графа социальных связей, используя алгоритмы выявления сообществ (Louvain или Leiden) для создания кластеров с минимальной связностью между ними. При невозможности полной рандомизации используйте разностную разность с разнонаправленным внедрением (staggered DiD), корректируя гетерогенные эффекты через методы Callaway-Sant’Anna или Sun-Abraham, которые корректно обрабатывают отрицательные веса ранних когорт. Для изоляции прямого эффекта от сетевого примените моделирование экспозиции (exposure mapping): определите степень «заражения» контрольной группы как долю друзей в тесте и включите это как ковариату в регрессию, или используйте 2SLS (двухшаговый МНК) с инструментальной переменной (доступность функции по географическому кластру как IV для фактического использования). Для анализа времени до конверсии подойдет модель Кокса с фrailty-эффектами (shared frailty model), учитывающая кластеризацию рисков внутри социальных групп.

Ситуация из жизни

Описание проблемы. Маркетплейс запустил функцию «Покупай вместе», позволяющую двум пользователям одновременно просматривать каталог и редактировать общую корзину в реальном времени. Пилот на 10% аудитории показал рост конверсии на 8%, но команда подозревала завышение оценки: пользователи из контрольной группы получали приглашения от друзей из тестовой, что создавало межгрупповую контаминацию. К тому же функцией пользовались преимущественно те, у кого уже были установленные социальные связи (самоотбор по вовлеченности).

Вариант 1: Простое сравнение «до/после» на группе адаптеров. Этот подход предполагает сравнение метрик пользователей, начавших использовать co-browsing, с их же историческими данными или с похожими пользователями без функции. Плюсы очевидны: расчет занимает минуты, легко интерпретируется бизнесом, не требует сложной инфраструктуры экспериментов. Однако минусы критичны: метод полностью игнорирует сезонность и эффект созревания, а также страдает от смещения самоотбора, поскольку социально активные пользователи изначально обладают более высокой базовой конверсией.

Вариант 2: Intent-to-Treat (ITT) анализ с рандомизацией доступности кнопки. Здесь мы случайным образом предоставляем возможность приглашать друзей разным когортам, независимо от того, воспользуются ли они ей, и сравниваем итоговые метрики. Плюсы включают сохранение статистической случайности назначения и возможность оценить общий эффект политики запуска, включая сетевые внешности. Минусы связаны с размыванием эффекта из-за несоответствия: многие получат доступ, но не будут использовать функцию, что требует увеличения выборки в 3-4 раза; кроме того, ITT не отвечает на вопрос об эффективности для реальных пользователей (TOT).

Вариант 3: Regression Discontinuity Design (RDD) по порогу количества друзей. Метод использует резкий порог (например, 5 друзей) для активации функции, создавая квазиэксперимент вокруг точки отсечения. Плюсы состоят в локальной случайности назначения около порога и отсутствии необходимости в полной рандомизации всей аудитории. Однако существуют существенные минусы: эффект локален только для «пограничных» пользователей, возможна манипуляция (накрутка фейковых друзей), и метод не решает проблему контаминации между пользователями с разных сторон порога, если они состоят в связях.

Выбранное решение и обоснование. Был выбран вариант 2 с кластерной рандомизацией: аналитики построили граф социальных связей, применили алгоритм Лувена для выделения плотных сообществ, и рандомизировали доступ на уровне сообщества, а не пользователя. Это минимизировало контаминацию между тестом и контролем. Для оценки использовали модель с переменными экспозиции: для каждого пользователя рассчитали долю друзей в тестовых кластерах (интенсивность spillover) и включили как регрессор. Это позволило разделить прямой эффект функции и косвенное влияние через социальное доказательство.

Итоговый результат. Истинный прямой эффект (TOT) составил +3.2% к конверсии (вместо 8% в сырой оценке). Однако был выявлен значимый положительный spillover на контрольную группу (+1.8%), вызванный социальным влиянием приглашений. Общий эффект политики (ITT) оказался +2.1%. Без учета сетевых эффектов команда бы недооценила ценность функции, отклонив проект как «недостаточно эффективный», тогда как с учетом spillover функция окупалась за 4 месяца.

Что кандидаты часто упускают

1. Почему стандартный A/B-тест дает смещенную оценку при социальных функциях? Стандартный тест предполагает SUTVA: воздействие на одного пользователя не влияет на других. При co-browsing это нарушается: контрольный пользователь, получив приглашение от тестового, изменяет поведение (spillover), создавая interference bias. Оценка ATE (Average Treatment Effect) становится взвешенной смесью прямого и косвенного эффекта, часто стремящейся к нулю. Решение: использовать кластерную рандомизацию (randomization at network-cluster level) или методы inverse probability weighting для корректировки на структуру сети.

2. Как статистически разделить direct effect, spillover effect и total effect? Кандидаты путают ITT (Intent-to-Treat) и TOT (Treatment-on-Treated): ITT оценивает эффект предложения функции всей когорте, включая тех, кто ею не воспользовался, в то время как TOT изолирует эффект для реальных пользователей. Для разделения эффектов применяют Principal Stratification (принципиальная стратификация): классифицируют пользователей по типам комплаентности (compliers, always-takers) и оценивают CACE (Complier Average Causal Effect). Spillover оценивается через exposure mapping, где интенсивность косвенного воздействия проксируется долей связей в тесте. Total effect является взвешенной суммой direct и indirect эффектов по распределению экспозиции.

3. Почему стандартный DiD (Difference-in-Differences) некорректен при staggered rollout? При поэтапном внедрении ранние когорты служат контролем для поздних, но поздние никогда не служат контролем для ранних, создавая проблему отрицательных весов (negative weighting) при гетерогенных эффектах. Классический двухпериодный DiD в таком дизайне дает смещенные оценки, так как смешивает эффекты разных периодов с неверными весами. Вместо него следует использовать Callaway-Sant’Anna или Sun-Abraham estimators, использующие только never-treated или not-yet-treated наблюдения в качестве контроля. Альтернатива — Synthetic Control Method для каждой когорты отдельно, построенный на донорском пуле never-treated групп.