10 мифов об A/B-тестировании

10 мифов об A/B-тестировании



Иногда эти заблуждения кажутся безобидными, но на деле могут привести к серьёзным ошибкам. Как не попасть в самые популярные ловушки: 10 советов Дили Хакимовой и Натальи Тогановой из экспериментальной платформы Laba в Яндекс Go.

P. S. Примеры ищите на GitHub.


1. При A/B-тестировании можно использовать необработанные данные о событиях

❌ Данные о событиях часто не являются независимыми. Если анализировать их напрямую, повышается вероятность ошибок первого рода. Например, при корректной проверке нулевой гипотезы p-значения должны быть равномерно распределены, но в случае необработанных событий этого не происходит. В результате выводы теста становятся ненадёжными.


✅ Чтобы устранить зависимости в данных, перед анализом агрегируйте данные на уровне пользователя. Например, используйте агрегатный набор из суммы соответствующих метрик для каждого пользователя.


2. Агрегация на уровне пользователя подходит для всех метрик


❌ Эта агрегация не всегда подходит для метрик-отношений — например, для метрики уровня принятия (принятые поездки / общее количество поездок). Проблема в том, что такие метрики сложно корректно перенести на уровень отдельного пользователя. Если агрегировать числитель и знаменатель по каждому пользователю, а затем вычислить отношение, получится другой показатель.


✅ Случайным образом разбейте пользователей на бакеты, рассчитайте соотношение в каждом из них и проанализируйте агрегированные результаты.

➕ Чем короче векторы для анализа, тем проще вычисления.

➖ Для бакетов нужны экспериментальные группы одинакового размера — важно сохранять одинаковое количество бакетов.


Линеаризуйте. Создайте квазиметрику — линейную комбинацию числителя и знаменателя.

➕ Метрика ведёт себя так же, как и исходник.

➖ Труднее интерпретировать: значения метрики отличаются от исходника.


✅ В Яндекс Go мы работаем с более продвинутым методом: два вектора на пользователя для числителя и знаменателя + дельта-метод для оценки дисперсии. Тогда нулевая гипотеза — равенство не средних значений, а общих соотношений.

➕ Сохраняется интерпретируемость.

➖ Усложняются вычисления.


3. Для применения t-критерия требуется нормальное распределение данных


❌ Важно, чтобы распределение выборочного среднего было приблизительно нормальным. Благодаря центральной предельной теореме это достигается естественным образом: при достаточно большом размере выборки, независимо от распределения исходных данных.


✅ Ориентируйтесь на размер выборки. Если она недостаточная, используйте методы, которые учитывают особенности исходного распределения данных.


4. Чтобы решить проблему, достаточно просто удалить выбросы данных


❌ В тестовой и контрольной группах выбросы могут определяться по-разному: если их просто удалить, согласованность распределений нарушится и сместит результаты.


✅ Не удаляйте выбросы: они могут содержать ценную информацию. Уменьшите их влияние: попробуйте внести статистические корректировки. Введите единый порог удаления выбросов для тестовой и контрольной выборок, замените экстремальные значения фиксированным пределом или используйте методы типа CUPED, которые учитывают изменчивость без изменения набора данных.


5. U-критерий Манна — Уитни проверяет различия средних значений


❌ На самом деле критерий сравнивает сами распределения, а не их средние значения. Он чувствителен к различиям в форме распределений, из-за чего может показывать статистически значимые различия даже тогда, когда средние значения групп совпадают.


✅ Используйте U-критерий Манна — Уитни, когда вам нужно понять различия в общем распределении. Для сравнения средних используйте t-критерий.


6. Небольшие выборки можно «починить» с помощью бутстрепа


❌ Маленькая выборка может недостаточно хорошо представлять генеральную совокупность. Внутренняя изменчивость остаётся высокой, и ни один статистический метод, включая бутстреп, не может полностью компенсировать этот эффект.


✅ Лучшее решение — пересмотреть проект эксперимента и собрать больше данных. Альтернативой могут быть байесовские методы, но они тоже не подходят для маленьких выборок.


7. Статистически незначимые метрики не важны


❌ Без них не получится представить более широкую картину. Есть риск получить слишком широкие доверительные интервалы или найти тренды в незначительных данных.


✅ Оценивайте все ключевые бизнес-метрики, независимо от их статистической значимости. Используйте доверительные интервалы для анализа изменчивости и более взвешенной оценки потенциальных рисков и возможностей.


8. Чем больше метрик, тем лучше


❌ Больше метрик ≠ более достоверные результаты. Лишние данные перегружают анализ и увеличивают число ложноположительных результатов.


✅ Фокусируйтесь только на метриках, напрямую связанных с целями эксперимента. Если необходимо больше параметров, используйте методы контроля групповой вероятности ошибки, чтобы уменьшить риск ложных выводов.


9. Статистическая мощность не так уж важна


❌ Низкая мощность увеличивает риск ошибок второго рода: если всегда ограничиваться стандартным ориентиром в 80%, можно пропустить эффект. Особенно это критично в зрелых продуктах, где ожидаемые изменения часто малы (например, на уровне 0,5–1%).


✅ Планируйте мощность заранее, чтобы не запускать тесты, которые с высокой вероятностью не приведут к достоверным выводам.


10. Можно остановить эксперимент, когда результаты станут выглядеть достаточно значимыми


❌ Если не установить правило остановки заранее, вы рискуете столкнуться с p-хакингом и обнаружить несуществующую закономерность.


✅ Заранее определяйте продолжительность эксперимента и не останавливайте его преждевременно без веских причин (например, соображения безопасности или критические бизнес-риски). Если остановка всё же необходима, используйте методы последовательного анализа, такие как альфа-распределение, чтобы контролировать вероятность ошибок.


Сталкивались с каким-нибудь из этих мифов или с чем-то ещë более экзотическим? Делитесь в комментариях к посту!

Report Page