Математика для аналитика
Модуль 5 · p-value, мощность, размер выборки

Статистический вывод и A/B-тесты

Самый частый блок вопросов на собеседовании аналитика. Здесь стоит задержаться дольше, чем в остальных модулях.

Прочитано
— из 8
5.1

Выборка, генеральная совокупность и смещение отбора

Любой вывод из данных верен ровно настолько, насколько выборка похожа на ту совокупность, о которой вы собираетесь говорить.

Суть

Генеральная совокупность — это множество всех объектов, о которых вы хотите высказаться: все пользователи сервиса, все заказы за квартал, все поисковые сессии, которые случатся в будущем. Выборка — то подмножество, которое реально попало в вашу таблицу. Статистический вывод — это процедура переноса утверждения с выборки на совокупность, и весь дальнейший аппарат обслуживает один вопрос: насколько такой перенос допустим.

У совокупности есть параметры — истинная доля конверсии из поиска в заказ, истинный средний чек. Их обозначают греческими буквами: π для доли, μ для среднего, σ для стандартного отклонения. Мы их не знаем и не узнаем никогда. По выборке мы считаем оценки — p для доли, x̄ для среднего, s для отклонения. Оценка отличается от параметра по двум причинам, и различать их принципиально важно.

оценка = истинное значение + случайный шум + систематическое смещение

Случайный шум возникает потому, что в выборку попали одни объекты, а не другие. Он неустраним, но управляем: его величина падает пропорционально 1/√n, и весь аппарат доверительных интервалов и p-value описывает именно его. Систематическое смещение возникает потому, что механизм попадания в выборку связан с изучаемой величиной. Оно не падает с ростом n. Миллион наблюдений, отобранных смещённо, даёт узкий доверительный интервал вокруг неверного числа — и это опаснее, чем маленькая честная выборка, потому что выглядит убедительнее.

Что делает выборку репрезентативной

Формально репрезентативность обеспечивается вероятностным отбором: у каждого объекта совокупности есть известная ненулевая вероятность попасть в выборку. Отбор с равными вероятностями даёт всем одинаковые шансы. Стратифицированный отбор делит совокупность на слои (города, тарифы, давность регистрации) и берёт случайную выборку внутри каждого слоя — это снижает шум, если метрика сильно различается между слоями. Кластерный отбор берёт целые группы (например, все заказы одного склада) и, наоборот, шум увеличивает, потому что наблюдения внутри кластера похожи друг на друга.

Выборки, которые аналитик получает по умолчанию, вероятностными не являются. «Первые 10 000 строк» упорядочены по времени и потому смещены в сторону старых клиентов. «Данные за понедельник» смещены по дню недели. «Те, кто ответил на опрос» смещены по вовлечённости. Ни один из этих способов не даёт права писать в отчёте «в среднем по базе».

Три механизма смещения отбора

Первый — ошибка охвата: рамка отбора не совпадает с совокупностью. Вы хотите говорить обо всех посетителях сервиса, а в таблицу сессий с идентификатором пользователя попадают только авторизованные. Неавторизованный посетитель физически не может попасть в такую выборку, и если он ведёт себя иначе, оценка сдвинута.

Второй — самоотбор: объект сам решает, попадать ли в данные. Это опросы, отзывы, добровольные формы обратной связи. В отзывы попадают преимущественно те, у кого опыт был очень хорошим или очень плохим; средний спокойный клиент молчит.

Третий — отбор по выживанию: в данных остаются те, кто дожил до момента измерения. Если вы считаете среднее время жизни клиента только по тем, кто ушёл, вы систематически недооцениваете его, потому что самые лояльные ещё не ушли и в расчёт не попали. Родственная проблема — отсев внутри эксперимента: если в одной группе пользователи чаще бросают сценарий на середине, то сравнение по дошедшим до конца сравнивает уже разные совокупности.

Как это проверяется на практике

Смещение нельзя измерить изнутри выборки — по самим данным они выглядят нормально. Проверка всегда опирается на внешнее знание. Сравните распределение известных характеристик выборки и совокупности: доли по городам, по тарифам, по давности регистрации. Если в базе 40 % клиентов из регионов, а в выборке 12 %, смещение налицо. Посчитайте долю дошедших до измерения: низкая доля отклика сама по себе не доказывает смещения, но резко повышает его вероятность. Опишите в отчёте рамку отбора одной строкой: кто мог попасть в данные и кто не мог. Эта строка ловит больше ошибок, чем любые вычисления.

Пример

Допустим, в мобильном приложении показывают опрос об удобстве новой поисковой выдачи: баннер увидели 500 000 сессий, форму заполнили 18 000 раз — доля отклика 3,6 %. Средняя оценка по ответившим 4,3 из 5. Утверждение «пользователи оценивают выдачу на 4,3» относится не к пользователям, а к тем 3,6 %, кто дошёл до формы. Проверка по внешним данным показывает: среди ответивших 71 % — авторизованные пользователи с заказом за последние 30 дней, тогда как в таблице сессий доля таких сессий 22 %. Выборка сдвинута в сторону активных покупателей, а активные покупатели чаще довольны — оценка 4,3 завышена, и показ баннера ещё пяти миллионам сессий её не исправит.

Частая ошибка

В отчёте пишут «конверсия поиска в заказ — 12 %», а в знаменателе стоит число сессий, дошедших до карточки товара, а не число поисковых сессий. Дошедшие до карточки — самоотобранная подгруппа с уже проявленным намерением, и их конверсия всегда выше. Заметить ошибку помогает одно правило: рядом с любой долей указывайте, что стоит в знаменателе и сколько это в абсолютных числах. Если знаменатель метрики сам зависит от поведения пользователя, метрика не сравнима между периодами и между вариантами теста: новое ранжирование меняет и числитель, и знаменатель одновременно.

Запомнить
  • Случайный шум уменьшается с ростом выборки как 1/√n, систематическое смещение не уменьшается никогда.
  • Смещение задаётся механизмом попадания в данные: охват, самоотбор, выживание, отсев по ходу измерения.
  • По самим данным смещение не видно — его ловят сравнением с внешним знанием о совокупности.
  • В отчёте всегда фиксируйте рамку отбора и знаменатель метрики.
5.2

Стандартная ошибка и доверительные интервалы

Стандартная ошибка переводит размер выборки в точность оценки, а доверительный интервал показывает эту точность в тех же единицах, что и сама метрика.

Суть

Представьте, что вы могли бы повторить сбор данных много раз: каждый раз новая случайная выборка того же размера, каждый раз чуть другая оценка. Множество этих гипотетических оценок образует распределение — выборочное распределение статистики. Его центр совпадает с истинным значением (если отбор не смещён), а разброс и есть стандартная ошибка, SE. Это стандартное отклонение не отдельных наблюдений, а самой оценки.

Различие между σ и SE — источник половины путаницы в отчётах. σ описывает, насколько разные заказы не похожи друг на друга: чек одного 400 рублей, другого 12 000. SE описывает, насколько неточно вы знаете среднее по всем заказам. Первое почти не зависит от того, сколько данных вы собрали; второе падает с ростом n.

SE(x̄) = σ / √n
SE(p) = √(p × (1 − p) / n)

Вторая формула — частный случай первой. Для доли каждое наблюдение равно 0 или 1, и дисперсия такой величины равна p × (1 − p). Отсюда следует неявное на первый взгляд свойство: точность оценки доли зависит от самой доли. При p = 0,5 множитель p × (1 − p) максимален и равен 0,25; при p = 0,04 он равен 0,0384, то есть в шесть с лишним раз меньше. Редкие события измеряются точнее в абсолютных пунктах, но хуже в относительных.

Откуда берётся деление на корень из n

Дисперсия суммы независимых величин равна сумме дисперсий. Сумма n наблюдений имеет дисперсию n × σ². Среднее — это сумма, делённая на n, а при делении величины на константу дисперсия делится на квадрат константы: n × σ² / n² = σ² / n. Извлекаем корень и получаем σ / √n. Отсюда практическое следствие: чтобы удвоить точность, выборку надо увеличить вчетверо. Рост базы с 1 000 до 4 000 сокращает ошибку вдвое, с 4 000 до 16 000 — ещё вдвое.

Ключевое условие здесь — независимость наблюдений. Если один клиент сделал 40 заказов, эти 40 строк не дают 40 единиц информации, и формула занижает SE. Тогда единицей анализа берут клиента, а не заказ.

Как строится доверительный интервал

Центральная предельная теорема утверждает, что при достаточно большом n выборочное распределение среднего близко к нормальному независимо от того, как распределены сами наблюдения. У нормального распределения примерно 95 % массы лежит в пределах 1,96 стандартных отклонений от центра. Отсюда стандартная конструкция:

95 % ДИ = оценка ± 1,96 × SE

Читается интервал так: если повторять всю процедуру много раз, около 95 % построенных интервалов накроют истинное значение. Утверждение относится к процедуре, а не к конкретному интервалу: у уже посчитанного интервала истинное значение либо внутри, либо нет. Для 90 % берут множитель 1,645, для 99 % — 2,576. Более высокая уверенность оплачивается шириной.

Нормальное приближение для долей работает, когда в обеих категориях достаточно наблюдений — практическое правило требует не менее 10 успехов и 10 неуспехов. При 3 конверсиях из 500 приближение ломается, границы могут выйти за пределы отрезка от 0 до 1, и нужен точный метод или бутстрап.

Пример

Из таблицы сессий за сутки взята случайная выборка 40 000 поисковых сессий, заказом закончились 1 680 из них. Оценка конверсии p = 1680 / 40000 = 0,042, то есть 4,2 %. Считаем стандартную ошибку: p × (1 − p) = 0,042 × 0,958 = 0,040236; делим на n: 0,040236 / 40000 = 0,0000010059; корень даёт SE = 0,001003, то есть 0,1003 процентного пункта. Половина ширины интервала: 1,96 × 0,001003 = 0,001966. Итог: 95 % ДИ от 0,042 − 0,001966 = 0,040034 до 0,042 + 0,001966 = 0,043966, то есть от 4,00 % до 4,40 %. Для среднего чека картина та же: при x̄ = 2 450 рублей, s = 1 800 рублей и n = 90 000 заказов получаем SE = 1800 / √90000 = 1800 / 300 = 6 рублей и интервал 2 450 ± 1,96 × 6, то есть от 2 438,2 до 2 461,8 рубля.

Частая ошибка

В отчёте показывают два столбика с подписями 4,20 % и 4,35 % и делают вывод, что новое ранжирование лучше. Без интервалов сравнивать нечего: в примере выше интервал для 4,2 % тянется до 4,40 %, то есть разница укладывается в шум. Заметить проблему помогает привычка писать рядом с каждой цифрой её SE или интервал и смотреть, перекрываются ли они. Обратное правило тоже стоит знать: неперекрытие интервалов означает значимую разницу, но перекрытие само по себе её не отменяет — корректный тест строится по интервалу для разности, а не по двум отдельным интервалам.

Запомнить
  • σ описывает разброс между наблюдениями, SE — неточность оценки; путать их нельзя.
  • SE падает как 1/√n: вчетверо больше данных дают вдвое более узкий интервал.
  • 95 % ДИ = оценка ± 1,96 × SE; уровень 95 % относится к процедуре, а не к отдельному интервалу.
  • Формула для доли требует не менее 10 успехов и 10 неуспехов и независимости наблюдений.
5.3

Гипотезы, ошибки I и II рода, мощность

Проверка гипотезы — это правило принятия решения при неполной информации, и у него есть два вида ошибок, цену которых вы назначаете сами до начала теста.

Суть

Формальная процедура начинается с двух взаимоисключающих утверждений. Нулевая гипотеза H₀ говорит, что эффекта нет: конверсии из поиска в заказ у старого и нового ранжирования равны, средние чеки у двух вариантов карточки товара совпадают. Альтернативная гипотеза H₁ говорит, что эффект есть. Асимметрия здесь намеренная: мы предполагаем отсутствие эффекта и требуем от данных достаточных оснований отказаться от этого предположения. Так устроено потому, что «эффекта нет» — это одно конкретное значение, для которого можно посчитать распределение статистики, а «эффект есть» — бесконечное множество значений.

Логика близка к презумпции невиновности. Мы не доказываем, что H₀ верна; мы либо находим достаточно улик против неё, либо признаём улики недостаточными. Второе не равно оправданию по существу.

Две ошибки и их цена

Решение принимается в мире, где истина нам неизвестна, поэтому возможны две разные ошибки.

Решение / истинаЭффекта нетЭффект есть
Отвергли H₀Ошибка I рода (α)Верное решение (мощность)
Не отвергли H₀Верное решениеОшибка II рода (β)

Ошибка I рода — увидеть эффект, которого нет, и раскатить бесполезное изменение. Её вероятность мы задаём напрямую уровнем значимости α, чаще всего 0,05. Это означает: если эффекта нет, в 5 % повторов теста мы всё равно объявим победу.

Ошибка II рода — не увидеть реальный эффект и отказаться от работающего изменения. Её вероятность β не задаётся напрямую; она следует из размера выборки, величины эффекта и разброса данных. Дополнение к ней и есть мощность.

мощность = 1 − β

Стандартный ориентир — мощность 0,8: тест обнаружит заявленный эффект в 80 % случаев, когда эффект действительно такого размера. Оставшиеся 20 % — доля пропусков, с которой вы согласились заранее.

От чего зависит мощность

Мощность растёт при увеличении размера выборки, при увеличении истинного эффекта, при уменьшении разброса данных и при повышении α. Первые три рычага честные, четвёртый — обмен одной ошибки на другую: подняв α до 0,10, вы удвоите долю ложных срабатываний.

Отсюда важное следствие: минимальный обнаружимый эффект однозначно связан с размером групп. Для доли при α = 0,05 и мощности 0,8 работает приближение

MDE ≈ √(16 × p × (1 − p) / n)

Здесь n — размер одной группы. При базовой конверсии 4 % и группах по 40 000 сессий: 16 × 0,04 × 0,96 = 0,6144; делим на 40 000 — получаем 0,000015360; корень равен 0,00392. То есть тест способен уверенно поймать сдвиг в 0,39 процентного пункта — это 0,39 / 4 ≈ 9,8 % относительного прироста. Изменение ранжирования, дающее прирост на 3 %, такой тест не различит, и отрицательный результат будет говорить о нехватке данных, а не об отсутствии эффекта.

Односторонние и двусторонние гипотезы

Двусторонняя альтернатива утверждает «значения различаются», односторонняя — «вариант B лучше». Односторонний тест при том же α мощнее, но полностью слеп к ухудшению: если новое ранжирование снизит конверсию, тест этого не покажет. Для продуктовых экспериментов, где ухудшение — реальный и значимый исход, по умолчанию берут двусторонний вариант. Выбор делается до просмотра данных; переключение на односторонний после того, как стало видно направление эффекта, — это скрытое удвоение α.

Пример

Тестируем новый алгоритм ранжирования поисковой выдачи. H₀: конверсия из поиска в заказ одинакова; H₁: различается. Задаём α = 0,05 и мощность 0,8. Базовая конверсия 4 %, продуктовая команда считает осмысленным относительный прирост от 3 %, то есть абсолютный сдвиг 0,12 процентного пункта. Тест решили раскатить на узкую долю трафика — по 40 000 сессий в группе. При таком размере MDE равен 0,39 пункта, более чем втрое больше интересующего нас эффекта. Значит, дизайн выбран неверно: даже реальный прирост на 0,12 пункта тест с высокой вероятностью пропустит, и вывод «разницы нет» будет отражать долю выделенного трафика, а не качество ранжирования.

Частая ошибка

Формулировка «тест показал, что варианты выдачи одинаковы» при незначимом результате. Незначимость означает лишь, что данных не хватило отвергнуть H₀; она совместима и с нулевым эффектом, и с эффектом размером в половину MDE. Заметить подмену помогает проверка: указана ли в отчёте мощность или MDE. Если их нет, вывод об отсутствии различий не обоснован. Корректная формулировка звучит так: «различий не обнаружено; тест позволял уверенно детектировать эффект от 0,39 пункта, доверительный интервал для разности — от −0,19 до +0,35 пункта».

Запомнить
  • α задаётся до теста и равна доле ложных срабатываний при отсутствии эффекта; β следует из дизайна.
  • Мощность 1 − β растёт с размером выборки и величиной эффекта и падает с ростом разброса.
  • Отсутствие значимости — не доказательство равенства; рядом всегда нужен MDE или интервал для разности.
  • Сторонность гипотезы фиксируется до просмотра данных.
5.4

p-value: что это и чем оно не является

p-value — самая цитируемая и самая неверно трактуемая величина в аналитике, поэтому её определение стоит выучить дословно.

Суть

Определение звучит так: p-value — это вероятность получить наблюдаемое различие или ещё более сильное, при условии что нулевая гипотеза верна. Каждое слово здесь несёт нагрузку. «При условии что H₀ верна» — расчёт ведётся в воображаемом мире без эффекта. «Или ещё более сильное» — учитывается не только само значение, но и весь хвост распределения за ним.

p = P(данные такие же или более экстремальные | H₀ верна)

Механика расчёта одинакова для всех критериев. Сначала считается статистика — стандартизованное расстояние между наблюдаемым и ожидаемым при H₀, измеренное в стандартных ошибках. Затем берётся известное распределение этой статистики при H₀ (нормальное, t, хи-квадрат) и вычисляется площадь хвоста за наблюдённым значением. Для двусторонней гипотезы берутся оба хвоста.

Маленькое p означает, что данные плохо согласуются с миром без эффекта. Это довод против H₀ — и ровно столько, ничего больше. Порог 0,05 не имеет математического обоснования; это соглашение, унаследованное из практики начала XX века. Разница между p = 0,049 и p = 0,051 не соответствует никакому содержательному различию.

Три неверные трактовки

Первая: «p = 0,03 означает, что вероятность ошибки 3 %» или «вероятность того, что H₀ верна, — 3 %». Здесь переставлены местами условие и событие. Считается P(данные | H₀), а трактуется как P(H₀ | данные). Это разные величины, как «вероятность промокнуть, если идёт дождь» и «вероятность того, что идёт дождь, если вы промокли». Вторая зависит ещё и от того, насколько дождь вообще вероятен в этих краях, — то есть от априорной доли реально работающих гипотез. Иллюстрация: пусть из 1 000 проверяемых идей действительно работают 100. При мощности 0,8 мы поймаем 80 из них. Из 900 пустых идей при α = 0,05 значимыми окажутся 45. Значимых результатов будет 125, из них ложных 45 — это 36 %, а вовсе не 5 %. Чем больше слабых гипотез вы перебираете, тем выше доля мусора среди «побед».

Вторая: «p > 0,05 означает, что эффекта нет». Большое p говорит только о том, что данные совместимы с H₀ — но они совместимы и с множеством ненулевых значений эффекта. При маленькой выборке p будет большим почти всегда, включая случаи с крупным реальным эффектом. Отсутствие доказательства не есть доказательство отсутствия. Чтобы утверждать эквивалентность, нужен либо узкий доверительный интервал вокруг нуля, либо специальная процедура проверки эквивалентности, где нулевой гипотезой служит наличие различия.

Третья: «p = 0,001 означает более сильный эффект, чем p = 0,04» и «результат воспроизведётся с вероятностью 99,9 %». p зависит от двух вещей сразу — от величины эффекта и от размера выборки. На выборке в миллион пользователей прирост конверсии на 0,01 процентного пункта даст крошечное p и нулевую практическую ценность. p не является ни мерой размера эффекта, ни мерой его важности, ни вероятностью повторения результата: при мощности 0,8 повтор эксперимента даст значимость лишь примерно в 80 % случаев, каким бы малым ни было исходное p. Величину эффекта показывает доверительный интервал для разности, и именно его нужно приводить в отчёте.

Как читать p-value правильно

Рабочая формулировка выглядит так: «наблюдаемое различие в 0,28 процентного пункта или большее возникло бы примерно в 5 % случаев, если бы варианты ранжирования на самом деле не различались». Дальше решение принимается с учётом цены ошибок, стоимости внедрения и доверительного интервала. p — вход в рассуждение, а не его вывод. Приводить его без размера эффекта, интервала и размера выборки не имеет смысла.

Пример

Тест нового ранжирования: контроль 1 680 заказов из 40 000 сессий (4,20 %), вариант 1 792 из 40 000 (4,48 %). Объединённая доля: (1680 + 1792) / 80 000 = 3472 / 80 000 = 0,0434. Стандартная ошибка разности при H₀: √(0,0434 × 0,9566 × (1/40000 + 1/40000)) = √(0,0415164 × 0,00005) = √0,0000020758 = 0,001441. Статистика z = 0,0028 / 0,001441 = 1,94, двустороннее p ≈ 0,052. Доверительный интервал для разности строится без объединения долей: 0,28 ± 1,96 × 0,144 пункта, то есть от −0,002 до +0,562 процентного пункта. Вывод: данные скорее указывают на прирост, но интервал накрывает ноль, и говорить о подтверждённом эффекте нельзя. Формулировка «новое ранжирование проиграло» здесь так же неверна, как «новое ранжирование выиграло».

Частая ошибка

В сводной таблице экспериментов по поиску и карточке товара остаётся единственная колонка «p-value», по которой сортируют и раскрашивают строки. Из такой таблицы нельзя понять ни величину прироста конверсии, ни его точность, и она поощряет округление 0,052 до «почти значимо». Заметить проблему помогает вопрос к любой строке отчёта: могу ли я назвать величину эффекта и границы интервала. Если из таблицы это не следует, добавьте три колонки — разность, её доверительный интервал и число сессий в группах; p-value после этого перестаёт быть главным числом.

Запомнить
  • p — это P(данные | H₀), а не P(H₀ | данные) и не вероятность ошибки.
  • Большое p не доказывает равенства; маленькое p не измеряет величину эффекта.
  • Доля ложных «побед» среди значимых результатов зависит от того, сколько пустых гипотез вы перебрали.
  • p приводится только вместе с размером эффекта, доверительным интервалом и размером выборки.
5.5

Выбор критерия: t-тест, тест пропорций, хи-квадрат, Манна—Уитни

Критерий выбирается не по привычке, а по типу метрики, числу сравниваемых групп и форме распределения данных.

Суть

Все перечисленные критерии устроены одинаково: они сводят наблюдаемое различие к статистике, распределение которой при H₀ известно, и по ней считают p-value. Различаются они тем, что считают различием и какие предположения делают о данных. Первый вопрос при выборе — какова метрика.

МетрикаДве группыТри и более групп
Доля (да/нет)z-тест пропорцийХи-квадрат однородности
Числовая, симметричнаяt-тест УэлчаДисперсионный анализ
Числовая, скошеннаяМанна—Уитни или бутстрапКраскела—Уоллиса или бутстрап

t-тест и тест пропорций

t-тест сравнивает средние двух групп. Его статистика — это разность средних, делённая на стандартную ошибку разности:

t = (x̄₁ − x̄₂) / √(s₁²/n₁ + s₂²/n₂)

Знаменатель складывает дисперсии, потому что группы независимы и дисперсия разности равна сумме дисперсий. Версия Уэлча, которая не требует равенства дисперсий в группах, — разумный вариант по умолчанию: она почти не теряет мощности, когда дисперсии равны, и защищает, когда они различаются. Требование нормальности относится не к самим наблюдениям, а к выборочному распределению среднего, поэтому при n порядка нескольких сотен t-тест работает и на ненормальных данных. Ломается он не от асимметрии, а от тяжёлых хвостов и выбросов: один заказ на 300 000 рублей заметно сдвигает средний чек и раздувает s.

z-тест пропорций — тот же расчёт для долей, где дисперсия определяется самой долей. При проверке H₀ доли объединяют, потому что при нулевой гипотезе истинная доля в обеих группах одна:

z = (p₂ − p₁) / √(p̄ × (1 − p̄) × (1/n₁ + 1/n₂))

Для доверительного интервала разности, наоборот, доли не объединяют и берут √(p₁(1−p₁)/n₁ + p₂(1−p₂)/n₂). Это не противоречие: в первом случае мы живём в мире H₀, во втором — оцениваем реальную разность.

Хи-квадрат

Критерий хи-квадрат работает с таблицей частот и отвечает на вопрос, отличается ли наблюдаемое распределение от ожидаемого при независимости строк и столбцов. Ожидаемая частота в клетке равна произведению итогов строки и столбца, делённому на общий итог. Статистика суммирует относительные квадраты отклонений:

χ² = Σ (наблюдённое − ожидаемое)² / ожидаемое

Деление на ожидаемое приводит клетки к общему масштабу: отклонение в 15 при ожидании 150 и при ожидании 3 000 — величины разной значимости. Число степеней свободы для таблицы равно (строки − 1) × (столбцы − 1). Критерий не показывает, какая именно группа выделяется, и не даёт направления эффекта — после значимого результата нужны попарные сравнения с поправкой на множественность. Ограничение: ожидаемая частота в каждой клетке должна быть не меньше 5, иначе приближение неточно.

Манна—Уитни и границы применимости

Критерий Манна—Уитни заменяет значения их рангами и проверяет, склонны ли значения одной группы быть выше значений другой. Выбросы теряют влияние: заказ на 300 000 рублей получает лишь самый большой ранг. Это делает критерий устойчивым на скошенных распределениях вроде чеков или числа просмотренных карточек за сессию. Плата за устойчивость — смена вопроса: он не сравнивает средние и не даёт интервала для разности средних, а бизнесу обычно нужна именно разность в рублях. Практичная схема: Манна—Уитни как проверка устойчивости вывода, бутстрап — как способ получить интервал для той метрики, которая нужна.

Отдельно стоит проверить структуру данных. Если у одного клиента несколько заказов, наблюдения зависимы, и любой из критериев занизит p-value. Если сравниваются одни и те же объекты до и после, нужен парный вариант критерия.

Пример

Сравниваем три варианта карточки товара, по 40 000 сессий на каждый: 1 680, 1 620 и 1 580 заказов, то есть 4,20 %, 4,05 % и 3,95 %. Всего 4 880 заказов на 120 000 сессий, общая доля 4,067 %. Ожидаемое число заказов в каждой колонке равно 4880 × 40000 / 120000 = 1 626,67, ожидаемое число сессий без заказа — 38 373,33. Вклад первой колонки: (1680 − 1626,67)² / 1626,67 = 2 844,4 / 1 626,67 = 1,749 и (38320 − 38373,33)² / 38373,33 = 2 844,4 / 38 373,33 = 0,074. Суммируя все шесть клеток, получаем χ² = 3,25 при 2 степенях свободы, p ≈ 0,20. Различий между вариантами карточки данные не подтверждают.

Частая ошибка

t-тест применяют к сильно скошенной метрике вроде выручки на сессию, где доля процента заказов даёт заметную часть всей суммы. Тест формально отработает, но результат будет определяться несколькими крупными покупками техники и не воспроизведётся на следующей неделе. Заметить это можно до расчёта: посмотрите на медиану и среднее — если среднее заметно выше медианы, распределение скошено; посмотрите на долю метрики, приходящуюся на верхний процент наблюдений. При сильной концентрации переходите к бутстрапу, к рангам или к усечённой метрике с заранее оговорённым порогом.

Запомнить
  • Критерий определяется типом метрики, числом групп и формой распределения, а не привычкой.
  • t-тест Уэлча — разумный вариант по умолчанию для средних; для долей берут z-тест пропорций.
  • Хи-квадрат отвечает «есть различия где-то», но не указывает, где именно, и требует ожидаемых частот не меньше 5.
  • Манна—Уитни устойчив к выбросам, но сравнивает не средние; для интервала в бизнес-единицах нужен бутстрап.
5.6

Размер выборки и MDE

Расчёт размера выборки до запуска превращает эксперимент из лотереи в инструмент: он заранее говорит, какой эффект вы сможете увидеть и сколько это займёт времени.

Суть

Четыре величины связаны жёстко: размер группы n, минимальный обнаружимый эффект MDE, уровень значимости α и мощность 1 − β. Зафиксировав любые три, вы получаете четвёртую. На практике α и мощность берут стандартными (0,05 и 0,8), а дальше выбирают: либо бизнес называет минимально интересный эффект и вы считаете нужное n, либо трафик ограничен и вы считаете, какой MDE вообще достижим. Второй расчёт делать столь же обязательно: он часто показывает, что эксперимент бессмысленно запускать.

n = 2 × (z_α/2 + z_β)² × σ² / d²

Здесь d — абсолютный размер эффекта, который вы хотите поймать, а множитель 2 отражает, что дисперсия входит в разность из обеих групп. Для α = 0,05 и мощности 0,8 подставляются z = 1,96 и z = 0,84: (1,96 + 0,84)² = 2,8² = 7,84, и 2 × 7,84 = 15,68. Это число округляют до 16, откуда получается рабочее правило.

n ≈ 16 × σ² / d² (числовая метрика)
n ≈ 16 × p × (1 − p) / d² (доля)

Обе формулы дают размер одной группы; общий трафик вдвое больше.

Что означает квадрат в знаменателе

Эффект входит в квадрате, и это главный практический факт всей темы. Желание ловить вдвое меньший эффект увеличивает выборку вчетверо, втрое меньший — в девять раз. Именно поэтому попытки поймать «прирост в один процент относительно» почти всегда упираются в объёмы, которых у компании нет. Расчёт стоит делать до обсуждения дизайна, а не после.

Второй важный момент — различие абсолютного и относительного эффекта. Бизнес говорит «прирост на 20 %», имея в виду относительную величину. В формулу подставляется абсолютная: при базовой конверсии 4 % прирост на 20 % означает d = 0,04 × 0,20 = 0,008. Ошибка на этом шаге меняет ответ в разы.

Как считать на практике

Порядок действий устойчив. Первое: возьмите базовое значение метрики по историческим данным за период, сопоставимый с будущим тестом. Второе: получите от заказчика минимально интересный эффект — не тот, который вы надеетесь увидеть, а тот, ниже которого внедрение не окупается. Третье: переведите его в абсолютную величину. Четвёртое: подставьте в формулу и получите n на группу. Пятое: разделите удвоенное n на суточный трафик и получите длительность. Шестое: округлите длительность вверх до целого числа недель, чтобы захватить полный недельный цикл — поведение в выходные и будни различается, и обрыв теста в середине недели вносит систематический сдвиг.

Для числовой метрики вместо p × (1 − p) подставляется σ², которую берут из исторических данных. При среднем чеке со стандартным отклонением 1 800 рублей и желании ловить сдвиг в 30 рублей: n = 16 × 3 240 000 / 900 = 57 600 заказов на группу. Для сдвига в 15 рублей: 16 × 3 240 000 / 225 = 230 400. Разница в четыре раза при вдвое меньшем эффекте — та же квадратичная зависимость.

Что делать, когда данных не хватает

Если требуемое n недостижимо, есть несколько честных ходов. Увеличить долю трафика в тесте. Взять более чувствительную метрику: клик по кнопке случается чаще, чем оплата, и требует меньшей выборки, но измеряет не то же самое. Снизить дисперсию: стратификация, учёт предэкспериментального поведения клиента, усечение выбросов по заранее объявленному порогу. Согласовать более крупный MDE и явно записать, что мелкие эффекты тест не различает. Нечестный ход один и распространён — запустить как есть и надеяться; он даёт незначимый результат, который затем трактуют как «изменение не работает».

Пример

Базовая конверсия из поиска в заказ — 4 %. Продуктовая команда готова раскатывать новое ранжирование при относительном приросте от 2 %, то есть d = 0,04 × 0,02 = 0,0008. Считаем: p × (1 − p) = 0,04 × 0,96 = 0,0384; умножаем на 16 — получаем 0,6144; d² = 0,0008² = 0,00000064; делим: 0,6144 / 0,00000064 = 960 000 сессий на группу. Точная формула с множителем 15,68 даёт 940 800, то есть округление до 16 добавляет небольшой запас. Всего нужно 1 920 000 сессий. Если под тест выделено 480 000 поисковых сессий в сутки, разделённых поровну, каждая группа набирает 240 000 сессий в день, и 960 000 накопится за 4 дня. С учётом округления до недельного цикла тест планируют на 7 дней. Для сравнения: прирост в 1 % (d = 0,0004) потребовал бы 0,6144 / 0,00000016 = 3 840 000 на группу — то есть 16 дней, а с округлением три недели.

Частая ошибка

Размер выборки считают в пользователях, а метрику измеряют в сессиях. Если один пользователь заходит в поиск по нескольку раз в день, число строк в таблице сессий набирается быстро, а число независимых единиц — нет; фактическая мощность оказывается ниже расчётной, а p-value — заниженным. Заметить расхождение помогает короткая проверка перед стартом: отношение числа сессий к числу уникальных пользователей в исторических данных. Если оно заметно больше единицы, единицу рандомизации и единицу анализа надо привести к одному уровню — считать метрику на пользователя.

Запомнить
  • n ≈ 16 × p × (1 − p) / d² для доли и n ≈ 16 × σ² / d² для среднего; это размер одной группы.
  • Эффект входит в квадрате: вдвое меньший MDE требует вчетверо большей выборки.
  • MDE задаётся в абсолютных единицах; относительный прирост нужно перевести через базовое значение.
  • Если нужное n недостижимо, меняйте дизайн или MDE, но не запускайте тест без расчёта.
5.7

Подглядывание и множественные сравнения

Уровень значимости 0,05 защищает от ложной находки при одной проверке, но каждая дополнительная проверка — по срезу, по метрике или по времени — расходует эту защиту.

Суть

Ошибка I рода случается в 5 % случаев на каждую проверку. Если проверок несколько и они независимы, вероятность хотя бы одного ложного срабатывания растёт по формуле дополнения:

P(хотя бы одна ложная находка) = 1 − (1 − α)^m

Подставим α = 0,05. При m = 3 получаем 1 − 0,95³ = 1 − 0,857 = 0,143. При m = 5 — 1 − 0,774 = 0,226. При m = 10 — 1 − 0,599 = 0,401. При m = 20 — 0,642. То есть аналитик, разрезавший результат теста на двадцать срезов, найдёт «значимый» эффект хотя бы в одном из них почти в двух случаях из трёх, даже если никакого эффекта нет вовсе.

Проблема не в том, что срезы смотреть нельзя. Проблема в том, что порог 0,05, применённый к каждому срезу отдельно, перестаёт означать то, что он означал.

Подглядывание как частный случай

Проверка результата каждый день с решением «остановить тест, как только p опустится ниже 0,05» — это тоже множественные сравнения, только по времени. Отличие в том, что последовательные проверки сильно коррелированы: данные вчерашнего дня входят и в сегодняшнюю оценку, — поэтому формула независимых испытаний завышает риск. Но и реальные цифры велики: при двух промежуточных проверках фактическая доля ложных срабатываний около 8 %, при пяти — около 14 %, при десяти — около 19 %. Если смотреть на график непрерывно и останавливаться на первом пересечении порога, вероятность в пределе стремится к единице: траектория p-value при отсутствии эффекта случайно блуждает и рано или поздно зайдёт под 0,05.

Усугубляет ситуацию правило остановки, привязанное к желаемому исходу: тест продолжают, пока результат «не тот», и останавливают, как только он «тот». Это отбор благоприятного момента, и он смещает оценку эффекта вверх даже там, где эффект реален: остановка происходит на случайном пике.

Что с этим делать

Первый и главный приём — заранее зафиксировать план: одна основная метрика, один срез, одна дата подведения итогов, посчитанная из размера выборки. Всё остальное объявляется разведочным и в решениях не участвует.

Когда сравнений действительно несколько, применяют поправки. Поправка Бонферрони делит порог на число сравнений: при пяти сравнениях значимым считается p ниже 0,05 / 5 = 0,01, при десяти — ниже 0,005. Она надёжна и не требует допущений, но консервативна: при большом m мощность падает почти до нуля.

Процедура Бенджамини—Хохберга контролирует не вероятность хотя бы одной ошибки, а ожидаемую долю ложных среди объявленных находок. p-value сортируются по возрастанию, и i-е сравнивается с порогом i / m × q, где q — допустимая доля ложных открытий. Значимыми объявляются все сравнения до самого большого номера, для которого условие выполнилось. Такой подход уместен в разведочном анализе, где важнее не пропустить кандидатов, чем гарантировать чистоту каждого.

Для промежуточных проверок существуют групповые последовательные схемы: пороги на ранних проверках делают заметно строже, на финальной — почти обычными, так что суммарный α остаётся 0,05. Это законный способ подглядывать, но он требует объявить число и моменты проверок заранее.

Пример

Тест новой кнопки в мобильном приложении подводят по общей выборке сессий и получают p = 0,21. Дальше результат режут на пять срезов: iOS, Android, мобильный веб, десктоп и планшеты. p-value получаются 0,004, 0,012, 0,031, 0,044 и 0,210. Без поправки «победили» четыре среза. Бонферрони требует порога 0,05 / 5 = 0,01 — проходит только первый. Бенджамини—Хохберг при q = 0,05 сравнивает отсортированные значения с порогами 0,01, 0,02, 0,03, 0,04 и 0,05: 0,004 ≤ 0,01 — да, 0,012 ≤ 0,02 — да, 0,031 ≤ 0,03 — нет, 0,044 ≤ 0,04 — нет. Наибольший прошедший номер — второй, значит значимыми признаются два первых среза. Ни та, ни другая процедура не превращает эти находки в решение: они годятся как гипотеза для отдельного подтверждающего теста.

Частая ошибка

В отчёте появляется фраза «в целом разницы нет, но в категории электроники новое ранжирование выигрывает значимо». Срез найден после просмотра данных, порог не скорректирован, а сессий в этой категории на порядок меньше расчётного объёма, поэтому и оценка эффекта в ней завышена. Заметить подмену помогает один вопрос: был ли этот срез назван до запуска теста и входил ли он в расчёт размера выборки. Если нет — формулировка должна звучать как «в электронике наблюдается различие, требующее отдельной проверки», и в этой проверке срез становится основной гипотезой с собственным расчётом выборки.

Запомнить
  • При m независимых проверках риск ложной находки равен 1 − (1 − α)^m: пять проверок дают 22,6 %, десять — 40 %.
  • Остановка теста в момент пересечения порога — то же самое множественное сравнение, только по времени.
  • Бонферрони строг и прямолинеен, Бенджамини—Хохберг мягче и уместен в разведочном анализе.
  • Метрика, срез и дата подведения итогов фиксируются до запуска; всё остальное — гипотезы для следующего теста.
5.8

Бутстрап

Бутстрап даёт доверительный интервал для любой метрики, включая те, для которых формулы стандартной ошибки не существует.

Суть

Классические формулы выведены для конкретных статистик при конкретных предположениях: среднее при большой выборке, доля при достаточном числе успехов. Для медианы, 90-го процентиля, отношения двух сумм или доли заказов, уложившихся в норматив, аналитической формулы либо нет, либо она требует условий, которых данные не выполняют. Бутстрап заменяет вывод формулы вычислением.

Идея опирается на подстановку. Мы хотели бы знать, как оценка колеблется при повторном извлечении выборок из генеральной совокупности. Совокупность нам недоступна, но выборка — её лучшая доступная копия. Значит, будем извлекать новые выборки из самой выборки: с возвращением, того же размера n. Каждая такая псевдовыборка содержит часть исходных наблюдений по нескольку раз, часть не содержит вовсе — именно это воспроизводит случайность отбора.

разброс оценок по псевдовыборкам ≈ разброс оценки по реальным выборкам

Алгоритм

Процедура состоит из четырёх шагов. Первый: из выборки размера n случайно с возвращением набирается псевдовыборка того же размера n. Возвращение принципиально — без него получится перестановка исходных данных и метрика не изменится. Второй: на псевдовыборке считается интересующая метрика — медиана, процентиль, доля, отношение. Третий: шаги повторяются много раз; 1 000 повторов достаточно для оценки стандартной ошибки, 10 000 — для устойчивых границ интервала. Четвёртый: полученный набор значений сортируется, и границы 95 % интервала берутся как 2,5-й и 97,5-й процентили — при 10 000 повторов это 250-е и 9 750-е значения по порядку.

Стандартное отклонение набора бутстрап-оценок и есть оценка стандартной ошибки метрики. Для среднего оно совпадёт с σ / √n с точностью до случайности — это удобный способ проверить, что процедура реализована верно.

Как применять к сравнению групп

Для A/B-теста ресемплируют каждую группу независимо, на каждой итерации считают разность метрик и получают распределение разности. Если 95 % интервал этой разности не содержит нуля, различие значимо на уровне 0,05. Такой подход удобнее классического критерия тем, что работает с любой метрикой и сразу выдаёт интервал в бизнес-единицах: не «p = 0,03», а «медианный чек вырос на 120 рублей, интервал от 40 до 205 рублей».

Единица ресемплирования должна совпадать с единицей рандомизации. Если тест рандомизирован по клиентам, а метрика считается по заказам, ресемплировать нужно клиентов целиком со всеми их заказами — это блочный бутстрап. Ресемплирование отдельных заказов разорвёт зависимость внутри клиента и даст слишком узкий интервал.

Где бутстрап ломается

Бутстрап не создаёт информацию, а лишь извлекает её из имеющихся данных, поэтому он наследует все их дефекты. Смещение отбора он не исправляет: интервал будет узким и уверенно окружать неверное число. На очень малых выборках он ненадёжен — в 20 наблюдениях содержится слишком мало информации о хвостах распределения. Для экстремальных статистик вроде максимума метод не работает в принципе: максимум псевдовыборки никогда не превысит максимум исходной, и распределение получается искажённым. При сильной зависимости наблюдений нужен блочный вариант. Наконец, у процентильного интервала есть смещение при асимметричных распределениях; для аккуратной работы применяют скорректированные версии, но для типичных продуктовых задач процентильного интервала обычно достаточно.

Пример

В выборке 6 000 заказов, оформленных за сутки в одной категории. Средний чек 4 120 рублей, медианный 2 480 рублей — расхождение указывает на правостороннюю скошенность, характерную для чеков маркетплейса. Квартальная цель команды привязана к медиане, а формулы стандартной ошибки медианы под рукой нет. Запускаем бутстрап: 10 000 раз набираем по 6 000 заказов с возвращением, каждый раз считаем медиану, сортируем полученные 10 000 значений и берём 250-е и 9 750-е. Получаем 95 % интервал от 2 390 до 2 570 рублей. Вывод для отчёта: медианный чек составляет 2 480 рублей, и данные согласуются с истинным значением в диапазоне примерно 2 390—2 570 рублей. Если цель равна 2 500 рублям, утверждать её достижение по этим данным нельзя — нижняя граница интервала лежит ниже цели.

Частая ошибка

Бутстрап применяют к данным, где на одного пользователя приходится по нескольку сессий, ресемплируя строки сессий. Формально всё считается, интервал выходит узким и убедительным, но фактическое число независимых единиц в несколько раз меньше числа строк, и интервал занижен. Заметить это можно сравнением: посчитайте интервал двумя способами — ресемплируя сессии и ресемплируя пользователей целиком со всеми их сессиями. Если второй заметно шире, зависимость в данных существенна и правильным является именно он. Тот же признак работает как общая проверка перед любым тестом: отношение числа строк к числу уникальных пользователей.

Запомнить
  • Бутстрап — многократный отбор с возвращением из своей же выборки; он заменяет формулу вычислением.
  • Границы 95 % интервала — 2,5-й и 97,5-й процентили набора бутстрап-оценок; для устойчивости нужно порядка 10 000 повторов.
  • Для сравнения групп ресемплируйте каждую группу и стройте интервал для разности; ноль внутри — различие не подтверждено.
  • Ресемплировать надо ту единицу, по которой шла рандомизация; смещение отбора и крошечные выборки бутстрап не лечит.
Закрепление

Теория без задач не держится

Восемь задач по этому модулю: выбор ответа и расчёт, с разбором каждого решения. Задачи, в которых вы ошиблись, вернутся в следующий заход.

Перейти к тренажёру