Последовательное тестирование: почему это не волшебная таблетка
Сегодня обсудим матчасть метода, а самое главное — нюанс, из-за которого его не стоит ставить в один ряд с CUPED и стратификацией, вместе с которыми его обычно и перечисляют.
🟡Проблематика
В первой части на симуляциях довольно подробно разобрали, почему ошибка первого рода растет.
Приведу конкретные числа оттуда, доля ложных прокрасов при α = 0.05.
- 1 проверка в конце — 5%
- 2 проверки — 9%
- 5 проверок — 14%
- каждый день, 2 недели — 22%
Подглядывание испортит качество наших A/B тестов, а мы не хотим завышать ошибку первого рода. Нужен метод, который позволит подглядывать корректно (мечта продактов 😏). Но тут есть парочка подводных камней.
🟡Почему нельзя применить просто поправку на множественное тестирование
Каждый раз, при столкновении с множеством тестов возникает очевидное желание – просто выбрать подходящую поправку на множественное тестирование. Например самое простое Бонферрони, либо посмотреть что-то поинтереснее, например поправку Холма (подробнее в посте про поправки).
Однако в данном случае классические способы работают не очень хорошо, так как тесты здесь очень сильно зависимые. В каждом следующем тесте используются те данные, которые уже были, плюс новые данные.
Поправки, рассчитанные на независимые или слабо зависимые тесты, в такой ситуации оказываются излишне консервативными: фактическая ошибка первого рода будет заметно ниже заявленной альфы, а мощность мы потеряем.
Нужен подход, который учитывает последовательную структуру данных. Это и есть sequential testing, последовательное тестирование.
🟡Главная идея
Есть две принципиально разные логики, их важно не путать:
1. Тратим альфу по расписанию. Альфа – верхняя граница вероятности ошибки первого рода на тест, это как бы наш кусочек пирога на весь эксперимент. Можно съесть его целиком в конце: один анализ с α = 0.05. А можно распределить между заранее заданными точками подглядывания, тогда в каждой точке критерий будет строже, а суммарно мы получим ту же альфу.
2. Строим границы, валидные в любой момент. Статистика конструируется так, что вероятность хоть когда-нибудь пересечь границу при верной H₀ не превышает α — сколько бы раз мы ни смотрели. Это семейство always-valid методов.
🟡Практические подходы
Group sequential (alpha spending): Pocock, O'Brien–Fleming
Классика из клинических исследований, где ранняя остановка вопрос этики. Фиксируем число подглядываний заранее, например 4 точки, и получаем для каждой свой критический порог. Pocock тратит альфу равномерно: пороги одинаковые во всех точках, выйти рано проще. O'Brien–Fleming очень строг в начале и почти не отличается от обычного критерия в конце. Стоит использовать, когда есть четкий план теста и считанное количество контрольных точек.
mSPRT (mixture SPRT)
Отношение правдоподобия, усредненное по распределению возможных эффектов. Позволяет смотреть непрерывно, именно это зашито под капотом у ряда коммерческих A/B-платформ. Цена: нужно задать смешивающее распределение, по сути свои ожидания о размере эффекта. Угадали с масштабом — метод работает отлично, промахнулись — теряем мощность.
Confidence sequences (always-valid CI)
Доверительный интервал, корректный одновременно во все моменты времени. Продуктово это самая приятная штука: на дашборде можно рисовать интервал каждый день, и он останется честным, сколько бы раз в него ни посмотрели. Платим шириной, такой интервал заметно шире классического на той же выборке. Важно: он защищает именно от подглядывания во времени, а не от перебора метрик и сегментов, там по-прежнему нужна поправка на множественные сравнения.
🟡Но есть нюанс: халявного ускорения теста подглядыванием не будет
А теперь самое главное. Последовательное тестирование не ускоряет тест само по себе. Оно дает право на раннюю остановку, если эффект окажется крупным. Если эффекта нет или он маленький, тест придется вести дольше, чем при фиксированном дизайне той же мощности. Для 5 проверок это примерно +3% у O'Brien–Fleming и до +20% у Pocock, для mSPRT потери еще больше.
Именно поэтому последовательное тестирование по эффективности не стоит в одном ряду с CUPED и стратификацией, хотя перечисляют их обычно вместе. Те методы уменьшают дисперсию и при правильном применении действительно ускоряют тест. Последовательное тестирование просто сделка: тест будет быстрее на сильных гипотезах и дольше или с меньшей мощностью на всех остальных. Но ведь если гипотеза сильная, то можно увидеть эффект и без последовательного дизайна, просто заложить fixed-horizon с меньшим временем. Велком в комментарии дискутировать!
Формулировка для продакта: мы не ускоряем тест, мы покупаем возможность выйти раньше при большом эффекте, но зато будет дольше в остальных случаях.
А пока по лайку 🐳 с тех, кого продакт просил подглядывать в тест, репост, кто не согласился 🤓
А еще благодарности Сергею Матросову за помощь с объяснением принципа метода 💪
#AB_tests #stats #analytics
Post #241
2.38K
- 🔥 21
- ❤ 6
- 🐳 6
- 👍 4
- 🤯 1