Короткий ответ
Сначала отделите быстрый аудит данных от статистического решения. Покажите текущий эффект и качество разбиения, но явно укажите, что просмотр результата после многократного peeking не сохраняет обычный уровень ошибки, а ранний подъём может быть novelty effect.
Как это работает подробнее
Минимальная проверка включает размеры групп, sample ratio mismatch, динамику метрики и числа пользователей по дням. Если план эксперимента, минимальный detectable effect и правило остановки не были заданы заранее, обычный p-value нельзя использовать как безусловное доказательство победы.
Стабильность эффекта по дням помогает обнаружить краткосрочный всплеск, но сама по себе не исправляет peeking. Для последовательного мониторинга нужен заранее выбранный sequential-тест или alpha-spending.
Пример кода
WITH daily AS (
SELECT event_date, variant, COUNT(DISTINCT user_id) AS users,
AVG(metric_value) AS metric
FROM experiment_metrics
WHERE experiment_id = 'exp_42'
GROUP BY event_date, variant
)
SELECT event_date,
MAX(CASE WHEN variant = 'B' THEN users END) AS users_b,
MAX(CASE WHEN variant = 'A' THEN users END) AS users_a,
MAX(CASE WHEN variant = 'B' THEN metric END)
- MAX(CASE WHEN variant = 'A' THEN metric END) AS absolute_lift
FROM daily
GROUP BY event_date
ORDER BY event_date;Что использовать на практике
- Зафиксируйте статус результата. Назовите его предварительным, перечислите выполненные и невыполненные проверки.
- Проверьте SRM. Сопоставьте наблюдаемые размеры групп с ожидаемым распределением и расследуйте отклонения.
- Покажите временной профиль. Сравните эффект по дням и когортам, а не только одно итоговое число.
Подводные камни
- Подтверждение желаемого вывода. Аналитик должен проверять гипотезу, а не подгонять критерий под уже объявленную победу.
- Обычный p-value после остановки на удачном срезе. Он занижает риск ложноположительного решения.
- Слишком короткий тест. Он может отражать день недели или временный интерес к новинке.