🎃🎃Это место похоже на Халлоуин🎃🎃Канал нарядился для празднования 🧛Дня всех святых👻. Вот вам по случаю страшилка на ночь.
Представьте, что вы рассчитываете необходимый размер выборки для A/B-теста. Допустим для простоты, все фичи оказывают один и тот же по величине эффект на метрику. По старой оккультной традиции вы используете эффект из прошедших
успешных экспериментов в качестве MDE. Так как истинный эффект вам недоступен, вы подставляете вместо него наблюдаемый. А ещё так уж вышло, что вы не читали мой пост про
ошибку типа M, как и не читали
статью от AirBnB про 💀
Проклятие победителя💀. И, как следствие, не знаете, что в среднем наблюдаемые стат. значимые эффекты завышают истинный эффект.
В итоге вас засасывает в вечный круговорот:
🕷Вы используете в среднем завышенный эффект в качестве MDE
🧟♂️Рассчитанный размер выборки оказывается меньше, чем нужно
🔪Реальная мощность теста становится меньше желаемых 80%
🥀Полученный наблюдаемый эффект в новом эксперименте, окажись он стат. значимым, в среднем будет завышать истинный эффект еще сильнее, чем раньше
⚰️Вы возвращаетесь к шагу с пауком и используете только что полученный эффект для нового расчета MDE
👹Ваша мощность постепенно снижается и из 80 превращается в 5!
Бу!На самом деле на практике всё чуть менее страшно. Я проверил
на симуляциях такой сетап:
- Выборки из экспоненциального распределения с параметром scale = 1000
- Истинный эффект всегда +10 и всегда аддитивный
- Проводим серию из 300 экспериментов
- В первом эксперименте при расчете размера выборок подставляем +10 в качестве MDE, чтобы исходная мощность была равна в точности 80%
- В последующих экспериментах рассчитываем размер выборки одним из 4 способов:
♦️
last_statsig - берем в качестве MDE последний наблюдаемый стат. значимый эффект (самый первый эффект +10 тоже считаем стат. значимым)
♠️
avg_last5_statsig - берем в качестве MDE среднее по последним 5 наблюдаемым стат. значимым эффектам (пока стат. значимых эффектов меньше 5, берем сколько есть)
♦️
avg_statsig - берем в качестве MDE среднее по всем наблюдаемым стат. значимым эффектам
♠️
avg - берем в качестве MDE среднее всем эффектам (в том числе не стат. значимым)
- На каждом шаге фиксируем значение, используемое в качестве целевого MDE, полученный размер выборки и реальную мощность (для истинного эффекта, равного +10)
- Проводим 200 таких серий из 300 экспериментов, усредняем значения для каждого из 300 шагов
- Как водится в индустрии для всего этого используем двусторонний критерий, но считаем эффект стат. значимым, только если он в добавок ко всему положительный (красные тесты никто не катит). Размер выборки и реальную мощность считаем как для одностороннего теста, потому что по-другому сложно.
Результаты на графиках. Видно, что все подходы, которые считают MDE по стат. значимым наблюдаемым эффектам, достаточно быстро начинают завышать истинный эффект, что ведет к снижению размера выборки и мощности. Интересно, что мощность при этом не падает к 5%, а стабилизируется на уровне 50-60%. Если же использовать среднее значение по всем наблюдаемым эффектам, то мощность так и будет колебаться в районе 80%. Нравится.