Доверительный интервал: как показать, насколько точна ваша цифра
Что означает 95% доверительный интервал для конверсии и разницы конверсий, как его посчитать, почему он важнее p-value и какая формулировка про него неверна.
Содержание статьи
Конверсия 21% выглядит как факт. На деле это оценка по выборке, и следующая тысяча пользователей даст другое число. Доверительный интервал — способ показать, насколько велика эта неопределённость, одной короткой записью. Он полезнее p-value почти во всех продуктовых разговорах, потому что говорит на языке эффекта, а не на языке гипотез.
Коротко
Интервал отвечает на вопрос «в каких пределах правдоподобно лежит настоящее значение», а не «есть ли эффект».
- Ширина интервала показывает, сколько данных вы собрали: чем больше выборка, тем он уже.
- Интервал разницы, который целиком выше нуля, означает то же, что p < 0,05, но говорит ещё и о размере.
- Формулировка «настоящее значение лежит здесь с вероятностью 95%» строго говоря неверна — правильная в тексте ниже.
- Узкий интервал вокруг нуля — содержательный результат: крупного эффекта нет.
- Широкий интервал — это не «нет эффекта», а «данных не хватило».
Что означает «95%»
Строгое определение звучит непривычно: если повторить эксперимент много раз и каждый раз строить интервал одним и тем же способом, примерно 95% таких интервалов накроют настоящее значение. Проценты относятся к процедуре построения, а не к конкретному отрезку на экране.
Поэтому фраза «с вероятностью 95% конверсия лежит между 17,4% и 24,6%» формально неверна: настоящее значение — не случайная величина, оно либо внутри, либо снаружи. Случаен интервал, а не истина.
В рабочем разговоре достаточно менее строгой, но честной формулировки: «данные совместимы со значениями от 17,4% до 24,6%». Она не создаёт ложного ощущения, что мы измерили вероятность истины, и при этом говорит ровно то, что нужно для решения.
p ± z · √( p(1−p) / n )z = 1,96 для 95%. Формула перестаёт работать при очень малых выборках и долях у краёв.
Считаем на живых числах
Возьмём эксперимент из финальной главы симулятора SQL-аналитика. В контроле 105 активаций из 500 участников, в тестовой группе — 135 из 500.
Для контроля: доля 21%, стандартная ошибка √(0,21 · 0,79 / 500) ≈ 1,8 п.п., интервал от 17,4% до 24,6%. Для теста: 27% и интервал от 23,1% до 30,9%. Уже здесь видно, насколько грубыми были бы выводы по одним точечным значениям: две оценки различаются на 6 пунктов, а их интервалы почти касаются друг друга.
И главная ошибка чтения: пересечение интервалов двух групп не означает отсутствия разницы. Сравнивать нужно не два интервала, а интервал самой разницы — он считается отдельно и получается уже, чем кажется по картинке.
| Величина | Оценка | 95% интервал |
|---|---|---|
| Конверсия контроля | 21,0% | от 17,4% до 24,6% |
| Конверсия теста | 27,0% | от 23,1% до 30,9% |
| Разница | +6,0 п.п. | от +0,7 до +11,3 п.п. |
Читаем интервал разницы
Интервал разницы — от +0,7 до +11,3 процентного пункта — и есть тот объект, по которому принимают решение. Он целиком выше нуля, поэтому результат «значим»; но его ширина говорит гораздо больше, чем этот факт.
Нижняя граница отвечает на вопрос «а если нам не повезло»: даже в пессимистичном случае прирост около 0,7 пункта. Верхняя показывает потолок оптимизма. Дальше это сравнивают с порогом окупаемости, который назначают до эксперимента: если изменение окупается начиная с +2 п.п., данные его не гарантируют, и осторожная раскатка выглядит разумнее полной.
Обратная ситуация встречается чаще, чем кажется: интервал от −0,4 до +0,6 п.п. Формально «незначимо», но по смыслу это сильный результат — он исключает и заметный рост, и заметное падение. Такую гипотезу можно закрывать со спокойной совестью, чего нельзя сделать по одному p-value.
Нижняя и верхняя границы 95% интервала разницы конверсий и наблюдаемая оценка между ними.
Что делает интервал шире
Ширина зависит от трёх вещей, и все три полезно понимать до сбора данных.
Размер выборки: интервал сужается пропорционально корню из числа наблюдений. Чтобы сделать его вдвое уже, данных нужно вчетверо больше — поэтому «добрать ещё немного» редко помогает.
Разброс самой величины: у долей он максимален около 50% и падает у краёв, у средних зависит от дисперсии. Метрика с длинным хвостом — выручка на пользователя, длительность сессии — даёт куда более широкий интервал, чем конверсия при том же числе наблюдений.
Выбранный уровень уверенности: интервал на 99% шире, чем на 95%. Это не «точнее», а осторожнее: вы соглашаетесь на менее конкретное утверждение ради меньшего риска промахнуться.
Сколько данных нужно, чтобы интервал стал полезным
Пока интервал шире, чем цена решения, эксперимент не отвечает на вопрос. Полезно посчитать заранее, при каком объёме он станет достаточно узким.
Для нашей разницы в 6 пунктов картина такая. На сотне участников в группе интервал идёт от −5,8 до +17,8 п.п. — он включает и заметное падение, и двузначный рост, то есть не исключает почти ничего. На пятистах сужается до +0,7…+11,3. На двух тысячах — до +3,4…+8,6, и здесь уже можно осмысленно спорить о порогах окупаемости. На восьми тысячах — +4,7…+7,3.
Обратите внимание на темп: увеличение выборки вчетверо сужает интервал вдвое. Это тот самый корень, из-за которого «подождём ещё пару дней» обычно не спасает почти ничего, а планировать объём нужно до старта.
| Участников в группе | Полуширина интервала | Интервал разницы |
|---|---|---|
| 100 | ±11,8 п.п. | от −5,8 до +17,8 п.п. |
| 500 | ±5,3 п.п. | от +0,7 до +11,3 п.п. |
| 2000 | ±2,6 п.п. | от +3,4 до +8,6 п.п. |
| 8000 | ±1,3 п.п. | от +4,7 до +7,3 п.п. |
Средние и деньги считаются иначе
Для конверсии формула проста, потому что доля устроена предсказуемо. С выручкой на пользователя, длительностью сессии или числом действий всё сложнее: у таких величин длинный правый хвост, и несколько крупных значений двигают среднее сильнее, чем вся остальная масса.
Практический признак проблемы — интервал, который заметно меняется при удалении одного-двух пользователей. Если такое возможно, среднее плохо описывает выборку, и стоит либо перейти к более устойчивой величине (медиана, усечённое среднее), либо строить интервал через bootstrap: многократно пересобирать выборку с возвращением и смотреть, как гуляет оценка.
Bootstrap хорош тем, что не требует предположений о форме распределения и одинаково работает для среднего, медианы, доли и почти любой производной метрики. Цена — вычисления вместо формулы, но на продуктовых объёмах это секунды.
Где формула ломается
Обычная формула через нормальное приближение хорошо работает в середине, но плохо у краёв. Если конверсия 1% и наблюдений мало, интервал может уйти в отрицательные значения — величина, невозможная физически. Для таких случаев берут интервалы Уилсона или Клоппера — Пирсона, они устроены иначе и не выходят за пределы.
Отдельная тонкость — зависимые наблюдения. Формула предполагает, что наблюдения независимы. Если один пользователь дал десять сессий, а вы считаете сессии, интервал получится уже настоящего: вы посчитали десять наблюдений там, где независимых источников информации было меньше.
И общий предел: интервал описывает только случайную ошибку выборки. Систематические искажения — сломанный трекинг, перекос групп, самоотбор аудитории — он не видит и не лечит. Аккуратный интервал вокруг смещённой оценки остаётся смещённой оценкой.
- Малая выборка или доля у края — считать по Уилсону, а не по нормальному приближению.
- Единица наблюдения должна совпадать с единицей рандомизации.
- Метрики с длинным хвостом требуют bootstrap или устойчивых оценок.
- Интервал не защищает от смещения — только от случайного шума.
Две активации из сорока: нормальная формула выдаёт отрицательную границу
У границы применимости есть простая арифметическая проверка: нормальное приближение держится, пока в выборке есть хотя бы десяток успехов и десяток неуспехов. В контроле нашего эксперимента 105 активаций и 395 неактиваций — запас огромный. Но разрежьте те же 500 человек по каналам привлечения, и в отдельном канале окажется 40 пользователей с двумя активациями. Успехов ровно два, условие не выполнено.
Посчитайте по формуле и посмотрите, что получится. Доля 5%, стандартная ошибка √(0,05 · 0,95 / 40) = 3,4 п.п., полуширина 1,96 · 3,4 ≈ 6,8 п.п. Интервал идёт от −1,8% до 11,8%. Отрицательная нижняя граница — самый наглядный признак, что формула вышла за свои пределы: доля меньше нуля не бывает. Подводит и симметрия: у края шкалы настоящая неопределённость сдвинута вверх, потому что вниз двигаться почти некуда.
Интервал Уилсона устроен иначе: он строит границы не вокруг наблюдённой доли, а вокруг доли, подтянутой к середине на фиксированную добавку. Центр считается как (x + z² / 2) / (n + z²) — при x = 2, n = 40 и z = 1,96 это (2 + 1,92) / 43,84 = 8,9%. Полуширина равна z / (n + z²) · √(x(n − x) / n + z² / 4) = 1,96 / 43,84 · √(1,9 + 0,96) ≈ 7,6 п.п. Итог: от 1,4% до 16,5%. Обе границы внутри допустимых значений, и обе несут смысл — канал может давать и один процент активаций, и каждого шестого.
Край шкалы даёт ещё более неприятный случай: там нормальная формула возвращает не странный ответ, а пустой. Ноль покупок из 120 показов означает долю 0% и стандартную ошибку 0, то есть интервал нулевой ширины — «конверсия ровно ноль». По Уилсону те же данные дают от 0% до 3,1%, и это содержательный вывод: больше трёх процентов данные не поддерживают, меньше — могло быть что угодно. Прикидка того же в уме — правило трёх: 3 / n, то есть 3 / 120 = 2,5% как верхняя граница.
Уилсон стоит держать выбором по умолчанию для любых долей: он ведёт себя прилично и в середине, и у краёв, поэтому менять формулу по ходу анализа не придётся. Клоппер — Пирсон даёт покрытие не ниже заявленного ценой заметно более широкого интервала — те же два успеха из сорока растягиваются до 0,6–16,9%. Его берут там, где занижение покрытия недопустимо: отчётность перед регулятором, приёмка по браку, медицинские данные. В библиотеке это один параметр, а не другой расчёт.
Разницу двух малых долей формулой из этой статьи тоже считать не стоит. Интервал для разницы строят по Ньюкомбу — из двух интервалов Уилсона — или бутстрапом. Сюжет тот же: рядом с нулём и единицей симметричная арифметика перестаёт описывать данные, и это проявляется сначала в сегментах, а не в общем результате.
| Метод | 95% интервал | Что с ним не так |
|---|---|---|
| Нормальное приближение | от −1,8% до 11,8% | нижняя граница физически невозможна |
| Уилсон | от 1,4% до 16,5% | рабочий вариант по умолчанию |
| Клоппер — Пирсон | от 0,6% до 16,9% | шире, зато покрытие не ниже заявленного |
from statsmodels.stats.proportion import proportion_confint
proportion_confint(count=2, nobs=40, method='normal') # (-0.0175, 0.1175) — граница ушла в минус
proportion_confint(count=2, nobs=40, method='wilson') # (0.0138, 0.1650)
proportion_confint(count=2, nobs=40, method='beta') # (0.0061, 0.1692) — Клоппер — Пирсон
proportion_confint(count=0, nobs=120, method='wilson') # (0.0000, 0.0310)Посмотрите на число успехов в сегменте, а не на его размер. Сорок пользователей с двумя конверсиями и сорок с двадцатью — это разные задачи: во втором случае обычная формула работает, в первом она даёт невозможные границы.
Как показывать интервал в отчёте
Простое правило: любое число, полученное по выборке, выходит из отчёта вместе с интервалом. Одна строка вместо одного числа — «27% (23,1–30,9%)» — снимает половину вопросов на встрече и предотвращает основную ошибку продуктового чтения: восприятие оценки как точной величины.
На графиках интервал показывают полосой или усами. Это особенно важно для рядов по дням и для разрезов: без них любая мелкая рябь читается как тренд, а сегмент из тридцати человек выглядит равноправным с сегментом из трёх тысяч.
В тексте решения интервал стоит переводить в бизнес-единицы: не «от +0,7 до +11,3 п.п.», а «от 30 до 500 дополнительных активаций в неделю при нынешнем трафике». Тогда разговор о том, окупается ли изменение, ведётся на языке, где у людей есть интуиция.
Материалы по теме
A/B-тест в SQL: конверсия, проверка сплита и разбор по сегментам
Как посчитать A/B-тест запросом: конверсия по группам, проверка SRM, разница, z и доверительный интервал в SQL и срез по устройствам, после которого меняется решение.

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

Бутстреп в статистике: интервалы для метрик A/B-теста
Как построить процентильный бутстреп по пользователям: разница средней выручки, медиана и ARPPU на учебном A/B-тесте, код Python и ограничения метода.