ИнтВиз

Теория вероятностей · модуль 13 из 14

A/B-тест: значим ли рост конверсии

Новая кнопка «Купить» (вариант B) против старой (A). Задайте истинный эффект и число пользователей в каждой группе. Симуляция покажет, что увидит аналитик и как часто тест находит эффект.

  • оценка A
  • оценка B
  • пунктир — истинная конверсия
  • значимые повторы

Теория

В A/B-тесте пользователи случайно делятся на две группы по $n$ человек. Группа A видит старый вариант, группа B — новый. Число покупок в группе — биномиальная случайная величина, а наблюдаемые конверсии $\hat p_A$ и $\hat p_B$ отличаются от истинных $p_A$ и $p_B$ из-за случайного шума.

z-тест для двух долей. Гипотеза $H_0$: $p_A = p_B$. При её выполнении статистика

$$ z = \frac{\hat p_B - \hat p_A}{\sqrt{\bar p (1 - \bar p) \cdot 2 / n}}, \qquad \bar p = \frac{\hat p_A + \hat p_B}{2}, $$

приближённо имеет стандартное нормальное распределение. p-value — вероятность получить такое же или большее $|z|$ при отсутствии эффекта: $p = 2\,(1 - \Phi(|z|))$. Результат считается значимым при $p < 0{,}05$, что соответствует $|z| > 1{,}96$.

Ошибки. Если эффекта нет, около 5% тестов всё равно покажут значимый результат — это ошибка первого рода. Если эффект есть, тест может его не заметить — ошибка второго рода. Мощность — вероятность обнаружить существующий эффект. Для мощности 80% при уровне значимости 5% нужно примерно

$$ n \approx \frac{(z_{0,975} + z_{0,8})^2 \bigl(p_A(1 - p_A) + p_B(1 - p_B)\bigr)}{(p_B - p_A)^2} \approx \frac{7{,}85\,\bigl(p_A(1 - p_A) + p_B(1 - p_B)\bigr)}{(p_B - p_A)^2} $$

пользователей в каждой группе. Необходимый объём выборки растёт обратно пропорционально квадрату эффекта.

Где это применяется в IT

Продуктовые команды так проверяют изменения интерфейса: половина пользователей видит вариант A, половина — B. Статистика отличает реальный эффект от случайного шума.

  • Значимость. $p < 0{,}05$ означает, что без реального эффекта такая разница встречалась бы реже, чем в 5% случаев.
  • Ложные срабатывания. При нулевом эффекте около 5% тестов всё равно «значимы».
  • Объём выборки. Мощность 80% — стандартный ориентир; маленький эффект требует десятков тысяч пользователей в каждой группе.

Код на Python

Загружаю пример…