A/B-тесты · РезультатБайесовский A/B-тест

Байесовский A/B-тест онлайн: вероятность, что B лучше A, ожидаемые потери при выборе каждого варианта и достоверный интервал прироста. До 10 вариантов, конверсии или средние, равномерное априорное или по прошлым данным, правило остановки по порогу потерь — и сравнение с классическим тестом на тех же данных. Код Python и R.

Цифры остаются в браузере и никуда не отправляются

01Данные02Результат03Распределения04Сравнение05Код06Примеры07Вопросы08Похожие
01

Данные

Что сравниваем

Посетители и конверсии по вариантам — до 10. Первый — контроль A. Два варианта считаются точно, больше — Монте-Карло, 20 000 розыгрышей.

ВариантПосетителейКонверсий
A
B
Априорное распределение

Тест можно останавливать, когда ожидаемые потери при выборе лидера ниже порога — сколько вы готовы потерять, если он на самом деле хуже.

02

Результат

Можно выбирать B.
Вероятность, что B лучше A, — 95,4 %. Если B окажется хуже, в среднем потеряем 0,0013 п.п. — меньше порога 0,010 п.п.
Вероятность, что B лучше A
95,4 %
точная формула
Потери при выборе B
0,0013 п.п.
0,06 % конверсии B
Потери при выборе A
0,1213 п.п.
6,06 % конверсии A
Интервал прироста B к A
−0,9 % … +13,4 %
достоверный интервал, 95 %
Апостериорная конверсия B
2,121 %
Beta(1 697; 78 305)
Априорное
Beta(1; 1)
равномерное

Байесовский результат легче объяснять, но он не отменяет подглядывания и SRM: если останавливаться на первом удачном числе или трафик поделился криво, вывод так же ненадёжен.

Проверить перекос трафика

03

Распределения

Апостериорные распределения
Где, скорее всего, лежит настоящая конверсия каждого варианта
AB1,86 %1,96 %2,06 %2,17 %2,27 %
04

Сравнение

Двусторонний z-тест: p = 0,091 — разница не доказана. Байесовская вероятность близка к 1 − p одностороннего теста (95,4 %): подходы видят одни данные, но формулируют вывод по-разному.

Байес и классический тест на тех же данных
ВопросКлассическийБайесовский
Что отвечаетНасколько данные необычны, если эффекта нетНасколько вероятно, что B лучше
Решениеp < αПотери лидера < порога
ПодглядываниеЛомает αТоже вредит, но мягче
05

Проверить в Python / R

Проверить в Python / R
import numpy as np

rng = np.random.default_rng(7)
a = rng.beta(1601, 78401, 200_000)
b = rng.beta(1697, 78305, 200_000)
print((b > a).mean())               # P(B > A)
print(np.maximum(a - b, 0).mean())  # потери при выборе B
06

Примеры

07

Частые вопросы

Классический тест отвечает, насколько необычны данные, если эффекта нет: это p-value. Байесовский — какова вероятность, что B лучше A, и сколько можно потерять, выбрав его. Для 1 600 и 1 696 конверсий из 80 000 классический двусторонний p = 0,091, «не доказано», а байесовская вероятность — 95,4 %. Противоречия нет: это ответы на разные вопросы об одних данных.

Обновлено