Ответ
Чтобы оценить неопределённость в оценке конверсии (например, доля кликнувших) и разницы между группами, мы используем либо аналитические распределения, либо бутстреп. Это позволяет строить доверительные интервалы и визуализировать overlap.
1. Бета-распределение (Аналитический подход)
Если в группе было k конверсий из n пользователей, то апостериорное распределение конверсии p (при uniform prior) описывается Бета-распределением: Beta(α = k + 1, β = n - k + 1). Это стандартный байесовский подход.
import numpy as np
from scipy.stats import beta
import matplotlib.pyplot as plt
# Данные теста: группа A
conversions_A, visitors_A = 120, 1000
conversions_B, visitors_B = 150, 1000
# Параметры бета-распределений
alpha_A, beta_A = conversions_A + 1, visitors_A - conversions_A + 1
alpha_B, beta_B = conversions_B + 1, visitors_B - conversions_B + 1
# Генерация выборок из распределений
dist_A = beta(alpha_A, beta_A)
dist_B = beta(alpha_B, beta_B)
samples_A = dist_A.rvs(10000)
samples_B = dist_B.rvs(10000)
# Разница в конверсии
diff_samples = samples_B - samples_A
prob_B_better = (diff_samples > 0).mean()
print(f"Вероятность, что группа B лучше: {prob_B_better:.2%}")
# Визуализация
plt.hist(samples_A, bins=50, alpha=0.5, label='Group A', density=True)
plt.hist(samples_B, bins=50, alpha=0.5, label='Group B', density=True)
plt.legend()
plt.xlabel('Conversion Rate')
plt.show()
2. Бутстреп (Непараметрический подход) Полезен, когда предположения аналитической модели сомнительны, или для более сложных метрик (например, средний чек).
def bootstrap_mean(data, n_bootstrap=10000):
"""data - бинарный массив (0/1)."""
boot_means = []
n = len(data)
for _ in range(n_bootstrap):
sample = np.random.choice(data, size=n, replace=True)
boot_means.append(sample.mean())
return np.array(boot_means)
# Пример с реальными данными (бинарные клики)
clicks_A = np.array([1,0,0,1, ...]) # массив длины visitors_A
boot_means_A = bootstrap_mean(clicks_A)
# 95% доверительный интервал через процентили
ci_lower, ci_upper = np.percentile(boot_means_A, [2.5, 97.5])
Выбор метода:
- Бета-распределение — быстрее, элегантнее, стандарт для бинарных конверсий.
- Бутстреп — более универсален, не делает предположений о форме распределения, но требует больше вычислений.