Размер выборки и мощность теста
«Сколько нужно пользователей» - вопрос, отделяющий того, кто запускает тесты, от того, кто их планирует. Проверяют понимание мощности: недомощный тест не покажет эффект, даже если он есть, и потратит две недели трафика впустую.
Типовые формулировки: «как считаешь размер выборки?», «тест две недели незначим - эффекта нет?», «почему нельзя просто взять MDE поменьше?».
// Практический детектор - как раз второй вопрос. Правильная реакция звучит так: может, эффекта нет, а может, не хватило мощности, и различить это можно только по доверительному интервалу. Отсутствие доказательства не есть доказательство отсутствия.
Четыре числа, связанные одним уравнением
Уровень значимости α - назначенный заранее риск объявить эффект там, где его нет. Обычно 0.05: один ложный прокрас на двадцать пустых тестов.
Мощность (1−β) - вероятность заметить эффект, который на самом деле есть. Обычно берут 0.8, и это стоит прочитать буквально: из десяти реально работающих фич такой тест поймает восемь, а две объявит незначимыми и похоронит. Мощность 0.8 - вовсе не «почти всегда», это довольно много промахов, с которыми согласились ради разумного размера выборки.
MDE (minimum detectable effect) - минимальный эффект, который тест обязан детектировать. n - размер выборки на группу.
// Все четыре связаны одним уравнением: зафиксируй любые три, четвёртое определится само. На практике α и мощность фиксируют как соглашение, MDE берут у бизнеса, считают n. Обратный ход тоже законен: при известном трафике посмотреть, какой минимальный эффект вообще по силам, и честно сказать, что меньший поймать нечем.
- ошибка второго рода (β)
- пропустить реальный эффект. Мощность и есть 1−β: чем меньше выборка, тем чаще так промахиваешься
Что раздувает выборку: на числах
Формула в сжатом виде: n ∝ σ²/MDE². Дисперсия метрики в числителе, желаемый эффект в знаменателе, и в квадрате.
Конкретика для базовой конверсии 5 процентов при α = 0.05 и мощности 0.8. Ловить относительный прирост в 20 процентов (с 5.0 до 6.0) - около 7 500 человек на группу. Прирост в 10 процентов (с 5.0 до 5.5) - около 30 000. Прирост в 5 процентов (с 5.0 до 5.25) - около 119 000.
Уменьшил MDE вдвое - выборка выросла вчетверо. Это и есть квадрат в знаменателе, и именно поэтому охота за микроэффектами упирается в трафик, которого нет. Прирост в один процент относительно на такой конверсии потребует миллионов пользователей на группу.
// Дисперсия работает так же прямолинейно: шумная метрика прожорлива. Выручка на пользователя с тяжёлым хвостом, где один крупный покупатель перевешивает тысячу обычных, требует кратно больше данных, чем бинарная конверсия. Отсюда два честных рычага - задавать MDE от практической значимости, а не «поменьше на всякий случай», и резать дисперсию.
Недомощный тест опаснее, чем кажется
Даже когда нужное n набралось за пару дней, тест держат недельными циклами - иначе в измерение попадёт только будничная аудитория, а на выходных ведут себя иначе. Плюс первые дни искажает эффект новизны, всплеск интереса к любому изменению как таковому.
Недомощный тест плох тем, что выглядит нормальным. Он выдаёт «незначимо», это читают как «эффекта нет», и закрывают работающую фичу.
Отличить одно от другого можно, и способ ровно один - смотреть доверительный интервал эффекта. Интервал от −0.1 до +0.2 процента говорит: эффекта правда нет, всё существенное исключено. Интервал от −5 до +7 процентов говорит: мы не узнали ничего, тест был слишком мал. Оба результата называются «незначимо», а выводы из них противоположные.
// Обратная сторона той же медали: тест на огромном трафике поймает статистически значимый прирост в 0.02 процента, который бизнесу не нужен. Статистическая значимость и практическая - разные вещи, и MDE как раз проводит между ними границу заранее.
Как отвечать: «Как определить нужный размер выборки для теста?»
Иду от уравнения мощности. Фиксирую α = 0.05 и мощность 0.8, беру базовое значение метрики и её дисперсию из исторических данных, а MDE обсуждаю с продактом - какой минимальный прирост вообще стоит внедрения. Дальше калькулятор даёт n на группу, деление на дневной трафик даёт срок. Если срок выходит за разумные рамки, я не занижаю MDE - это самообман, - а снижаю дисперсию через CUPED (controlled experiment using pre-experiment data), стратификацию или более чувствительную метрику. И всё равно держу тест хотя бы полный недельный цикл ради сезонности, даже если выборка набралась раньше. Порядок величин помню на пальцах: при конверсии около 5 процентов ловля относительного прироста в 10 процентов - это примерно тридцать тысяч человек на группу.
Показан весь путь: откуда берутся все четыре числа, что делать при нехватке трафика (резать дисперсию, а не подгонять MDE) и почему нельзя останавливаться сразу по набору n. Числа в конце показывают, что кандидат это считал.
На чём валят
- −Запустить тест без расчёта выборки и получить либо недомощный тест, либо впустую слитый трафик.
- −Задать MDE «сколько поймаем» вместо бизнес-порога: получится либо ловля незначимого, либо недостижимая выборка.
- −Прочитать незначимый результат недомощного теста как доказательство отсутствия эффекта.
- −Не учесть тяжёлый хвост метрики: реальная мощность окажется заметно ниже расчётной.
- −Остановить тест на второй день, потому что n набралось: потеряна недельная сезонность и не остыл эффект новизны.
Проверьте себя
Пять вопросов из банка по этой подтеме. Всего их 13, остальные разбираются в тренажёре.
- Тест на 500 пользователях показал «не значимо». Что корректно из этого заключить?A)Эффекта точно нет — фичу можно смело откатыватьB)Значимость появится, если пересчитать по односторонней гипотезеC)Нужно продлить тест до появления p < 0.05D)Возможно, тест недомощный и просто не увидел реальный эффект
показать ответ и разбор
+D)Возможно, тест недомощный и просто не увидел реальный эффект// разбор: «Не значимо» на малой выборке чаще всего означает нехватку мощности: тест не смог отличить эффект от шума, а не доказал его отсутствие. Отсутствие доказательства — не доказательство отсутствия. Правильно — оценить, на какой MDE тест был мощным; крутить одностороннюю гипотезу или ждать прокраса — подгонка.
- Хотим ловить вдвое меньший эффект, чем планировали. Как примерно изменится нужный размер выборки?A)Вырастет вчетверо: выборка обратно пропорциональна квадрату MDEB)Удвоится: выборка обратно пропорциональна MDEC)Практически не изменится: размер выборки от целевого MDE не зависитD)Уменьшится вдвое: меньший эффект ловить проще
показать ответ и разбор
+A)Вырастет вчетверо: выборка обратно пропорциональна квадрату MDE// разбор: Размер выборки обратно пропорционален квадрату MDE: n ∝ 1/MDE². Уменьшив целевой эффект в 2 раза, увеличиваешь требуемую выборку примерно в 4 раза. Поэтому охота за крошечными эффектами быстро упирается в недостижимый трафик — MDE стоит задавать от практической значимости, а не «поменьше на всякий случай».
- От чего, кроме MDE, сильнее всего зависит требуемый размер выборки?A)От числа вариантов в интерфейсе фичиB)От дисперсии метрики: чем она выше, тем больше нужно данныхC)От конкретного времени суток и дня недели, когда стартовал тестD)От того, платящий пользователь или бесплатный
показать ответ и разбор
+B)От дисперсии метрики: чем она выше, тем больше нужно данных// разбор: В формуле n ∝ σ²/MDE² дисперсия метрики стоит в числителе: шумная метрика требует больше наблюдений для того же MDE. Поэтому берут менее дисперсные метрики и применяют снижение дисперсии (CUPED, стратификация). Тяжелохвостая метрика вроде выручки на юзера особенно прожорлива по выборке.
- Зачем считать размер выборки ДО запуска, а не смотреть по ходу?A)Чтобы заранее согласовать бюджет эксперимента с финансовым отделом компанииB)Расчёт до старта требуется регламентом ФАСC)Чтобы заранее знать, хватит ли трафика поймать интересующий эффектD)Иначе тест не получится остановить досрочно
показать ответ и разбор
+C)Чтобы заранее знать, хватит ли трафика поймать интересующий эффект// разбор: Расчёт мощности до теста отвечает на главный вопрос: реально ли при нашем трафике за разумный срок поймать эффект нужного размера. Без него запускают либо недомощный тест (никогда не прокрасится, даже если эффект есть), либо переливают трафик. А смотреть значимость «по ходу» до набора выборки — это peeking, раздувающий ложные срабатывания.
- От чего правильнее отталкиваться при выборе MDE?A)От желаемого p-value, которого хотим достичьB)От того, какой эффект мы способны поймать при текущем трафикеC)От величины эффекта, замеченной на первых днях тестаD)От практического порога: какой прирост вообще стоит внедрения
показать ответ и разбор
+D)От практического порога: какой прирост вообще стоит внедрения// разбор: MDE задают от бизнес-смысла: ниже какого прироста результат не окупает внедрение и поддержку. Если так посчитанный MDE требует недостижимой выборки — это честный сигнал, что тест не по силам, а не повод занизить MDE. Отталкиваться «сколько поймаем» — значит гоняться за эффектами, которые всё равно не важны, а смотреть на первые дни — ловушка подглядывания.
дальше
Теорию прочитали. Навык ставится повторением
В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.