Статистическая мощность: почему тест не находит эффект, который есть
Что такое мощность A/B-теста, как она связана с размером выборки и MDE, как посчитать нужное число участников и почему «незначимо» на слабом тесте ничего не доказывает.
Содержание статьи
Мощность — это вероятность заметить эффект, если он действительно есть. Величина скучная на вид и решающая на практике: тест с низкой мощностью выдаёт «разницы не обнаружено» независимо от того, работает изменение или нет, и команда закрывает рабочие гипотезы, ничего о них не узнав. Разберём, как её считать до запуска и как проверить задним числом, чего вообще стоил результат.
Коротко
Мощность связывает четыре величины: размер эффекта, объём выборки, порог значимости и вероятность его увидеть. Зафиксируйте три — четвёртая определится сама.
- Стандартный ориентир — 80%: в одном случае из пяти реальный эффект останется незамеченным.
- Мощность считают до запуска, исходя из минимального эффекта, который вам интересен.
- Чем меньше эффект, который нужно поймать, тем быстрее растёт требуемая выборка — квадратично.
- «Незначимо» на слабом тесте не закрывает гипотезу: тест физически не мог её проверить.
- Считать мощность по уже полученному эффекту бессмысленно — это переписывание результата другими словами.
Две ошибки, между которыми выбирают
В эксперименте возможны два промаха. Первый — объявить эффект там, где его нет; его вероятность и есть порог значимости, обычно 5%. Второй — не заметить эффект, который есть; его вероятность обозначают β, а мощность равна 1 − β.
Эти ошибки обмениваются друг на друга. Ужесточая порог значимости, вы реже поднимаете ложную тревогу и одновременно чаще пропускаете настоящие изменения. Единственный способ уменьшить обе — собрать больше данных.
Практический смысл в том, чтобы выбирать соотношение осознанно. Для необратимой миграции дороже ложная тревога. Для дешёвой продуктовой гипотезы дороже пропуск: вы навсегда закроете направление, которое работало.
| Ситуация | Эффект есть | Эффекта нет |
|---|---|---|
| Тест сказал «есть» | верное решение | ложная тревога (α, обычно 5%) |
| Тест сказал «нет» | пропуск (β) | верное решение |
Считаем выборку до запуска
Расчёт начинается не с формулы, а с вопроса: какой минимальный эффект нам вообще интересен. Это MDE — minimum detectable effect. Он берётся из экономики, а не из статистики: прирост, начиная с которого изменение окупает разработку и поддержку.
Дальше всё определено. Для конверсии около 21% и желания поймать прирост в 6 процентных пунктов при пороге 5% и мощности 80% нужно примерно 792 участника в каждой группе. Для мощности 90% — уже около 1060.
Ключевая зависимость — квадратичная: чтобы поймать вдвое меньший эффект, нужно вчетверо больше данных. Именно поэтому «поймать прирост в полпроцента» на небольшом трафике обычно недостижимо, и честнее сказать это до старта, чем месяц собирать данные ради заведомо пустого ответа.
n ≈ (z(α/2) + z(β))² · (p₁(1−p₁) + p₂(1−p₂)) / (p₂ − p₁)²z(α/2) = 1,96 при пороге 5%; z(β) = 0,84 для мощности 80% и 1,28 для 90%.
Что было бы, если бы мы посчитали заранее
Вернёмся к тесту из финальной главы курса: по 500 участников в группе, конверсия 21% против 27%. Результат вышел значимым, p = 0,026, и на первый взгляд всё в порядке.
Но если посчитать мощность этого дизайна, получится около 61%. То есть при таком объёме групп эксперимент замечал бы шестипунктовый прирост лишь в трёх случаях из пяти — а в двух показывал бы «разницы не обнаружено» при том же самом работающем чеклисте.
Вывод не в том, что результату нельзя верить: он получен и подтверждён интервалом. Вывод в том, что дизайн был рискованным — и если бы чеклист не сработал так заметно, команда с высокой вероятностью закрыла бы верную гипотезу. При 792 участниках в группе шанс увидеть тот же эффект был бы 80%.
Расчёт для базовой конверсии 21% и порога значимости 5%. Пунктирный ориентир практики — 80%.
Если трафика физически не хватает
Расчёт часто выдаёт число, которого у продукта просто нет: 800 участников в группе при сотне регистраций в неделю означают четыре месяца ожидания. Это нормальная ситуация, и у неё есть несколько честных выходов — кроме одного, самого популярного и худшего.
Худший — всё равно запустить на неделю и прочитать результат как настоящий. Тест ничего не измерит, но создаст ощущение проверенного решения, и команда будет ссылаться на него ещё полгода.
Рабочие варианты выглядят иначе. Можно поднять MDE: согласиться, что маленькие приросты вы ловить не будете, и проверять только крупные изменения — тогда и выборка нужна меньше. Можно сменить метрику на более раннюю и частую: клик по кнопке случается в разы чаще покупки, и на нём чувствительность выше. Можно объединить несколько слабых сигналов в одну составную метрику. Наконец, можно вообще не ставить эксперимент: при малом трафике десять пользовательских интервью дают больше, чем формально проведённый, но бессильный тест.
Отдельно стоит вариант «ждать дольше». Он работает, но линейно по времени и квадратично по точности: чтобы вдвое сузить обнаружимый эффект, ждать придётся вчетверо дольше — и за это время продукт, аудитория и сезон успеют измениться, что добавит собственных искажений.
| Вариант | Что получаем | Чем платим |
|---|---|---|
| Поднять MDE | решение за разумный срок | мелкие улучшения останутся невидимыми |
| Более ранняя метрика | выше частота события | связь с деньгами становится косвенной |
| Ждать дольше | та же чувствительность | сезонность и изменения продукта |
| Отказаться от теста | быстрое качественное понимание | нет количественной оценки эффекта |
Мощность нужна не только в A/B-тестах
Та же логика работает в обычной аналитике, где никакого эксперимента нет. Сравнивая конверсию двух каналов, retention двух когорт или показатели до и после релиза, вы делаете статистическое сравнение — просто без рандомизации.
Практический эффект тот же: на маленьком сегменте разница в несколько пунктов не отличима от шума, и радоваться ей нельзя. В нашем учебном примере из курса когорты были по четыре человека — там один вернувшийся пользователь двигает retention на 25 пунктов, и никакой вывод о динамике по таким числам не строится.
Поэтому у любого разреза стоит спрашивать размер. Простое правило: рядом с процентом всегда показывать числитель и знаменатель. «33% против 66%» звучит как двукратная разница, а «1 из 3 против 2 из 3» сразу показывает, что обсуждать нечего.
И помните про обратную сторону на больших данных: там статистически различимо почти всё, включая разницу, которая не стоит ни рубля. Мощность защищает от ложного спокойствия, порог полезности — от ложной тревоги; нужны оба.
Почему нельзя считать мощность после теста
Соблазнительная идея: получить незначимый результат, подставить наблюдаемый эффект в формулу и сообщить «мощность была всего 12%, поэтому мы ничего не увидели». Такой расчёт называют наблюдаемой мощностью, и он не несёт новой информации.
Причина в том, что наблюдаемая мощность — просто другая запись того же p-value: большое p всегда даст низкую наблюдаемую мощность, маленькое — высокую. Вы не получаете второго независимого аргумента, а повторяете первый.
Полезный вопрос после эксперимента формулируется иначе: какие значения эффекта мы теперь можем исключить. На него отвечает доверительный интервал. Если он идёт от −1 до +9 пунктов, вы не исключили почти ничего; если от −0,3 до +0,4 — исключили всё практически значимое.
Как поднять мощность, не удваивая трафик
Увеличить выборку — не единственный путь, и не всегда доступный. Есть несколько приёмов, которые дают больше чувствительности на тех же данных.
Первое — снизить разброс метрики. Конверсия менее шумная, чем выручка на пользователя; промежуточный шаг воронки менее шумный, чем итоговая покупка. Часто разумно проверять гипотезу на более близкой к изменению метрике, а деньги держать как guardrail.
Второе — убрать из выборки тех, кого изменение не касается физически. Если чеклист видят только новые пользователи, включать в расчёт всю аудиторию значит разбавлять эффект шумом от тех, на кого он не действует.
Третье — учесть предэкспериментальное поведение. Методы вроде CUPED используют данные пользователя до теста, чтобы убрать часть естественного разброса; на метриках с историей это заметно сужает интервалы без единого дополнительного пользователя.
И четвёртое, самое простое: не дробить тест на десяток вариантов. Каждая дополнительная ветка забирает трафик и снижает мощность сравнения, ради которого всё затевалось.
- Метрика ближе к изменению и с меньшим разбросом.
- Аудитория без тех, на кого изменение не действует.
- Учёт поведения до эксперимента (CUPED и аналоги).
- Меньше веток — больше данных на каждое сравнение.
Материалы по теме

MDE и размер выборки: как понять, хватит ли данных для A/B-теста
Что такое MDE, как он связан с размером выборки и длительностью эксперимента, почему маленький тест не может доказать большой продуктовый вывод.

Доверительный интервал: как показать, насколько точна ваша цифра
Что означает 95% доверительный интервал для конверсии и разницы конверсий, как его посчитать, почему он важнее p-value и какая формулировка про него неверна.

p-value простыми словами: что он показывает и чего не доказывает
Что на самом деле измеряет p-value, почему 0,05 — не граница истины, как читать его вместе с доверительным интервалом и что делать, когда результат «незначим».