Закон больших чисел простыми словами: формулировка и примеры
Закон больших чисел: почему среднее и доля стабилизируются с ростом выборки. Пример с монетой, накопленная конверсия A/B-теста в SQL, слабая и сильная форма, ошибка игрока и когда закон работает медленно.
Содержание статьи
На второй день A/B-теста онбординга продакт присылает скриншот: в варианте с чек-листом сконвертировались 6 пользователей из 13, это 46,2%, а в контроле 1 из 12, то есть 8,3%. Разница в пять с лишним раз, и продакт спрашивает, можно ли выкатывать. Через 90 дней тот же тест показывает 30,3% против 20,0%. Эффект настоящий, но это 10 пунктов, а не 38. Что именно изменилось за эти три месяца и почему цифра в итоге перестала прыгать, объясняет закон больших чисел.
Коротко
- Среднее по многим независимым наблюдениям приближается к истинному среднему процесса, а доля успехов — к вероятности успеха.
- Закон говорит, куда сходится среднее, но не говорит, как быстро. Скорость описывает центральная предельная теорема.
- Прошлые исходы не меняют следующий: после пяти орлов подряд решка не становится вероятнее.
- Доля выравнивается, а абсолютная разница между исходами может расти. Закон не «возвращает долги».
- Метрики с тяжёлым хвостом, например выручка при наличии крупных клиентов, сходятся заметно медленнее конверсии.
Что такое закон больших чисел простыми словами
Закон больших чисел — это теорема теории вероятностей: среднее большого числа независимых наблюдений одной и той же случайной величины приближается к её математическому ожиданию. Для частоты это означает, что доля успехов в длинной серии испытаний подходит к вероятности успеха. Чем больше наблюдений, тем меньше шанс заметно ошибиться.
В рабочих терминах: у процесса есть настоящая конверсия, которую вы не знаете. Каждый новый пользователь — одно испытание с исходом «сконвертировался» или «нет». Пока пользователей мало, доля конвертировавшихся гуляет от случайного состава. Когда их тысячи, случайные удачи и неудачи в значительной мере гасят друг друга, и доля оказывается близко к настоящей.
Для схемы с двумя исходами теорему доказал Якоб Бернулли, она вошла в его книгу «Искусство предположений» (Ars Conjectandi), изданную в 1713 году уже после смерти автора. Название «закон больших чисел» позже предложил Пуассон, а Чебышёв в XIX веке доказал общий вариант для средних с помощью своего неравенства.
x̄ₙ = (x₁ + x₂ + … + xₙ) / n → μ при n → ∞μ — математическое ожидание, то есть истинное среднее процесса. Для конверсии x — это 0 или 1, а x̄ₙ — доля конвертировавшихся.
Пример закона больших чисел: миллион бросков монеты
Классический пример — монета. Вероятность орла 0,5, но после десяти бросков доля орлов может оказаться и 0,3, и 0,7. Смоделируем миллион бросков с фиксированным зерном генератора и посмотрим на долю орлов по ходу серии.
После 10 бросков орлов 30%, после 100 — 47%, после тысячи — 48,2%. Начиная с десяти тысяч доля держится в пределах десятых долей процента от 0,5: 0,5003, 0,4994, 0,4993. Это и есть закон больших чисел в действии.
Теперь посмотрите на правый столбец. Разница «орлы минус решки» не стремится к нулю: после тысячи бросков она −36, после миллиона −1 318. Доля выравнивается, потому что эта разница растёт медленнее, чем число бросков. Закон не обещает, что счёт сравняется, — он обещает, что отставание станет маленьким относительно общего числа испытаний.
| Бросков | Доля орлов | Орлы − решки |
|---|---|---|
| 10 | 0,3000 | −4 |
| 100 | 0,4700 | −6 |
| 1 000 | 0,4820 | −36 |
| 10 000 | 0,5003 | +6 |
| 100 000 | 0,4994 | −118 |
| 1 000 000 | 0,4993 | −1 318 |
import numpy as np
rng = np.random.default_rng(2026)
flips = rng.integers(0, 2, size=1_000_000) # 1 — орёл, 0 — решка
# Доля орлов и разница «орлы − решки» после n бросков
heads = np.cumsum(flips)
for n in [10, 100, 1_000, 10_000, 100_000, 1_000_000]:
h = heads[n - 1]
print(f"n={n:>9,} доля орлов={h / n:.4f} орлы−решки={2 * h - n:+d}")
# Что выпадает сразу после пяти орлов подряд
run5 = np.convolve(flips, np.ones(5, dtype=int), mode="valid") == 5
nxt = flips[5:][run5[:-1]]
print(f"серий из 5 орлов: {nxt.size:,}, орёл следующим: {nxt.mean():.4f}")Слабый и сильный закон больших чисел: в чём разница
Слабый закон больших чисел говорит о фиксированном большом n. Выберите любой допуск, например 1 процентный пункт. Вероятность того, что доля после n испытаний отклонится от истинной больше чем на этот допуск, стремится к нулю при росте n. Это утверждение про один срез: «если собрать 100 000 пользователей, промахнуться на пункт почти невозможно».
Сильный закон больших чисел говорит обо всей траектории сразу. С вероятностью единица последовательность накопленных средних сходится к истинному значению: однажды войдя в узкий коридор вокруг μ, линия дальше из него не выходит, хотя момент входа заранее неизвестен. Это утверждение про весь график накопленной конверсии, а не про одну его точку.
Для аналитика разница почти не влияет на расчёты. Полезно другое: обе формы — утверждения о пределе. Ни одна не говорит, сколько наблюдений нужно на практике и насколько далеко от истины вы сейчас. На эти вопросы отвечают стандартная ошибка и центральная предельная теорема.
P(|x̄ₙ − μ| > ε) → 0 при n → ∞ для любого ε > 0ε — допуск, который вы выбираете сами: 1 п. п. конверсии, 10 ₽ среднего чека.
Закон больших чисел в аналитике: накопленная конверсия A/B-теста
Вернёмся к тесту из начала. В учебной базе SQL-курса таблица experiment_exposures хранит эксперимент onboarding_checklist: 1 527 пользователей в контроле и 1 541 в варианте с чек-листом, по одному на строку, с флагом converted. Посчитаем для контроля конверсию каждой недели и накопленную конверсию от старта.
Недельная конверсия контроля ходит от 9,2% до 24,5%. Накопленная сначала тоже скачет: 18,5% в первую неделю, 13,8% во вторую, и только с седьмой недели, после 657 пользователей, держится в полосе 19,9–20,8%. Итог за 90 дней — 20,0%.
Обратите внимание на провал второй недели. После 130 пользователей накопленная конверсия была на шесть пунктов ниже итоговой, хотя процесс не менялся: помесячно контроль даёт 18,2%, 21,8% и 19,4%, без тренда. Это обычная случайность небольшой выборки. Вариант с чек-листом к тому же дню набрал 30,0% на 140 пользователях. Останови вы тест в этот момент, эффект выглядел бы как 16,2 пункта вместо итоговых 10,3.
Учебная база SQL-курса, эксперимент onboarding_checklist, 1 527 пользователей контроля. 13-я неделя — шесть дней.
with weekly as (
select
(exposed_at::date - date '2026-06-01') // 7 + 1 as week,
count(*) as users,
sum(converted::int) as conversions
from experiment_exposures
where variant = 'control'
group by 1
)
select
week,
users,
round(100.0 * conversions / users, 1) as week_cr,
sum(users) over (order by week) as cum_users,
round(100.0 * sum(conversions) over (order by week)
/ sum(users) over (order by week), 1) as cum_cr
from weekly
order by week;Насколько далеко от истины цифра на раннем этапе
Таблица ниже — тот же контроль, но по дням. Слева число накопленных пользователей, справа — накопленная конверсия и её отклонение от итоговых 20,0%. В последнем столбце — примерный 95%-коридор, в котором должна лежать доля при истинной конверсии 20%: ±1,96·√(0,2·0,8/n). Эту формулу даёт уже не закон больших чисел, а центральная предельная теорема; для первых десятков пользователей она работает грубо.
Заметьте строку с 25 пользователями: там ровно 20,0%. Это совпадение, а не сходимость — через две недели, на 159 пользователях, накопленная конверсия ушла к 13,2%. Одна удачная точка не означает, что цифра устоялась. Смотреть нужно на ширину коридора: она сужается пропорционально √n, поэтому для вдвое более узкого коридора нужно вчетверо больше данных.
| Пользователей | Накопленная конверсия | Отклонение от 20,0% | 95%-коридор при 20% |
|---|---|---|---|
| 13 (1 июня) | 30,8% | +10,8 п. п. | ±21,7 п. п. |
| 25 (2 июня) | 20,0% | 0,0 п. п. | ±15,7 п. п. |
| 54 (5 июня) | 20,4% | +0,4 п. п. | ±10,7 п. п. |
| 159 (16 июня) | 13,2% | −6,8 п. п. | ±6,2 п. п. |
| 307 (4-я неделя) | 18,2% | −1,8 п. п. | ±4,5 п. п. |
| 657 (7-я неделя) | 20,4% | +0,4 п. п. | ±3,1 п. п. |
| 1 063 (10-я неделя) | 20,3% | +0,3 п. п. | ±2,4 п. п. |
| 1 527 (весь тест) | 20,0% | — | ±2,0 п. п. |
Почему маленькие сегменты и отдельные дни так прыгают
Из 90 дней теста в 58 контрольная группа набирала меньше 20 пользователей. Дневная конверсия контроля за это время принимала значения от 0% до 45,5%, её стандартное отклонение между днями — 10,3 процентного пункта. Процесс при этом тот же самый. Разброс создаёт маленькое n, а не поведение пользователей.
Тот же эффект появляется в любом узком срезе: страна с тридцатью регистрациями, редкий канал, пользователи одного тарифа за неделю. Если отсортировать сегменты по конверсии, в верху и внизу списка почти всегда окажутся самые маленькие. Они не лучшие и не худшие — у них просто самая широкая случайная вилка.
Отсюда рабочее правило: не читайте конверсию дня, в котором 40 пользователей. При истинной конверсии 20% такой день в 95% случаев покажет что угодно между 7,6% и 32,4% — коридор ±12,4 пункта. Смотрите на накопленный итог, агрегируйте до недели или объединяйте мелкие сегменты, а рядом с долей всегда пишите n.
with daily as (
select exposed_at::date as day, count(*) as users, avg(converted::int) as cr
from experiment_exposures
where variant = 'control'
group by 1
)
select
count(*) as days,
count(*) filter (where users < 20) as days_under_20,
round(100 * min(cr), 1) as min_day_cr,
round(100 * max(cr), 1) as max_day_cr,
round(100 * stddev_samp(cr), 1) as sd_day_cr
from daily;Чего закон больших чисел не говорит: ошибка игрока
Самое частое неверное прочтение звучит так: «пять раз подряд выпал орёл, значит, теперь должна пойти решка, чтобы доля вернулась к половине». Это ошибка игрока. Монета не помнит прошлых бросков, и после пяти орлов вероятность решки по-прежнему 0,5.
Проверим на той же симуляции. В миллионе бросков серия из пяти орлов подряд встретилась 31 083 раза, считая перекрывающиеся серии. Следующим броском после неё орёл выпал в 49,98% случаев. Никакой компенсации нет.
Доля всё равно возвращается к 0,5, но другим способом: не за счёт будущих решек, а за счёт того, что пять лишних орлов растворяются в тысячах следующих бросков. Та же логика у продуктовых метрик. Неудачная неделя конверсии не делает следующую неделю удачнее. Если вы ждёте «отскока» только потому, что цифра была низкой, вы ждёте ошибку игрока.
Второе, чего закон не говорит, — скорость. Он гарантирует сходимость в пределе, но не отвечает, хватит ли вам 1 500 пользователей или нужно 15 000. Сколько данных достаточно и какой ширины будет коридор вокруг оценки, считают через стандартную ошибку и центральную предельную теорему.
Когда закон больших чисел работает медленно или не работает
У теоремы есть условия, и на продуктовых данных они нарушаются чаще, чем кажется.
Первое — независимость и одинаковое распределение наблюдений. Если в знаменателе конверсии не пользователи, а сессии, одна активная учётная запись с двадцатью сессиями даёт двадцать сильно связанных наблюдений. Эффективный размер выборки оказывается меньше числа строк, и цифра сходится медленнее, чем обещает формула. Если процесс меняется во времени — сезонность, релиз посреди теста, смена трафика, — накопленное среднее сходится к среднему за период, а не к текущему значению.
Второе — конечное среднее. Бывают распределения, у которых математического ожидания нет вовсе; классический пример — распределение Коши. Для них накопленное среднее не успокаивается никогда: время от времени приходит настолько большое значение, что сдвигает всю сумму. В продуктовых метриках такого в чистом виде почти не бывает, но похожее поведение даёт очень тяжёлый хвост.
Третье — тяжёлые хвосты. Скорость сходимости зависит от коэффициента вариации метрики на пользователя: чем больше разброс относительно среднего, тем больше нужно наблюдений для той же относительной точности. В учебной базе доля платящих и выручка на пользователя сходятся почти одинаково: CV 2,01 и 2,34, для точности ±10% нужно 1 559 и 2 101 пользователь. Здесь нет крупных клиентов, максимальная выручка одного пользователя — 117.
На реальных данных с «китами» картина другая. Добавьте в эту базу одного гипотетического пользователя с оплатами на 5 000 — и выручка на пользователя вырастет с 6,64 до 7,72, на 16%, из-за одной строки из 4 614. При CV = 10, что для выручки с крупными клиентами не редкость, для той же точности ±10% понадобится уже 38 416 пользователей.
n ≈ (1,96 · CV / δ)², CV = σ / μПриближение для 95% уверенности. Для доли p коэффициент вариации равен √((1 − p) / p).
with per_user as (
select
u.user_id,
coalesce(sum(p.amount), 0) as revenue,
(count(p.payment_id) > 0)::int as is_payer
from users u
left join payments p on p.user_id = u.user_id
group by u.user_id
),
m as (
select 'доля платящих' as metric, avg(is_payer) as mean, stddev_pop(is_payer) as sd from per_user
union all
select 'выручка на пользователя', avg(revenue), stddev_pop(revenue) from per_user
)
select
metric,
round(mean, 4) as mean,
round(sd / mean, 2) as cv,
ceil(power(1.96 * sd / mean / 0.10, 2)) as n_for_10pct
from m;Как применять закон больших чисел в работе
Закон больших чисел — причина, по которой выборочной статистике вообще можно доверять. Но он же напоминает, что доверие покупается объёмом данных, и у каждой цифры есть своя цена в наблюдениях.
- Рядом с каждой долей и средним показывайте n. Конверсия 46% на 13 пользователях и 30% на 1 541 — разные по надёжности числа.
- Не принимайте решений по отдельным дням и мелким сегментам. Агрегируйте до недели, объединяйте редкие категории или ждите накопления.
- Считайте размер выборки до запуска теста, а не останавливайте его в момент, когда накопленная линия выглядит убедительно.
- Не ждите «отскока» после плохого периода: прошлые исходы не влияют на следующие.
- Для выручки и других метрик с тяжёлым хвостом проверяйте коэффициент вариации: при крупных клиентах данных нужно в разы больше, чем для конверсии.
- Проверяйте, что единица наблюдения совпадает с единицей рандомизации: пользователи, а не сессии или события.
Что читать дальше
Закон больших чисел говорит, что оценка сойдётся. Следующие материалы — о том, как быстро это происходит, как показать точность цифры и сколько данных собрать для теста.
Материалы по теме

Центральная предельная теорема простыми словами: зачем она аналитику
Центральная предельная теорема (ЦПТ): почему среднее скошенной метрики распределено почти нормально, как считать стандартную ошибку среднего σ/√n и почему правило «n ≥ 30» не закон. Симуляция на выручке из учебной базы.

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

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