Стандартное отклонение простыми словами
Карьерник — квиз-тренажёр в 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 бесполезен. Всегда показывайте пару.
Связанные темы
- Дисперсия vs SD
- Нормальное распределение простыми словами
- Sample vs population
- Медиана простыми словами
FAQ
SD для скошенных данных?
Работает, но интерпретация хуже. IQR (Q3 - Q1) устойчивее.
Складывать SD?
Нельзя напрямую. Variance складывается для независимых: Var(X+Y) = Var(X) + Var(Y).
Что если SD = 0?
Все значения одинаковы. Редкость в реальных данных.
SD в неровных единицах?
CV (SD/mean) — нормализованный показатель.
Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.