Добавить в корзинуПозвонить
Найти в Дзене

A/B-тестирование: как правильно проводить и интерпретировать результаты

Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в IT. Никакой сухой теории, только личный опыт, рабочие инструменты и грабли, на которые я уже наступил за вас. Рад, что вы здесь! A/B-тестирование — это когда ты сравниваешь две версии чего-то (например, сайта или рекламы), чтобы понять, какая лучше работает. Как аналитик данных, мне доводилось проводить такие тесты, но как мне кажется это больше задача Продуктовых аналитиков. Я проводил A/B тесты не так много, но успел понять: без правильного подхода это просто игра в угадайку. Расскажу, как проводить A/B-тесты (в частности как это делаю я) и что значат их результаты, разберу на простом примере, но его можно применить к подавляющему большинству задач по A/B. Представь: ты маркетолог, и надо выбрать, какой баннер на сайте привлечёт больше кликов. Вариант A — красный баннер, вариант B — синий. Ты показываешь их разным группам пользователей и смотришь, какой сработал лучше. Это и есть
Оглавление

Всем привет! Я — практикующий исследователь данных, и на этом канале делюсь тем, что реально работает в 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 выросла, но оказалось, что в тестовый период была акция. Это исказило данные.
Процесс A/B-теста
Процесс A/B-теста

Лайфхаки

  • Считай размер выборки заранее (есть калькуляторы, например, Evan Miller’s).
  • Проверяй группы на схожесть (возраст, поведение) до теста.
  • Используй 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-фишек!