Вы спокойно работаете, и тут к вам приходит продакт с вопросом по A/B-тесту, который запустили две недели назад. «Ну что, мы уже набрали достаточно трафика? Можно подводить итоги?».
И всё бы ничего, но есть нюанс: на встречу по дизайну этого эксперимента вас позвать забыли. Длительность никто не считал, MDE (Minimum Detectable Effect) не фиксировал.
Чтобы ответить на вопрос продакта, вам нужно посчитать MDE с учетом текущего размера выборки и дисперсии, а затем сравнить его с порогом практической значимости. Выгружать сырые данные только ради того, чтобы посчитать дисперсию в моменте — занятие довольно муторное, особенно если речь идет о неконверсионных (непрерывных) метриках. Даже на highload-проектах, где данных море, тратить время на лишние ETL-операции ради промежуточного чека совсем не хочется.
Но, к счастью, у вас под рукой есть A/B-платформа, которая уже услужливо посчитала доверительный интервал. Например, она показывает вам отложенный эффект: 2% ± 1.5%.
Держите лайфхак: берем половину ширины доверительного интервала (те самые 1.5%), умножаем на 1.43 и получаем наш текущий MDE.
Давайте разберем математику, которая за этим стоит.
Почему это работает? Вспоминаем матстат
MDE — это минимальный эффект, который при многократном повторении эксперимента мы будем фиксировать со статистической значимостью с вероятностью, равной выбранной мощности теста.
Если мы проверяем стандартную нулевую гипотезу об отсутствии разницы, то наш MDE графически и математически отстоит от нуля на сумму двух дистанций:
От нуля до критического значения (Critical Value, CV) — это порог нашей статистической значимости.
От критического значения до центра распределения альтернативной гипотезы (H1) — это зона нашей мощности.
В терминах стандартной ошибки (SE) эта дистанция выглядит так:

Где:

— квантиль стандартного нормального распределения для заданного уровня значимости alpha.

— квантиль для заданной мощности 1-beta.
Давайте подставим дефолтные параметры, которые используются в 99% A/B-тестов: alpha = 0.05 и мощность 80%.

Считаем дистанцию в стандартных ошибках:
Отрезок до CV: 1.96 * SE
Отрезок от CV до MDE: 0.84 *SE
В сумме получаем, что:

Возвращаемся к нашему доверительному интервалу
А теперь посмотрим на доверительный интервал, который нам отдала A/B-платформа (те самые ± 1.5%).
Половина ширины доверительного интервала — это не что иное, как:

Получается простая пропорция. У нас есть доверительный интервал, который равен 1.96 SE, а найти нам нужно MDE, который равен 2.8 * SE.
Делим одно на другое:

Округляем до 1.43. Бинго!
Нам не нужно знать ни дисперсию, ни размер выборки, ни саму стандартную ошибку. Платформа уже всё посчитала за нас, свернув это в ширину доверительного интервала. Нам остается только умножить константу платформы на наш коэффициент.
Важные заметки:
Относительный или абсолютный эффект? Для этого лайфхака совершенно не важно, в каком виде у вас представлен эффект и доверительный интервал (в процентах или в абсолютных значениях метрики). Главное требование — SE платформой должна быть посчитана математически верно.
Зачем это нужно, если дизайн тес��а был? Даже если вы не забыли провести дизайн эксперимента, фактическая дисперсия и реальный размер выборки по факту наливки трафика могут (и будут) отличаться от ваших априорных оценок. Поэтому проделать это минутное упражнение полезно для любого теста, чтобы сверить курс и понять, на какой фактический MDE вы сейчас выходите.
Берегите свое время, не пишите лишний SQL-код там, где можно обойтись одним умножением и делитесь этим трюком с коллегами.
Если вам интересна аналитика как профессия или вы рассматриваете вход в неё осознанно, я делюсь практическими наблюдениями, кейсами и разбором ошибок в своём Telegram-канале!
