Дисперсия vs стандартное отклонение: разница

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

Короткий ответ

  • Дисперсия (variance, σ² или s²) — средний квадрат отклонений от среднего
  • Стандартное отклонение (SD, σ или s) — квадратный корень из дисперсии
  • SD в тех же единицах, что и данные. Дисперсия — в квадратных единицах.

Формулы (для выборки):

variance = Σ(xᵢ − mean)² / (n − 1)
sd = sqrt(variance)

Простой пример

Зарплаты 5 сотрудников: 50, 60, 70, 80, 90 тыс. ₽.

mean   = 70

отклонения:    -20, -10,  0, 10, 20
квадраты:       400, 100,  0, 100, 400
сумма:          1000
variance:      1000 / (5-1) = 250 (тыс. ₽²)
sd:            sqrt(250) ≈ 15.8 (тыс. ₽)

SD = 15.8 тыс. ₽ — в тех же единицах, что зарплата. Можно сказать: «зарплата отклоняется от среднего в среднем на 15.8 тыс. ₽».

Variance = 250 — в «тысячах рублей в квадрате». Физически сложно интерпретировать.

Когда использовать дисперсию

  • Статистика на нижнем уровне: формулы A/B-тестов, ANOVA, регрессии — все работают с дисперсией
  • Сложение независимых случайных величин: Var(X + Y) = Var(X) + Var(Y)
  • Теория вероятностей: Var(aX) = a² Var(X)
  • Когда важна математическая корректность (тесты, доверительные интервалы)

Когда использовать SD

  • Описательная статистика: «в среднем зарплаты колеблются на ±16 тыс.»
  • Визуализация: error bars на графиках
  • Сравнение с mean: coefficient of variation = SD / mean
  • Бизнес-отчёты: понятнее нетехническим стейкхолдерам
  • Правило 68-95-99.7: в нормальном распределении 68% данных лежат в mean ± 1 SD

Связь через формулу

SD = sqrt(variance)
variance = SD²

Это одна и та же информация в разных единицах.

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

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

  • 68% данных в mean ± 1 SD
  • 95% в mean ± 2 SD (точнее 1.96)
  • 99.7% в mean ± 3 SD

Пример: средний чек 1000 ₽, SD = 200.

  • 68% чеков в [800; 1200]
  • 95% в [600; 1400]
  • Чек 1800 — это 4 SD от среднего, бывает в <0.01% случаев (возможно выброс).

Sample vs population

В формулах есть нюанс:

Population variance:  Σ(x − μ)² / N
Sample variance:      Σ(x − x̄)² / (n − 1)     ← делим на (n-1), не на n

Почему n-1? Это поправка Бесселя. Делает оценку несмещённой (unbiased estimator).

В Python:

  • numpy.std(x) → делит на n (population)
  • numpy.std(x, ddof=1) → делит на n-1 (sample)
  • pandas .std() → делит на n-1 (sample) по умолчанию

На собесе: если ddof не упомянули, обычно подразумевают sample (n-1).

Coefficient of variation (CV)

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

CV = SD / mean

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

  • Чеки 100 ± 50 → CV = 0.5 (большой разброс)
  • Чеки 10 000 ± 500 → CV = 0.05 (маленький относительный)

Без CV смотреть только SD обманчиво, если у метрик разные масштабы.

На A/B-тесте

В формулах A/B-тестов фигурирует именно variance (или SE = SD / sqrt(n)):

SE = SD / sqrt(n)
CI = mean ± 1.96 × SE

MDE (minimum detectable effect) обратно зависит от SD:

MDE ∝ SD / sqrt(n)

Чем выше SD — тем больше выборка нужна. Именно поэтому метрики с тяжёлым хвостом (чек, время на сайте) требуют огромных выборок.

В SQL

-- Postgres
SELECT
    VARIANCE(salary)     AS var_sample,    -- sample variance
    VAR_POP(salary)      AS var_pop,       -- population variance
    STDDEV(salary)       AS sd_sample,     -- sample SD
    STDDEV_POP(salary)   AS sd_pop         -- population SD
FROM employees;

VARIANCE / STDDEV в большинстве СУБД — sample (n-1).

В Python

import numpy as np
import pandas as pd

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

np.var(x)              # 200 (population, делит на n)
np.var(x, ddof=1)      # 250 (sample, делит на n-1)

np.std(x)              # ≈14.14 (population)
np.std(x, ddof=1)      # ≈15.81 (sample)

pd.Series(x).var()     # 250 (по умолчанию sample)
pd.Series(x).std()     # ≈15.81

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

Ошибка 1. Interpret variance напрямую

«Variance зарплаты — 250 тыс² рублей» — непонятно. Используйте SD.

Ошибка 2. Путать sample и population

В учебниках и практике разные формулы. Уточняйте, какой тип.

Ошибка 3. SD без mean

«SD = 100» — много это или мало? Зависит от mean. Используйте CV для сравнений.

Ошибка 4. Складывать SD

SD(X + Y) ≠ SD(X) + SD(Y)   — неверно
Var(X + Y) = Var(X) + Var(Y)  — верно (для независимых)
SD(X + Y) = sqrt(Var(X) + Var(Y))

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

FAQ

Что использовать для отчёта?

SD — понятнее бизнесу («плюс-минус столько-то»). Variance — для формул и статистики.

Sample или population?

В аналитике практически всегда sample (n-1), потому что работаем с выборкой.

Чем SD отличается от SE?

SD — разброс данных. SE (standard error) — разброс оценки (mean). SE = SD / sqrt(n).

Можно ли сравнивать SD у разных датасетов?

Только если масштаб одинаковый. Иначе — coefficient of variation.


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