← Назад к вопросам

Как интерпретировать отрицательный результат A/B теста?

2.0 Middle🔥 251 комментариев
#A/B тестирование#Работа с продуктом и бизнесом

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Интерпретация отрицательного результата A/B теста

Отрицательный результат A/B теста — это не просто "изменение не сработало". Это ценная информация, которая требует внимательного анализа и правильной интерпретации. Вот полное руководство по работе с такими результатами.

Типы отрицательных результатов

1. Статистически значимое ухудшение

Вариант B достоверно хуже варианта A (p-value < 0.05). Действия:

  • Немедленно откатить изменение
  • Провести post-mortem анализ: почему упала конверсия
  • Зафиксировать обучение в документации
  • Добавить anti-pattern в список того, чего избегать

2. Недостаточно данных (insufficient sample size)

Разница между вариантами не статистически значима, но может быть ошибка II типа (false negative). Как различить:

  • Если доверительный интервал (95% CI) не пересекает нулевую линию → результат правдивый
  • Если CI широкий и содержит ноль → нужна больше данных
# Проверка достаточности выборки
from scipy.stats import norm

def check_sample_adequacy(conversions_control, conversions_variant, 
                          total_control, total_variant,
                          desired_power=0.80, alpha=0.05):
    """Проверяет, достаточно ли данных для теста"""
    p1 = conversions_control / total_control
    p2 = conversions_variant / total_variant
    
    effect_size = abs(p2 - p1)
    
    # Текущая statistical power
    z_alpha = norm.ppf(1 - alpha/2)
    pooled_p = (conversions_control + conversions_variant) / (total_control + total_variant)
    se = (pooled_p * (1 - pooled_p)) * (1/total_control + 1/total_variant)
    se = se ** 0.5
    
    z_power = (effect_size - z_alpha * se) / se
    power = norm.cdf(z_power)
    
    return {
        "current_power": power,
        "effect_size": effect_size,
        "adequate": power >= desired_power
    }

3. Нулевой результат с хорошей выборкой

Данных достаточно (high power), но нет разницы. Это означает:

  • Вариант действительно не работает
  • Нужно искать другой подход
  • Отрицательный результат — это знание, что экономит ресурсы

Процедура анализа отрицательного результата

Шаг 1: Проверка качества теста

-- Проверка баланса между группами (Chi-square test)
WITH group_distribution AS (
  SELECT
    variant,
    COUNT(*) as users
  FROM ab_test_assignments
  GROUP BY variant
)
SELECT
  variant,
  users,
  ROUND(100.0 * users / SUM(users) OVER (), 2) as pct
FROM group_distribution;

-- Результат: обе группы должны быть ~50/50
-- Если нет → проблема с рандомизацией

Шаг 2: Анализ сегментов

Результат может быть отрицательным в целом, но положительным для подгруппы:

-- Проверка по пользовательским сегментам
SELECT
  device_type,
  variant,
  COUNT(*) as users,
  COUNT(CASE WHEN converted THEN 1 END) as conversions,
  ROUND(100.0 * COUNT(CASE WHEN converted THEN 1 END) / COUNT(*), 2) as conversion_rate
FROM ab_test_events
GROUP BY device_type, variant
ORDER BY device_type, variant;

Если вариант хорош для мобильных, но плох для десктопа → не отклоняйте, а сегментируйте

Шаг 3: Анализ по времени

-- Проверка, не было ли проблем на определённом отрезке
SELECT
  DATE(event_timestamp) as date,
  variant,
  COUNT(CASE WHEN converted THEN 1 END) * 100.0 / COUNT(*) as conversion_rate
FROM ab_test_events
GROUP BY DATE(event_timestamp), variant
ORDER BY date, variant;

Если результат ухудшился в определённый день → могла быть технологическая проблема

Шаг 4: Проверка на побочные эффекты

  • Вторичные метрики: проверьте, улучшилась ли другая метрика (например, engagement вырос, но конверсия упала)
  • Долгосрочные эффекты: может быть краткосрочное падение с долгосрочным выигрышем
  • Качество пользователей: может быть вариант привлёк худших пользователей

Как документировать отрицательный результат

Шаблон документации:

## Тест: [Название]

### Гипотеза
[Что вы ожидали]

### Результат
- Контрольная группа: 5.2% конверсия (n=50,000)
- Вариант: 4.9% конверсия (n=50,000)
- p-value: 0.23 (не значимо)
- Статистическая мощность: 82%

### Интерпретация
Данных достаточно (power > 80%), различие не значимо. Вариант не работает.

### Выучено
- [Anti-pattern 1]: Пользователям не нравится [что-то]
- [Инсайт 2]: Следующий раз попробовать [альтернатива]

### Следующие шаги
1. Откатить в продакшене
2. Провести юзер тестирование для выяснения причины
3. Спланировать следующий эксперимент

Не совершайте эти ошибки

Игнорировать отрицательный результат

  • Это знание, которое экономит время
  • Документируйте и делитесь с командой

Останавливать тест раньше, потому что результат плохой

  • Это peeking problem в обратном направлении
  • Может быть, завтра тренд развернётся

Ловить на результатах подгрупп (p-hacking)

  • Если вы ищете любую подгруппу, где вариант выигрывает, вы совершаете ошибку
  • Нужна коррекция на множественное сравнение

Менять гипотезу после результата

  • "Я думал про конверсию, но смотрите на engagement!" — не подходит
  • Все метрики нужно выбрать перед тестом

Как превратить отрицательный результат в победу

  1. Быстрое обучение — экономит месяцы на неправильных направлениях
  2. Укрепление доверия к процессу — нет давления выигрывать, есть давление учиться
  3. Культура экспериментов — команда видит, что отрицательные результаты нормальны
  4. Портфель экспериментов — при 5-10 тестах в месяц, половина будет отрицательной (это нормально)

Помните: отрицательный результат при достаточной выборке — это успех науки, а не неудача продукта.

Как интерпретировать отрицательный результат A/B теста? | PrepBro