Короткий ответ
MDE — минимальный размер эффекта, который тест способен обнаружить с заданной мощностью при заданном размере выборки; выбор MDE напрямую определяет требуемый размер выборки и длительность эксперимента, поэтому его стоит устанавливать исходя из того, какой эффект вообще имеет смысл для бизнеса.
Как это работает подробнее
MDE, размер выборки, мощность и уровень значимости связаны одной системой — зная любые три, можно рассчитать четвёртый; уменьшение MDE (желание находить более тонкие эффекты) требует резкого увеличения выборки, так как размер выборки растёт примерно обратно пропорционально квадрату MDE.
Sanity check: если при доступном трафике мощность для интересующего бизнес эффекта (например, +0.5 п.п.) получается заметно ниже 0.8, стоит заранее предупредить, что тест с высокой вероятностью не покажет значимого результата даже при наличии реального эффекта.
Пример кода
from statsmodels.stats.power import NormalIndPower
from statsmodels.stats.proportion import proportion_effectsize
analysis = NormalIndPower()
available_n = 20000 # доступно пользователей на группу за разумный срок
baseline = 0.05
# подбираем MDE, который реально обнаружим при available_n
for target in [0.052, 0.055, 0.06]:
es = proportion_effectsize(baseline, target)
power = analysis.power(effect_size=es, nobs1=available_n, alpha=0.05, ratio=1)
print(target, power)Что использовать на практике
- MDE стоит определять не из технических соображений «что мы можем себе позволить», а из бизнес-логики — например, «изменение конверсии меньше 0.3 п.п. не окупит затраты на разработку и поддержку фичи». Если расчёт показывает, что для обнаружения такого MDE нужно несколько месяцев трафика, это важный сигнал для обсуждения приоритетов до запуска, а не после. Также полезно явно показать стейкхолдерам график зависимости требуемого размера выборки от выбранного MDE — это наглядно демонстрирует цену более чувствительного теста в днях или неделях трафика.
Подводные камни
- Выбирать MDE постфактум, подгоняя его под уже доступный трафик и желаемую короткую длительность теста
- Тестировать изменения с ожидаемым крошечным эффектом на трафике, который физически не способен его обнаружить за разумное время, и затем интерпретировать незначимый результат как "эффекта нет"
- Не пересчитывать MDE при изменении условий (например, сокращении трафика на фичу из-за параллельных тестов). Ещё одна ошибка — путать MDE с фактически найденным в тесте эффектом — это разные понятия: MDE планируется заранее, а наблюдаемый эффект является результатом уже проведённого теста.