АналитикаАнализ данныхАналитик данных

Команда рандомизировала пользователей, но в анализе считает каждую сессию независимым наблюдением. Как это ...

Команда рандомизировала пользователей, но в анализе считает каждую сессию независимым наблюдением. Как это повлияет на проверку гипотезы?

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

Краткий ответ

Такой анализ обычно занижает стандартную ошибку, потому что сессии одного пользователя зависимы. В результате доверительные интервалы становятся слишком узкими, а вероятность ложноположительного вывода о наличии эффекта возрастает.

Исторический контекст

Классические статистические методы часто выводились для независимых наблюдений. В цифровых продуктах один пользователь обычно создаёт несколько событий или сессий, поэтому данные имеют кластерную структуру: наблюдения внутри пользователя связаны общими свойствами и историей поведения.

Для таких данных появились методы анализа повторных измерений и кластеризованных выборок. Их цель — учитывать фактическую единицу независимости, которой в эксперименте обычно является пользователь, а не отдельная сессия.

Постановка проблемы

Если рандомизация выполнена на уровне пользователя, назначение варианта для всех его сессий одинаково. Сессии одного пользователя нельзя считать полноценными независимыми подтверждениями эффекта: они могут быть похожи по интенсивности использования, намерению купить, устройству и другим характеристикам.

При игнорировании зависимости размер выборки искусственно выглядит больше реального. Оценка среднего эффекта может остаться разумной, но его неопределённость будет занижена. Особенно опасна ситуация, когда небольшая группа очень активных пользователей создаёт значительную часть сессий.

Подробное решение

Сначала нужно определить единицу рандомизации, единицу анализа и целевой показатель. Если вариант назначался пользователю, корректно строить метрику на уровне пользователя: например, долю пользователей с покупкой или число покупок на пользователя за заданный период.

Другой вариант — оставить сессии, но использовать метод, учитывающий кластеризацию по пользователю: кластерно-робастные стандартные ошибки, модели со случайными эффектами или рандомизационный анализ на уровне пользователей. Выбор зависит от estimand, структуры данных и требований к интерпретации.

Важно различать две проблемы. Игнорирование зависимости приводит к неверной оценке неопределённости, а расчёт метрики на уровне сессий может дополнительно изменить сам объект оценки: результат будет описывать среднюю сессию, а не среднего пользователя. Если активные пользователи имеют больше сессий, сессионная метрика сильнее взвешивает именно их.

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

Ситуация из практики

В сервисе вариант эксперимента назначается пользователю на две недели. Часть пользователей за период создаёт одну сессию, а часть — десятки. Аналитик сравнивает конверсию по сессиям и получает узкий интервал, потому что считает все сессии независимыми.

Рассматривались три подхода. Оставить сессии без изменений проще всего, но это повышает риск ложной значимости. Удалить все сессии, кроме первой, уменьшает зависимость, однако теряет информацию и меняет поведение, которое измеряется. Агрегировать данные до пользователя и сравнить долю пользователей с целевым действием сложнее для метрик с повторными событиями, зато соответствует единице рандомизации и ясно интерпретируется.

Выбранным решением было использовать основную метрику на уровне пользователя, а для дополнительной метрики числа действий применить кластерно-робастную оценку по пользователю. Это устранило искусственное увеличение эффективного размера выборки и позволило отдельно интерпретировать пользовательский эффект и интенсивность использования.

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

1. Достаточно ли агрегировать все сессии пользователя в одно наблюдение?

Не всегда. Агрегация устраняет зависимость между сессиями внутри пользователя, но выбор агрегируемой метрики определяет estimand. Среднее число заказов на пользователя, доля пользователей с заказом и средняя выручка на пользователя отвечают на разные вопросы. Кроме того, пользователи могут иметь разное время экспозиции, поэтому период наблюдения должен быть сопоставимым.

2. Что произойдёт, если число сессий у пользователя зависит от варианта?

Сессионный анализ может одновременно отражать эффект варианта на удержание или активность и эффект на целевое действие. Пользователи с большим числом сессий получают больший вес, поэтому сравнение может смешивать изменение состава сессий с изменением поведения внутри сессии. Нужно заранее определить целевой уровень оценки и не использовать посттритментное число сессий как неявный вес без обоснования.

3. Почему кластерно-робастные стандартные ошибки не всегда полностью решают проблему?

Они корректируют оценку неопределённости при зависимости внутри кластеров, но не исправляют неверно выбранную метрику или смещение из-за отбора сессий. При малом числе пользователей-кластеров такие оценки также могут быть ненадёжны. Поэтому важно учитывать не только способ расчёта стандартной ошибки, но и единицу рандомизации, целевой параметр и достаточное число независимых кластеров.