Все материалы
Продуктовая аналитикаматериалстарт

Дисперсия и стандартное отклонение: что это и как посчитать

Дисперсия — средний квадрат отклонения от среднего, стандартное отклонение — корень из неё. Формулы, пример на пяти числах, почему делят на n − 1, расчёт в SQL, Excel и Python, типичные ошибки.

КейсПрактика24 сентября 2026 г.12 мин

В ежемесячном отчёте рядом со средним DAU за август стоит «σ = 64,8», и продакт спрашивает, много это или мало. Вы пересчитываете и видите: если убрать 30 августа, стандартное отклонение падает до 44,1. Данные за этот день обрываются в 12:59, и один неполный день раздул разброс почти в полтора раза. Чтобы ловить такие вещи, нужно понимать, что именно считают дисперсия и стандартное отклонение, из чего они складываются и на что реагируют сильнее всего.

Коротко

  • Дисперсия — это средний квадрат отклонения значений от их среднего. Она измеряется в квадратных единицах: «пользователи в квадрате», «рубли в квадрате».
  • Стандартное отклонение (оно же среднеквадратичное отклонение, σ или s) — это квадратный корень из дисперсии. Оно в тех же единицах, что и данные, поэтому его и показывают в отчётах.
  • По выборке дисперсию делят на n − 1, а не на n. На пяти точках разница заметна, на тысяче — почти нет.
  • Стандартное отклонение описывает разброс наблюдений. Точность среднего описывает другое число — стандартная ошибка.
  • Один выброс способен раздуть стандартное отклонение в разы. Если в данных длинный хвост, рядом ставьте медиану и межквартильный размах.

Что такое дисперсия простыми словами

Среднее отвечает на вопрос «где центр». Дисперсия отвечает на следующий: насколько далеко от этого центра обычно лежат значения. Два магазина со средним чеком 2 000 ₽ могут жить совсем по-разному: у одного почти все чеки от 1 800 до 2 200 ₽, у другого половина по 500 ₽, а остальное — крупные заказы. Среднее одинаковое, дисперсия — нет.

Считается она так: от каждого значения отнимают среднее, получают отклонение, возводят его в квадрат и усредняют квадраты. Квадрат нужен по двум причинам. Без него отклонения вверх и вниз взаимно погасят друг друга: их сумма всегда равна нулю. И квадрат сильнее наказывает большие отклонения, чем маленькие, — это важное свойство, к нему мы вернёмся на выбросах.

Стандартное отклонение — это корень из дисперсии. Корень возвращает единицы измерения обратно: если DAU меряют в пользователях, то и стандартное отклонение DAU — в пользователях. Его можно положить рядом со средним и сравнить глазами.

Как посчитать дисперсию: пример на пяти числах

Возьмём регистрации за пять дней: 40, 70, 80, 100 и 110. Сумма — 400, среднее — 80 регистраций в день.

Дальше четыре шага. Отнимаем среднее от каждого дня. Возводим отклонения в квадрат. Складываем квадраты — получается 3 000. Делим на n − 1 = 4 и получаем выборочную дисперсию 750. Корень из 750 — это стандартное отклонение, 27,39 регистрации.

Проверьте себя на столбце отклонений: −40, −10, 0, 20, 30 в сумме дают ноль. Так будет всегда, какие бы числа вы ни взяли. Поэтому среднее отклонение без квадратов бесполезно — оно всегда нулевое.

Читается результат так: в обычный день регистраций примерно на 27 больше или меньше, чем 80. Это не граница и не гарантия, а типичный масштаб колебаний.

Ручной расчёт дисперсии: регистрации за пять дней
ДеньРегистраций, xОтклонение x − x̄Квадрат отклонения
140−401 600
270−10100
38000
410020400
511030900
Итогосреднее 80сумма 0сумма 3 000
Дисперсия3 000 / 4 = 750
Стандартное отклонение√750 ≈ 27,39

Формулы дисперсии: генеральная и выборочная

Формул две, и отличаются они только знаменателем. Если у вас все значения, которые вообще существуют — например, выручка по всем 12 месяцам прошлого года, и вывод касается только этих месяцев, — делят на n. Это дисперсия генеральной совокупности, её обозначают σ².

Если данные — выборка, по которой вы хотите судить о процессе в целом, делят на n − 1. Это выборочная дисперсия s². В аналитике почти всё — выборка: пользователи этого месяца, участники теста, дни квартала. Поэтому по умолчанию берите n − 1, и именно так работают stddev в PostgreSQL, СТАНДОТКЛОН.В в Excel и std() в pandas.

В нашем примере генеральная дисперсия равна 3 000 / 5 = 600, стандартное отклонение — 24,49. Выборочная — 750 и 27,39. Дисперсии различаются на четверть, стандартные отклонения — на 12%: для пяти точек это существенно.

Дисперсия и стандартное отклонение
σ² = Σ(x − μ)² / n; s² = Σ(x − x̄)² / (n − 1); s = √s²

μ — среднее всей совокупности, x̄ — среднее выборки. Знаменатель n − 1 называют поправкой Бесселя.

Почему в выборочной дисперсии делят на n − 1

Отклонения мы считаем от среднего самой выборки, а не от настоящего среднего процесса, которое неизвестно. Выборочное среднее по построению — то значение, при котором сумма квадратов отклонений от своих точек минимальна. От любого другого центра, включая настоящий, сумма квадратов была бы больше.

Значит, деление на n систематически занижает разброс. В среднем такая оценка даёт (n − 1) / n от настоящей дисперсии: на пяти точках — 80%, на двух — только половину. Деление на n − 1 возвращает недостающее, и в среднем по многим выборкам оценка получается без смещения.

Есть и второе объяснение, про степени свободы. Отклонения от выборочного среднего в сумме дают ноль, поэтому свободны только n − 1 из них: зная первые четыре отклонения из нашего примера, пятое вы вычислите сами. Одна степень свободы ушла на оценку среднего.

На больших данных спор теряет смысл. У 1 251 оплаты в учебной базе выборочная дисперсия суммы — 47,50, генеральная — 47,46, стандартные отклонения 6,892 и 6,889. Разница меньше десятой процента. Выбирать знаменатель нужно осознанно, но переживать из-за него стоит только на малых выборках.

Коэффициент вариации: много это или мало

Само по себе стандартное отклонение ничего не говорит о том, большой ли разброс. 44 пользователя — огромные колебания для сервиса с DAU 100 и незаметные для DAU 100 000. Чтобы сравнивать, делят стандартное отклонение на среднее. Это коэффициент вариации, CV.

На учебной базе это выглядит так. DAU за 1–29 августа: среднее 486,9, стандартное отклонение 44,1, CV около 9% — аудитория от дня к дню довольно стабильна. Сумма оплаты: среднее 24,49, стандартное отклонение 6,89, CV 28%. Пауза между двумя действиями пользователя: среднее 95,8 часа, стандартное отклонение 130,8 часа, CV 137%. Разброс больше самого среднего — первый признак длинного хвоста.

CV имеет смысл только для величин, у которых есть естественный ноль и нет отрицательных значений: деньги, количество, время. Для температуры в градусах или для прироста в процентах, который может быть и плюсом, и минусом, он даёт бессмыслицу.

Коэффициент вариации
CV = s / x̄

Безразмерный: позволяет сравнить разброс метрик в разных единицах и разного масштаба.

Стандартное отклонение и стандартная ошибка — не одно и то же

Стандартное отклонение описывает, насколько различаются сами наблюдения: одни оплаты по 19, другие по 39. Стандартная ошибка описывает, насколько неточно посчитано среднее по этим наблюдениям. Первое — свойство процесса, второе — свойство вашей выборки.

Связаны они просто: стандартная ошибка равна стандартному отклонению, делённому на корень из n. У 1 251 оплаты s = 6,89, а стандартная ошибка среднего — 0,195. Поэтому средний чек 24,49 известен с точностью примерно ±0,38 при 95% доверии, хотя отдельные оплаты отличаются от него на 4,5–14,5.

Путаница здесь стоит дорого. Если построить «доверительный интервал» из стандартного отклонения, он окажется в √n раз шире, чем нужно, и любое изменение метрики будет выглядеть шумом. Если наоборот, стандартной ошибкой описать разброс клиентов, клиенты покажутся одинаковыми.

Стандартная ошибка среднего
SE = s / √n

Больше данных — точнее среднее. Разброс самих наблюдений от размера выборки не зависит.

Правило 68–95–99,7: когда на него можно опираться

Часто пишут, что в пределах одного стандартного отклонения от среднего лежит 68% данных, двух — 95%, трёх — 99,7%. Это свойство нормального распределения, а не любых данных. Для нормального распределения точные доли — 68,27%, 95,45% и 99,73%.

Проверим на учебной базе. Число событий на пользователя распределено почти симметрично: среднее 7,66, стандартное отклонение 3,55, и в пределах ±1σ лежит 64,0% пользователей, ±2σ — 96,4%, ±3σ — 99,8%. Правило работает неплохо.

С паузами между действиями всё иначе. Среднее 95,8 часа минус одно стандартное отклонение 130,8 даёт −35 часов: отрицательной паузы не бывает. В пределах ±1σ оказывается 88,2% интервалов вместо 68%, а за пределами ±3σ — 2,2% вместо 0,3%. Правило «всё дальше трёх сигм — аномалия» здесь пометило бы 690 обычных возвращений — пауз длиннее 488 часов, то есть примерно трёх недель.

Для любого распределения гарантировано только более слабое неравенство Чебышёва: в пределах k стандартных отклонений лежит не меньше 1 − 1/k² значений. Для двух сигм это 75%, а не 95%.

Доля значений в пределах 1, 2 и 3 стандартных отклонений от среднего, %

Учебная база SQL-курса, DuckDB. События на пользователя — 4 613 пользователей, паузы между действиями — 30 728 интервалов.

Нормальное распределениеСобытия на пользователяПаузы между действиями

Почему выбросы так сильно влияют на стандартное отклонение

Вернёмся к пяти дням регистраций и заменим 110 на 410 — в пятый день прошла промоакция. Среднее выросло с 80 до 140, стандартное отклонение — с 27,39 до 152,48, в 5,6 раза. Медиана осталась 80. Одно значение, возведённое в квадрат, перевесило остальные четыре вместе.

Когда хвост тяжёлый или в данных возможен мусор, рядом со стандартным отклонением ставят устойчивые меры разброса. Медианное абсолютное отклонение (MAD) — медиана модулей отклонений от медианы: в обоих вариантах примера оно равно 20. Межквартильный размах — разница между 75-м и 25-м перцентилями, он тоже не заметил промоакции.

Выброс не обязательно редкое событие. Неполный последний день — тот же выброс, только технический. DAU за 1–29 августа имеет стандартное отклонение 44,1. Добавьте 30 августа, где данные обрываются в 12:59 и DAU равен 223, — и стандартное отклонение становится 64,8, а среднее падает с 486,9 до 478,1. Перед расчётом разброса по дням всегда проверяйте, закрыт ли последний день.

Ещё одна ловушка — тренд. За все 91 день DAU в учебной базе стандартное отклонение равно 147,4, но это не колебания: аудитория выросла с 32 до почти 600 человек в день. Стандартное отклонение ряда с трендом измеряет рост, а не нестабильность. Считайте его на коротком стабильном окне или на отклонениях от тренда.

Один неполный день меняет разброс DAU: 44,1 против 64,8
with daily as (
  select event_time::date as day, count(distinct user_id) as dau
  from events
  group by 1
)
select
  count(*) filter (where day < '2026-08-30') as days_29,
  round(avg(dau) filter (where day < '2026-08-30'), 1) as mean_29,
  round(stddev_samp(dau) filter (where day < '2026-08-30'), 1) as sd_29,
  count(*) as days_30,
  round(avg(dau), 1) as mean_30,
  round(stddev_samp(dau), 1) as sd_30
from daily
where day >= '2026-08-01';

Как посчитать дисперсию и стандартное отклонение в SQL

В PostgreSQL, DuckDB и большинстве аналитических баз функций четыре: var_samp и var_pop для дисперсии, stddev_samp и stddev_pop для стандартного отклонения. Суффикс _samp делит на n − 1, _pop — на n. Короткие variance и stddev в PostgreSQL и DuckDB — синонимы выборочных версий. В ClickHouse те же функции называются varSamp, varPop, stddevSamp и stddevPop.

Все они агрегатные: работают с group by, игнорируют NULL, а для одной строки выборочная версия возвращает NULL — делить на n − 1 = 0 нельзя. Если разброс нужен по пользователям, а в таблице события, сначала соберите одну строку на пользователя в подзапросе и только потом агрегируйте.

Медианного абсолютного отклонения в стандартном SQL нет. В DuckDB есть функция mad(), в PostgreSQL его собирают из двух медиан через percentile_cont(0.5) within group (order by …).

Разброс суммы оплаты в учебной базе: 47,50 и 47,46, 6,892 и 6,889
select
  round(avg(amount), 2)          as mean_amount,
  round(var_samp(amount), 2)     as var_samp,
  round(var_pop(amount), 2)      as var_pop,
  round(stddev_samp(amount), 3)  as sd_samp,
  round(stddev_pop(amount), 3)   as sd_pop
from payments;

Дисперсия и стандартное отклонение в Excel и Python

В Excel и Google Таблицах суффикс в названии функции подсказывает знаменатель: «.В» — выборка, делит на n − 1, «.Г» — генеральная совокупность, делит на n. Старые функции СТАНДОТКЛОН и ДИСП без суффикса считают по выборке и оставлены для совместимости.

В Python главное различие — между библиотеками. numpy.std и numpy.var по умолчанию делят на n (ddof=0), а методы std() и var() у pandas — на n − 1 (ddof=1). Один и тот же массив даёт два разных ответа, и на маленьких группах это заметно. Параметр ddof лучше указывать явно.

Где какой знаменатель
ИнструментВыборочная (n − 1)Генеральная (n)
PostgreSQL, DuckDBvar_samp, stddev_samp, variance, stddevvar_pop, stddev_pop
ClickHousevarSamp, stddevSampvarPop, stddevPop
Excel (рус.)ДИСП.В, СТАНДОТКЛОН.ВДИСП.Г, СТАНДОТКЛОН.Г
Excel (англ.), Google ТаблицыVAR.S, STDEV.SVAR.P, STDEV.P
numpynp.std(x, ddof=1)np.std(x) — по умолчанию
pandass.std() — по умолчаниюs.std(ddof=0)
pythonОдин массив, два ответа по умолчанию
import numpy as np
import pandas as pd

x = [40, 70, 80, 100, 110]

np.std(x)            # 24.49 — ddof=0, делит на n
np.std(x, ddof=1)    # 27.39 — делит на n − 1
pd.Series(x).std()   # 27.39 — в pandas по умолчанию ddof=1
np.var(x, ddof=1)    # 750.0

Типичные ошибки

Почти все ошибки со стандартным отклонением происходят не в формуле, а в том, какие данные в неё попали и как потом прочитали результат.

  • Показывать дисперсию в отчёте. «Дисперсия DAU — 1 941 пользователь в квадрате» никто не прочтёт — показывайте стандартное отклонение.
  • Сравнивать стандартные отклонения метрик разного масштаба. Для этого есть коэффициент вариации.
  • Считать разброс по событиям, когда вопрос про пользователей. Сначала одна строка на единицу наблюдения, потом агрегат.
  • Включать неполный последний день или период с трендом и называть результат «волатильностью».
  • Путать стандартное отклонение со стандартной ошибкой и строить интервалы не из того числа.
  • Применять правило трёх сигм к данным с длинным хвостом: деньгам, времени, числу покупок.
  • Сравнивать numpy и pandas на одних данных и искать ошибку в коде, когда разница в ddof.

Что читать дальше

Стандартное отклонение — вход для доверительных интервалов, расчёта размера выборки и сравнения групп. Если данные с длинным хвостом, дополняйте его перцентилями.

Продолжить чтение
Вся библиотека
Продуктовая аналитика16 июля 2026 г.20 мин

Статистика для аналитика с нуля: разброс, перцентили, форма данных и выборка

Что из статистики нужно в рабочий день: как читать разброс и стандартное отклонение, зачем p90 и p99, почему продуктовые данные почти никогда не нормальные и чем выборочная ошибка отличается от смещения.

Читать материал
Продуктовая аналитика24 сентября 2026 г.9 мин
Две почти одинаковые колонки на весах, стрелка которых стоит у нуля

Нулевая гипотеза простыми словами: что это и как её формулировать

Нулевая гипотеза (H0) — утверждение, что эффекта или разницы нет. Чем она отличается от альтернативной гипотезы H1, как формулировать H0 для A/B-теста и продуктовых вопросов, что значит «отвергнуть» и «не отвергнуть» H0 — с расчётом z-теста на учебной базе.

Читать материал
Продуктовая аналитика24 сентября 2026 г.11 мин
Облако точек, вытянутое вдоль диагонали, и одна далёкая точка в стороне от него

Корреляция простыми словами: что значит «коррелирует» и как читать r

Что такое корреляция и что значит «коррелирует»: коэффициент Пирсона от −1 до 1, r², Спирмен, выбросы, общий тренд и уровень агрегации. Как посчитать корреляцию в SQL, Excel и pandas — на примерах с учебной базы.

Читать материал