Равномерное и нормальное распределения

Переходим к непрерывным величинам: равномерной «без предпочтений» и нормальной — самой важной в статистике.

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

До сих пор случайные величины принимали отдельные значения. Но рост, время, погрешность измерения — непрерывны. Для них вместо вероятности отдельной точки задают плотность. Двумя важнейшими непрерывными распределениями являются равномерное и нормальное. Что значит «плотность»? Для непрерывной величины вероятность попасть точно в одну точку равна нулю — точек бесконечно много, и каждой достаётся «нулевая доля». Поэтому вместо вероятностей точек задают плотность: чем выше плотность над участком, тем вероятнее туда попасть, а вероятность интервала — это площадь под графиком плотности над ним. Площадь под всей кривой равна единице, как сумма всех вероятностей. Равномерное распределение даёт плоскую плотность — никаких предпочтений, а нормальное — колокол с пиком в центре и быстро спадающими краями. Эти две формы — основа почти всего непрерывного моделирования, от генерации случайных чисел до статистики ошибок.

Равномерное распределение

Величина равномерна на отрезке $[a;b]$, если все его точки «одинаково предпочтительны». Её плотность постоянна, а ожидание лежит ровно посередине:

$$\mathbb{E}[X]=\frac{a+b}{2},\qquad \mathrm{Var}(X)=\frac{(b-a)^2}{12}.$$

Функция random.random() даёт равномерное распределение на $[0;1)$ с ожиданием $0{,}5$ и дисперсией $\frac{1}{12}\approx 0{,}0833$. Проверим вероятность попасть в первую четверть отрезка — она должна равняться $0{,}25$.

import random, statistics
random.seed(17)

N = 1000000
sample = [random.random() for _ in range(N)]
in_quarter = sum(1 for x in sample if x < 0.25) / N
print("P(X < 0.25):", round(in_quarter, 4), "| теория 0.25")
print("E[X]:      ", round(statistics.mean(sample), 4), "| теория 0.5")
print("Var(X):    ", round(statistics.pvariance(sample), 4), "| теория 0.0833")

Вывод:

P(X < 0.25): 0.2497 | теория 0.25
E[X]:       0.5001 | теория 0.5
Var(X):     0.0833 | теория 0.0833

Нормальное распределение

Нормальное распределение (Гаусса) задаётся плотностью

$$f(x)=\frac{1}{\sigma\sqrt{2\pi}}\exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right),$$

где $\mu$ — центр (ожидание), $\sigma$ — стандартное отклонение (ширина колокола). Оно вездесуще, потому что суммы многих независимых влияний стремятся к нему (центральная предельная теорема). Знаменитое «правило трёх сигм»: в интервал $\mu\pm\sigma$ попадает около $68\%$ значений, в $\mu\pm 2\sigma$ — около $95\%$, в $\mu\pm 3\sigma$ — около $99{,}7\%$. Проверим симуляцией через random.gauss.

import random
random.seed(18)

mu, sigma = 0.0, 1.0
N = 1000000
within1 = within2 = within3 = 0
for _ in range(N):
    x = random.gauss(mu, sigma)
    d = abs(x - mu)
    if d < sigma:      within1 += 1
    if d < 2 * sigma:  within2 += 1
    if d < 3 * sigma:  within3 += 1
print("В пределах 1 сигма:", round(within1 / N, 4), "| теория 0.6827")
print("В пределах 2 сигма:", round(within2 / N, 4), "| теория 0.9545")
print("В пределах 3 сигма:", round(within3 / N, 4), "| теория 0.9973")

Вывод:

В пределах 1 сигма: 0.6829 | теория 0.6827
В пределах 2 сигма: 0.9545 | теория 0.9545
В пределах 3 сигма: 0.9973 | теория 0.9973

Доли попаданий идеально совпали с правилом трёх сигм — значения концентрируются у центра, и далеко от него почти ничего нет.

Стандартизация

Любую нормальную величину сводят к стандартной ($\mu=0$, $\sigma=1$) преобразованием $Z=\frac{X-\mu}{\sigma}$. Это позволяет пользоваться одной таблицей для всех нормальных распределений и сравнивать величины в разных масштабах — отсюда понятие «z-оценки».

Как работает под капотом

Для непрерывной величины вероятность конкретной точки равна нулю, поэтому мы считаем не точки, а доли попаданий в интервалы — именно это делает симуляция, проверяя $P(X\lt 0{,}25)$ или $|X-\mu|\lt\sigma$. Функция random.gauss внутри использует преобразование равномерных чисел в нормальные, так что сама нормальность тоже «выращена» из равномерного random(). Совпадение долей с правилом сигм подтверждает форму гауссовой плотности численно.

Частые ошибки

Первая ошибка — искать вероятность конкретного значения непрерывной величины: она всегда нуль, спрашивать надо про интервал. Вторая — путать $\sigma$ и $\sigma^2$: в плотности и в правиле сигм участвует именно стандартное отклонение. Третья — считать любые «колоколообразные» данные нормальными: реальные распределения часто имеют «тяжёлые хвосты», где крупные отклонения куда вероятнее, чем предсказывает Гаусс.

Итог

  • Равномерное: все точки отрезка равноправны, $\mathbb{E}[X]=\frac{a+b}{2}$.
  • Нормальное распределение задаётся центром $\mu$ и шириной $\sigma$.
  • Правило трёх сигм: $68\%$, $95\%$, $99{,}7\%$ значений в $\mu\pm\sigma,2\sigma,3\sigma$.
  • Для непрерывных величин вероятность точки нулевая — считают интервалы.
Проверьте себя
1. Чему равно ожидание равномерного распределения на [a; b]?
Aa
Bb
C(a+b)/2
D(b−a)²/12
2. Какая доля значений нормального распределения попадает в μ ± 2σ?
Aоколо 68%
Bоколо 95%
Cоколо 99,7%
D100%
3. Чему равна вероятность конкретного значения у непрерывной величины?
A1
B0,5
C0
DЗависит от плотности