A/B-тестирование (split testing) — это мощный инструмент в арсенале дата-аналитика, позволяющий принимать обоснованные продуктовые решения на основе данных. Оно используется для оценки влияния изменений в продукте или интерфейсе на поведение пользователей и ключевые бизнес-метрики.
В A/B-тестировании мы случайным образом разделяем пользователей на две (или более) независимые выборки:
Группа A (Control) — получает текущую версию продукта (baseline).
Группа B (Treatment) — получает модифицированную версию (например, новую фичу или изменённый UI).
Цель — сравнить метрики между группами и оценить, является ли различие статистически значимым.
Рандомизация — критичный этап, обеспечивающий, что различия в поведении обусловлены только тестируемым изменением, а не внешними факторами.
Выбор метрик зависит от бизнес-целей. Метрики делятся на:
Primary metric — основная метрика, по которой принимается решение (например, Conversion Rate).
Secondary metrics — вспомогательные метрики, помогающие интерпретировать результат (например, Bounce Rate, Session Duration).
Guardrail metrics — метрики-защитники, которые не должны деградировать (например, количество жалоб, возвраты товара).
Для проверки гипотезы используется классическая проверка значимости (hypothesis testing).
Нулевая гипотеза H0H_0: Различий между группами нет.
Принимается или отвергается на основе p-value и уровня значимости α\alpha, обычно 0.05.
Также важно учитывать:
Statistical Power (мощность теста): вероятность обнаружить эффект, если он есть.
Effect Size: минимальный практически значимый эффект (например, +1% к CR).
Цель: Проверить, влияет ли изменение текста на CTA-кнопке (“Buy Now” → “Get Yours Now”) на конверсию в заказ.
Метрика: Conversion Rate (CR) = orders / sessions
Population: Все пользователи сайта в течение 2 недель
Split: 50/50 между контрольной и тестовой группами
Группа | Сессии | Заказы | CR (%) |
---|---|---|---|
Control | 10,000 | 1,200 | 12.0 |
Treatment | 10,000 | 1,320 | 13.2 |
Вычисляем p-value с помощью Z-теста пропорций:
Z=p1−p2p(1−p)(1n1+1n2)Z = \frac{p_1 - p_2}{\sqrt{p(1-p)(\frac{1}{n_1} + \frac{1}{n_2})}}
Где:
p1=0.132,p2=0.12p_1 = 0.132, p_2 = 0.12
p=1,200+1,32020,000=0.126p = \frac{1,200 + 1,320}{20,000} = 0.126
Результат: Z≈2.22Z ≈ 2.22, p≈0.026p \approx 0.026
Так как p<0.05p < 0.05, отвергаем H0H_0: изменение статистически значимо.
Multiple Testing: При одновременном тестировании множества гипотез возрастает риск ложноположительных результатов. Не забывайте о корректировке (например, Bonferroni).
Sample Ratio Mismatch: Проверяйте, что разбиение действительно равномерное.
Периодические флуктуации: Избегайте запуска A/B-тестов в аномальные периоды (например, распродажи, праздники).
© Лена Капаца. Все права защищены.