Все материалы
Продуктовая аналитикаматериалстарт

Закон больших чисел простыми словами: формулировка и примеры

Закон больших чисел: почему среднее и доля стабилизируются с ростом выборки. Пример с монетой, накопленная конверсия A/B-теста в SQL, слабая и сильная форма, ошибка игрока и когда закон работает медленно.

КейсПрактика25 сентября 2026 г.12 мин

На второй день 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. Доля выравнивается, потому что эта разница растёт медленнее, чем число бросков. Закон не обещает, что счёт сравняется, — он обещает, что отставание станет маленьким относительно общего числа испытаний.

Результат запуска: 1 000 000 бросков, зерно 2026
БросковДоля орловОрлы − решки
100,3000−4
1000,4700−6
1 0000,4820−36
10 0000,5003+6
100 0000,4994−118
1 000 0000,4993−1 318
pythonДоля орлов сходится к 0,5, а разница орлов и решек — нет
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-я неделя — шесть дней.

Конверсия за неделюНакопленная конверсияИтог за 90 дней
Недельная и накопленная конверсия контрольной группы
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).

Коэффициент вариации и нужное n для точности ±10%
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 — разные по надёжности числа.
  • Не принимайте решений по отдельным дням и мелким сегментам. Агрегируйте до недели, объединяйте редкие категории или ждите накопления.
  • Считайте размер выборки до запуска теста, а не останавливайте его в момент, когда накопленная линия выглядит убедительно.
  • Не ждите «отскока» после плохого периода: прошлые исходы не влияют на следующие.
  • Для выручки и других метрик с тяжёлым хвостом проверяйте коэффициент вариации: при крупных клиентах данных нужно в разы больше, чем для конверсии.
  • Проверяйте, что единица наблюдения совпадает с единицей рандомизации: пользователи, а не сессии или события.

Что читать дальше

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

Продолжить чтение
Вся библиотека
Продуктовая аналитика25 сентября 2026 г.12 мин
Скошенная гистограмма с длинным правым хвостом, над ней — узкий симметричный колокол

Центральная предельная теорема простыми словами: зачем она аналитику

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

Читать материал
Продуктовая аналитика25 сентября 2026 г.12 мин
Ряд столбиков разной высоты с вершиной в центре: распределение числа успехов из фиксированного числа попыток

Биномиальное распределение: формула, пример и где оно в аналитике

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

Читать материал
Продуктовая аналитика24 июля 2026 г.11 мин
Два горизонтальных интервала: длинный и заметно более короткий.

Доверительный интервал: как показать, насколько точна ваша цифра

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

Читать материал