Нормальное распределение и правило 68–95–99.7
Колоколообразная кривая — самое важное распределение в статистике. Понять её — значит понять половину статистического вывода.
Нормальное (гауссово) распределение — симметричное колоколообразное распределение, полностью задаваемое двумя числами: средним μ (центр) и стандартным отклонением σ (ширина).
Почему нормальное везде
Рост людей, ошибки измерений, отклонения в производстве, шум в данных — всё это часто близко к нормальному. Причина глубокая: когда величина складывается из множества мелких независимых вкладов, их сумма стремится к нормальному виду (это центральная предельная теорема, к ней придём в конце раздела). Поэтому нормальное — рабочая лошадка статистики.
Форма колокола
У нормального распределения:
- оно симметрично относительно μ (среднее = медиане = моде);
- большинство значений кучкуется около центра, хвосты быстро тают;
- σ задаёт ширину: маленькое σ — узкий острый колокол, большое — широкий пологий.
Сгенерируем нормальные данные и убедимся, что среднее и медиана почти совпадают.
import random
from statistics import mean, median, stdev
random.seed(5)
# gauss(mu, sigma) даёт нормальную случайную величину
data = [random.gauss(100, 15) for _ in range(100000)]
print("Среднее:", round(mean(data), 2))
print("Медиана:", round(median(data), 2))
print("Стандартное отклонение:", round(stdev(data), 2))
Вывод:
Среднее: 99.98 Медиана: 99.96 Стандартное отклонение: 14.96
Мы задали μ = 100, σ = 15 — и выборка их аккуратно воспроизвела, а среднее с медианой почти совпали (признак симметрии).
Правило 68–95–99.7
Главная практическая формула про нормальное распределение. В пределах:
- 1σ от среднего лежит ≈ 68% данных;
- 2σ — ≈ 95%;
- 3σ — ≈ 99.7%.
Проверим это прямо на нашей выборке: посчитаем долю значений в каждом интервале.
import random
from statistics import mean, stdev
random.seed(5)
data = [random.gauss(100, 15) for _ in range(100000)]
mu, sigma = mean(data), stdev(data)
for k in (1, 2, 3):
lo, hi = mu - k * sigma, mu + k * sigma
inside = sum(1 for x in data if lo <= x <= hi)
print(f"В пределах {k} сигма: {inside / len(data) * 100:.1f}%")
Вывод:
В пределах 1 сигма: 68.3% В пределах 2 сигма: 95.4% В пределах 3 сигма: 99.7%
Точно как обещано: 68.3%, 95.4%, 99.7%. Это правило — мгновенный «детектор аномалий»: значение дальше 3σ от среднего бывает реже чем в 0.3% случаев, поэтому его стоит проверить.
Z-оценка: на сколько сигм отклонение
Z-оценка переводит любое значение в «число стандартных отклонений от среднего»: z = (x − μ) / σ. Она позволяет сравнивать величины из разных распределений на одном языке.
# Рост 190 см при среднем 175 и σ = 7
mu, sigma = 175, 7
x = 190
z = (x - mu) / sigma
print("Z-оценка роста 190:", round(z, 2))
# Балл теста 130 при среднем 100 и σ = 15
z2 = (130 - 100) / 15
print("Z-оценка балла 130:", round(z2, 2))
Вывод:
Z-оценка роста 190: 2.14 Z-оценка балла 130: 2.0
Рост 190 см отклоняется на 2.14σ, а балл 130 — на 2σ. Обе величины «примерно одинаково необычны», хотя измеряются в разных единицах — в этом и сила z-оценки. По правилу 68–95–99.7 оба значения попадают в редкие 5% хвостов.
Итог
- Нормальное распределение — симметричный колокол, заданный μ (центр) и σ (ширина).
- Правило 68–95–99.7: в 1σ/2σ/3σ от среднего лежит ≈68%/95%/99.7% данных.
- Значение дальше 3σ крайне редко — повод заподозрить аномалию.
- Z-оценка (x−μ)/σ выражает отклонение в сигмах и позволяет сравнивать разные шкалы.