Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь!
A/B-тестирование — это когда ты сравниваешь две версии чего-то (например, сайта или рекламы), чтобы понять, какая лучше работает. Как аналитик данных, мне доводилось проводить такие тесты, но как мне кажется это больше задача Продуктовых аналитиков.
Я проводил A/B тесты не так много, но успел понять: без правильного подхода это просто игра в угадайку. Расскажу, как проводить A/B-тесты (в частности как это делаю я) и что значат их результаты, разберу на простом примере, но его можно применить к подавляющему большинству задач по A/B.
Что такое A/B-тестирование и зачем оно
Представь: ты маркетолог, и надо выбрать, какой баннер на сайте привлечёт больше кликов. Вариант A — красный баннер, вариант B — синий. Ты показываешь их разным группам пользователей и смотришь, какой сработал лучше. Это и есть A/B-тест. Он помогает принимать решения на основе данных, а не интуиции. В бизнесе это спасает: от повышения конверсии до экономии бюджета.
Мой опыт: A/B-тест в ритейле
Задача: увеличить продажи на сайте. Команда предложила поменять кнопку "Купить" с зелёной на оранжевую, думая, что она ярче и заметнее. Я настроил тест:
- Группа A: 50% пользователей видели зелёную кнопку.
- Группа B: 50% — оранжевую.
- Данные собирали две недели, метрика — конверсия (доля пользователей, которые купили).
Результат: оранжевая кнопка дала конверсию 3.2%, зелёная — 2.8%. Но как понять, случайность это или нет? Тут начинается магия статистики.
Как правильно проводить A/B-тест
Шаг 1: Определяем цель и метрику
Цель — что хочешь улучшить? К примеру "увеличить продажи". Метрика — конверсия (покупки / посетители). Выбираем одну главную метрику, чтобы не запутаться. Например, не смешивай клики, покупки и время на сайте.
Шаг 2: Формулируем гипотезу
Гипотеза — это предположение, которое проверяешь. Наша: "Оранжевая кнопка увеличит конверсию, так как она заметнее". Хорошая гипотеза отвечает на вопросы: что меняем, почему и что ждём.
Шаг 3: Разделяем аудиторию
Разделить пользователей на две равные группы случайным образом. Это важно: если в группе A будут только "богатые" клиенты, а в B — "экономные", тест врёт. Я использовал Python для рандомизации:
import numpy as np
users = list(range(10000)) # 10 000 пользователей
np.random.seed(42)
group_a = np.random.choice(users, size=5000, replace=False)
group_b = [u for u in users if u not in group_a]
Шаг 4: Собираем данные
Запусти тест и собери данные. У нас было 10 000 пользователей, по 5 000 в группе. Две недели — достаточно (но нужно оценивать, бывает нужно больше из-за сезонности и др. факторов), чтобы учесть дневные колебания (например, больше покупок в выходные).
Шаг 5: Анализируем результаты
Тут начинается статистика. Конверсия A — 2.8% (140 покупок из 5 000), B — 3.2% (160 покупок). Но как понять, что разница не случайна?
Что такое значимость (p-value)
P-value — это число, которое говорит, насколько вероятно, что разница между A и B — случайность. Если p-value маленькое (обычно < 0.05), разница считается статистически значимой, то есть не случайной. У нас p-value было 0.03 — значит, оранжевая кнопка правда лучше.
Я обычно использую Python (scipy) для расчёта:
from scipy.stats import chi2_contingency
# Таблица: [покупки A, не-покупки A], [покупки B, не-покупки B]
table = [[140, 4860], [160, 4840]]
chi2, p_value, _, _ = chi2_contingency(table)
print(p_value) # 0.03
Интерпретация результатов
- P-value < 0.05: Разница значима, можно доверять результату. У нас оранжевая кнопка победила.
- Размер эффекта: Конверсия выросла с 2.8% до 3.2% — это +14% относительно. Для сайта с 100 000 посетителей это +400 покупок. Стоит ли менять кнопку? Да, если затраты минимальны.
- Проверка ошибок: Убедись, что группы одинаковы (возраст, регион) и нет багов (например, кнопка B не сломалась на мобильниках).
Ещё один пример: с хакатона по аналитике
В рамках задачи на хакатоне в 2024 году мы тестировали тексты для email-рассылки. Вариант A: "Скидка 20% только сегодня!", B: "Эксклюзивное предложение: скидка 20%". Метрика — открываемость писем. Группы по 10 000, тест шёл неделю. Результат: A — 15% открытий, B — 14.5%, p-value = 0.4. Разница незначима (p-value > 0.05), так что текст не влияет. Мы выбрали A, просто потому что он короче.
Частые ошибки
- Маленькая выборка. Если тестировать на 100 пользователях, результат будет шатким. Для конверсии 3% нужно хотя бы 1 000–2 000 в группе.
- Ранний стоп. Не останавливай тест через три дня — данные нестабильны.
- Много метрик. Если следить за 10 метриками, найдёшь "значимость" случайно. Выбирай одну.
- Игнор контекста. У нас конверсия B выросла, но оказалось, что в тестовый период была акция. Это исказило данные.
Лайфхаки
- Проверяй группы на схожесть (возраст, поведение) до теста.
- Используй Python или R для анализа — Excel для сложных тестов слабоват, хотя его можно использовать во многих случаях.
- Документируй гипотезы и результаты — пригодится для отчётов.
- Тестируй одно изменение за раз (цвет кнопки, а не цвет + текст).
Как интерпретировать результаты: просто о сложном
Результаты A/B-теста — это не просто "B лучше". Вот что важно:
- P-value: Если < 0.05, доверяй разнице. Если > 0.05, как в моем примере из хакатона, разницы нет.
- Размер эффекта: +0.4% конверсии — это много или мало? Считай в деньгах: +400 покупок = +400 000 рублей выручки? Тогда ок (но всё относительно).
- Контекст: Акции, праздники, баги могут исказить данные. Проверяй.
- Доверительный интервал: Это диапазон, где лежит "настоящий" результат. Если интервалы A и B пересекаются, разница шаткая.
Пример интервала (Python):
from statsmodels.stats.proportion import proportion_confint
conf_a = proportion_confint(140, 5000, alpha=0.05) # (0.023, 0.033)
conf_b = proportion_confint(160, 5000, alpha=0.05) # (0.027, 0.037)
print(conf_a, conf_b)
Если интервалы не пересекаются, разница значима. У нас не пересекались — оранжевая кнопка победила.
Итоги
A/B-тестирование — это способ принимать решения на данных, а не на "мне кажется, интуиция подсказывает 🥲". Мой первый тест показал, что оранжевая кнопка продаёт лучше, а хакатон напомнил, что не все изменения важны. Главное — чёткая гипотеза, правильная выборка и понимание p-value. Это не ракетостроение, но требует дисциплины. Кстати меня про A/B-тестирование как правило спрашивают и на Аналитика данных и на Продуктового аналитика, поэтому думаю и тем и другим это архиважный навык.
Я не претендую на истину в последней инстанции, просто рассказываю, как иду по пути аналитика. Спасибо, что дочитали! 😎 Подписывайтесь 👇👇👇, лайкайте 👍🏽👍🏽, пишите в комментах пожелания, вопросы, замечания. Буду рад любой активности. Впереди разборы инструментов, навыков и IT-фишек!