Стандартное отклонение простыми словами

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Зачем это знать

Стандартное отклонение (SD, σ) — базовая статистика для описания разброса данных. Вместе с mean даёт полную картину числовой переменной: «центр» и «разброс». Без SD невозможно построить доверительный интервал, посчитать размер выборки для A/B, понять, насколько «необычен» выброс.

На собеседовании для junior/middle аналитика SD спрашивают почти всегда: «чем отличается от дисперсии», «что такое правило 68-95-99.7», «как использовать в A/B-тестах». Без этих знаний — минимум уровня не пройти.

В статье:

  • Короткое объяснение и формула
  • SD vs variance — разница
  • Правило 68-95-99.7
  • Sample vs population SD (n vs n-1)
  • Применение в A/B-тестах

Короткое объяснение

SD — насколько в среднем значения отклоняются от mean.

Маленькое SD → данные сосредоточены около среднего. Большое SD → сильный разброс.

Пример

Зарплаты 5 человек: 50, 60, 70, 80, 90 тыс.

  • Mean = 70
  • Отклонения от среднего: -20, -10, 0, 10, 20
  • Квадраты: 400, 100, 0, 100, 400
  • Среднее квадратов: 200 → variance
  • SD = √200 ≈ 14.14 тыс.

Интерпретация: «зарплаты отклоняются от среднего в среднем на 14 тыс.».

Формула

Variance = Σ(xᵢ - mean)² / (n - 1)   [для выборки]
SD = sqrt(variance)

SD vs Variance

  • Variance: в квадратных единицах (тыс²) — непонятно
  • SD: в оригинальных единицах (тыс ₽) — понятно

SD = sqrt(variance).

Правило 68-95-99.7

Для нормального распределения:

  • 68% значений в mean ± 1σ
  • 95% в mean ± 2σ (точнее 1.96σ)
  • 99.7% в mean ± 3σ

Пример: чеки mean = 1000, SD = 200.

  • 68% чеков в [800, 1200]
  • 95% в [600, 1400]
  • 99.7% в [400, 1600]

Чек 1800 — 4σ от среднего, вероятность <0.01%, скорее всего outlier.

Sample vs Population

Population (вся совокупность)

variance = Σ(x - μ)² / N

Делим на N.

Sample (выборка)

variance = Σ(x - x̄)² / (n - 1)

Делим на n-1 (поправка Бесселя — unbiased estimator).

В аналитике почти всегда sample (n-1).

В Python

import numpy as np

data = [50, 60, 70, 80, 90]

np.std(data)              # 14.14 (population, делит на n)
np.std(data, ddof=1)      # 15.81 (sample, делит на n-1)

# в pandas по default — sample
pd.Series(data).std()     # 15.81

В SQL

-- Postgres
SELECT STDDEV(salary) FROM employees;          -- sample
SELECT STDDEV_POP(salary) FROM employees;      -- population

Применение в A/B

Standard Error

SE = SD / sqrt(n)

Чем меньше SE — тем точнее оценка среднего.

Confidence Interval

CI = mean ± 1.96 × SE  (для 95%)

Sample size

Для детектирования эффекта MDE:

n ∝ SD² / MDE²

Выше SD — больше выборка нужна.

Coefficient of Variation

Относительный разброс:

CV = SD / mean

Полезен для сравнения разных масштабов:

  • Зарплаты $50 ± $10: CV = 0.2
  • Цены $1000 ± $100: CV = 0.1

Второе относительно стабильнее.

На собесе

«Что такое SD?» Квадратный корень из variance. Средний разброс от mean.

«n или n-1?» Для sample (почти всегда) — n-1.

«Правило 68-95-99.7?» В normal distribution доли в пределах 1σ, 2σ, 3σ.

«SD для A/B?» Используется в формулах размера выборки и confidence intervals.

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

1. Путать SD и variance

Variance в квадратных единицах — бесполезно для интерпретации.

2. n или n-1

На собесе спросят осознанно: для sample всегда n-1.

3. Применять 68-95-99.7 на не-normal

Для скошенных distributions правило не работает. Используйте percentiles.

4. SD без mean

Без mean SD бесполезен. Всегда показывайте пару.

Связанные темы

FAQ

SD для скошенных данных?

Работает, но интерпретация хуже. IQR (Q3 - Q1) устойчивее.

Складывать SD?

Нельзя напрямую. Variance складывается для независимых: Var(X+Y) = Var(X) + Var(Y).

Что если SD = 0?

Все значения одинаковы. Редкость в реальных данных.

SD в неровных единицах?

CV (SD/mean) — нормализованный показатель.


Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.