Как рассчитывать доверительные интервалы через x² или бета-распределение
Очень часто, в интернет-маркетинге нам приходится принимать решение на основе малого количества цифр. Я (и это прививаю своей команде) стараюсь принимать решения на основе цифр. Сегодня хочу рассказать про два способа принятия таких решений. В дальнейшем буду ссылаться на эту статью, когда буду разбирать что-нибудь практическое.
Биномиальное распределение
Биномиальное распределение — это распределение исходов, где значение может принимать два значения: «правда» или «ложь» — «1» или «0».
Разберём на примере:
У нас есть посадочная страница, на которую мы заводим пользователей с рекламной кампании. Каждый заход — это испытание. Заход может закончиться оправленной заявкой (конверсия, «ПРАВДА», «1»), или пользователь просто может уйти (ничего, «Ложь», «0»).
Каждое испытание должно быть независимым от предыдущего.
Расчёт через ײ (хи-квадрат)
Формула расчёта доверительного интервала через хи-квадрат выглядит так:
σ×SQRT(КОНВЕРСИЯ×(1-КОНВЕРСИЯ/ВЫБОРКА)
SQRT — корень.
σ — это сигма, среднеквадратичное отклонение. К примеру, для 68% нам нужна 1σ. Вот примеры:
1 сигма — это 68% точности.
1.28 сигмы — это 80% точность.
1.96 сигмы — это 95% точности.
3 сигмы — это 99,72% точности. В интернет-маркетинге такая точность не нужна.
Точность в данном случае — это фактически площадь рассматриваемых результатов. Чем ниже площадь, тем меньше в расчёт попадают аномальные результаты (которые находятся на краях гауссовой кривой).
Рассмотрим пример:
Баннер А — CTR=5%
Баннер Б — CTR=5.5%
На обоих баннерах выборка (показы): 10 000. Какой из этих баннеров лучше с 80% точностью?
Считаем:
σ для 80% = 1.28
Доверительный интервал для Баннера А
1.28 x SQRT(5% × (1 — 5%) / 10 000) = 0.28%
Доверительный интервал для Баннера Б
1.28 × SQRT(5.5% × (1 — 5.5%) / 10 000) = 0.29%
Для «Баннера А» доверительный интервал при такой выборке будет:
CTR(min) = 5% — 0.28% = 4.72%
CTR(max) = 5% + 0.28% = 5.28%
Для «Баннера Б» доверительный интервал будет:
CTR(min) = 5.5% — 0.29% = 5.21%
CTR(max) = 5.5% + 0.29% = 5.79%
Таким образом баннеры с 80% вероятностью не различимы. Они пересекаются на диапазоне между 5.21% и 5.28%. Нужно больше выборки, чтоб доверительный интервал для каждого баннера сузить и выявить победителя.
Расчёт через бета-распределение
В Excel или Google Spreadsheet есть встроенная функция бета-распределения. Формула будет выглядеть так:
=Beta.inv(границы_точности; КОНВЕРСИЙ; ВЫБОРКА — (КОНВЕРСИЯ × ВЫБОРКУ))
Если мы вернёмся к задачке с баннерами, то у нас получатся вот такие формулы
Для Баннера А
CTR(min) = beta.inv(0.1; 5% × 10000; 10000 — 5% × 10000)
CTR(max) = beta.inv(0.9; 5% × 10000; 10000 — 5% × 10000)
Для Баннера Б
CTR(min) = beta.inv(0.1; 5.5% × 10000; 10000 — 5.5% × 10000)
CTR(max) = beta.inv(0.9; 5.5% × 10000; 10000 — 5.5% × 10000)
Получается:
Для баннера А
CTR(min) = 4.72%
CTR(max) = 5.28%
Для баннера Б
CTR(min) = 5.21%
CTR(max) = 5.79%
Результаты расчёта доверительного интервала через ײ и через формулу бета-распределения одинаковые. В случае биномиального расчёта можно использовать любую из этих формул.
Аналогично можно сделать и через Python. Разберём на примере баннера Б:
import scipy.stats as ss
dist = ss.beta(550, 9450)
ctrmin = dist.ppf(0.1)
ctrmax = dist.ppf(0.9)
print("CTRmin: {:2.2%} \nCTRmax: {:2.2%}".format(ctrmin, ctrmax))
Вывод кода выше:
CTRmin: 5.21%
CTRmax: 5.79%