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