Вы спокойно работаете, и тут к вам приходит продакт с вопросом по A/B-тесту, который запустили две недели назад. «Ну что, мы уже набрали достаточно трафика? Можно подводить итоги?».

И всё бы ничего, но есть нюанс: на встречу по дизайну этого эксперимента вас позвать забыли. Длительность никто не считал, MDE (Minimum Detectable Effect) не фиксировал.

Чтобы ответить на вопрос продакта, вам нужно посчитать MDE с учетом текущего размера выборки и дисперсии, а затем сравнить его с порогом практической значимости. Выгружать сырые данные только ради того, чтобы посчитать дисперсию в моменте — занятие довольно муторное, особенно если речь идет о неконверсионных (непрерывных) метриках. Даже на highload-проектах, где данных море, тратить время на лишние ETL-операции ради промежуточного чека совсем не хочется.

Но, к счастью, у вас под рукой есть A/B-платформа, которая уже услужливо посчитала доверительный интервал. Например, она показывает вам отложенный эффект: 2% ± 1.5%.

Держите лайфхак: берем половину ширины доверительного интервала (те самые 1.5%), умножаем на 1.43 и получаем наш текущий MDE.

Давайте разберем математику, которая за этим стоит.

Почему это работает? Вспоминаем матстат

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

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

  1. От нуля до критического значения (Critical Value, CV) — это порог нашей статистической значимости.

  2. От критического значения до центра распределения альтернативной гипотезы (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-канале!