A/A-тест дал значимость на чистой выборке — selection bias, подглядывание или невезение?
A/A-тест гоняет одинаковый опыт в обоих плечах — любой «победитель» это чистый шум. Разберите вывод ниже.
Ограничения: α = 0.05, two-proportion z-test, запланированный прогон 14 дней, детерминированное назначение по пользователю.
A/A-тест — одинаковый опыт в обоих плечах
Плечо A: 40 102 пользователя, конверсия 4.81%
Плечо B: 40 061 пользователь, конверсия 5.02%
Two-proportion z-test: p = 0.036 (значимо при alpha = 0.05)
Data QA: без NULL, сплит 50.05 / 49.95, дублей пользователей нет
Вызов: остановлено на первом p < 0.05, на 4-й день из 14
Назовите причину ложной значимости и фикс.
У A/A-теста нет реального эффекта, поэтому p = 0.036 ожидаем — при α = 0.05 значимость случайно даёт 5% чистых A/A-тестов. Ключ — подглядывание (peeking): остановка на первом p < 0.05 раньше горизонта раздувает долю ложных срабатываний. Сбалансированный сплит исключает selection bias.
- ✗Читать любой одиночный значимый A/A как сломанный пайплайн
- ✗Считать повторные дневные просмотры независимыми и безвредными
- ✗Забывать, что доля ложных срабатываний 5% относится и к A/A-тестам
- →Как методы sequential testing контролируют проблему подглядывания?
- →Какая проверка sample-ratio подтвердит, что сплит и правда сбалансирован?
A/A-тест сравнивает одинаковый опыт, поэтому истинный эффект нулевой, а любое «различие» — шум. При α = 0.05 сама конструкция теста допускает 5% ложных срабатываний под нулевой гипотезой, так что одиночный p = 0.036 ожидаем и сам по себе ничего не доказывает. Настоящая проблема — как тест остановили.
Почему p = 0.036 — не сигнал:
- нулевой эффект → под H0 около 5% тестов дают p < 0.05
- остановка на первом p < 0.05, день 4 из 14 → многократный просмотр
- многократные просмотры без коррекции → реальный FPR ≈ 15-30%, а не 5%
Проверки по порядку:
- сплит 50.05 / 49.95 на 80k → χ² не значим → SRM нет → не selection bias
- довести до дня 14 ИЛИ sequential-тест с alpha-spending (напр. O'Brien-Fleming)
- реплицировать на свежих данных: настоящий A/A НЕ должен оставаться значимым
Вывод: причина — подглядывание (остановка на первом значимом взгляде), а не смещение отбора и не баг данных. Не объявляйте различие; доведите тест до горизонта или примените последовательный критерий, затем перепроверьте на свежем A/A.