A/B тест: Анализ результатов эксперимента
Условие
Проведён A/B тест нового дизайна кнопки покупки.
Группа A (контроль): 10000 пользователей, 320 конверсий. Группа B (тест): 10000 пользователей, 380 конверсий.
- Проверьте статистическую значимость разницы
- Рассчитайте доверительный интервал
- Дайте рекомендацию по внедрению
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
A/B тест: Анализ результатов эксперимента
1. Расчёт конверсионных показателей
Группа A (контроль):
- Конверсия: 320 / 10000 = 3.2%
Группа B (тест):
- Конверсия: 380 / 10000 = 3.8%
Прирост: (380 - 320) / 320 = 18.75% относительное улучшение
2. Проверка статистической значимости (двухвыборочный z-тест)
Нулевая гипотеза H₀: Конверсии групп одинаковы (p_A = p_B) Альтернативная гипотеза H₁: Конверсии различаются (p_A ≠ p_B)
Расчёт:
- p_A = 320 / 10000 = 0.032
- p_B = 380 / 10000 = 0.038
- Объединённая доля: p_pool = (320 + 380) / 20000 = 0.035
- Стандартная ошибка: SE = √[p_pool(1-p_pool) × (1/10000 + 1/10000)] = √[0.035 × 0.965 × 0.0002] ≈ 0.00583
- z-статистика: z = (0.038 - 0.032) / 0.00583 ≈ 1.03
- p-value ≈ 0.303 (двусторонний)
Вывод: p-value > 0.05, различие НЕ статистически значимо на уровне 5%.
3. Доверительный интервал (95%)
Для разницы пропорций: Δp ± z₀.₀₂₅ × SE_diff
SE_diff = √[(p_A(1-p_A)/n_A) + (p_B(1-p_B)/n_B)] = √[(0.032×0.968/10000) + (0.038×0.962/10000)] ≈ 0.00582
Доверительный интервал: (0.038 - 0.032) ± 1.96 × 0.00582 = 0.006 ± 0.0114
Интервал: [-0.0054; 0.0174] (или -0.54% до 1.74%)
Нуль входит в интервал → различие не значимо
4. Размер выборки и статистическая мощность
Для надёжного обнаружения эффекта 0.6% (с α=0.05, β=0.2, мощность 80%) требуется: n ≈ 2 × 15500 ≈ 31000 пользователей на группу
На текущем объёме (10000 каждая) мы имеем мощность ~20%, что недостаточно.
5. Рекомендация
РЕКОМЕНДАЦИЯ: Не внедрять на основании текущих данных
Причины:
- Разница в 0.6 п.п. не статистически значима (p-value 0.303)
- Доверительный интервал включает ноль
- Статистическая мощность теста недостаточна (20%)
- Возможно, это шум, а не реальный эффект
Дальнейшие действия:
- Продолжить тест до 31000 пользователей на группу для достижения 80% мощности
- После накопления данных пересчитать статистику
- Если эффект подтвердится → внедрить
- Если эффекта нет → отклонить вариант B
6. Код анализа (Python)
import numpy as np
from scipy import stats
# Данные
n_a, converts_a = 10000, 320
n_b, converts_b = 10000, 380
# Конверсии
p_a = converts_a / n_a
p_b = converts_b / n_b
print(f"Конверсия A: {p_a:.4f}")
print(f"Конверсия B: {p_b:.4f}")
print(f"Прирост: {(p_b - p_a) / p_a * 100:.2f}%")
# Двухвыборочный z-тест
p_pool = (converts_a + converts_b) / (n_a + n_b)
se = np.sqrt(p_pool * (1 - p_pool) * (1/n_a + 1/n_b))
z_stat = (p_b - p_a) / se
p_value = 2 * (1 - stats.norm.cdf(abs(z_stat)))
print(f"\nz-статистика: {z_stat:.4f}")
print(f"p-value: {p_value:.4f}")
print(f"Значимо (α=0.05): {p_value < 0.05}")
# Доверительный интервал 95%
se_diff = np.sqrt(p_a*(1-p_a)/n_a + p_b*(1-p_b)/n_b)
ci_lower = (p_b - p_a) - 1.96 * se_diff
ci_upper = (p_b - p_a) + 1.96 * se_diff
print(f"\n95% CI: [{ci_lower:.4f}; {ci_upper:.4f}]")
Итог: Набранных данных недостаточно для принятия решения. Требуется продолжить тестирование.