Из каких крупных элементов состоит A/B тест
Что проверяют
Понимаете ли вы эксперимент как цепочку решений, где ошибка на любом шаге обесценивает результат. Интервьюер ждёт не список «гипотеза, тест, вывод», а дизайн: метрики, размер выборки, проверку корректности. Следом обычно спрашивают, как посчитать длительность теста и что делать, если результат незначим.
Как отвечать
Крупные блоки такие:
- гипотеза: что меняем, на какую метрику повлияет, в какую сторону и почему мы так думаем;
- метрики: одна целевая, по которой принимается решение, плюс guardrail-метрики, которые не должны просесть (выручка, отказы, скорость загрузки). Если целевая копится слишком медленно, берут прокси-метрику;
- единица рандомизации и сплит: пользователь, устройство или сессия. Единица должна совпадать с уровнем метрики, иначе наблюдения окажутся зависимыми;
- дизайн: уровень значимости (обычно 0,05), мощность (обычно 0,8), минимальный детектируемый эффект (MDE). Из них считается размер выборки, а из трафика длительность. Запускают на целое число недель, чтобы поймать недельную сезонность;
- проверка корректности: A/A-тест на платформе и контроль SRM, то есть расхождения фактического соотношения групп с запланированным (критерий хи-квадрат);
- анализ: t-тест или z-тест для долей, бутстреп для сложных метрик, дельта-метод или линеаризация для метрик-отношений вроде CTR, CUPED для снижения дисперсии;
- решение: внедряем, откатываем или дорабатываем, глядя не только на p-value, но и на размер эффекта и доверительный интервал.
Если есть свой пример, расскажите его по этим блокам: что тестировали, какой был MDE, что показал тест.
Где спотыкаются
Подглядывают в результаты и останавливают тест, как только p-value опустилось ниже 0,05. Доля ложных срабатываний при этом становится заметно выше заявленных 5%. Если смотреть нужно по ходу, используют последовательное тестирование.
Не проверяют SRM. Перекос в сплите говорит о баге в раскатке, и выводы по такому тесту недостоверны.
Считают CTR обычным t-тестом по кликам, когда рандомизация шла по пользователям. Клики одного пользователя зависимы, дисперсия занижена, и значимость появляется там, где её нет.