Data Science

Статистика для DS: описательная

Цели урока

  • Понимать, когда среднее обманывает и когда медиана точнее
  • Вычислять и интерпретировать стандартное отклонение и IQR
  • Определять тип распределения по гистограмме и соотношению mean/median
  • Применять правило 68-95-99.7 для нормально распределённых данных

Предварительные знания

  • Python для Data Science

2008 год. Риск-модели Lehman Brothers, Bear Stearns, AIG предсказывали: такое падение невозможно с вероятностью «один раз в миллиард лет». Рынок рухнул. Все модели предполагали нормальное распределение. Реальность оказалась степенным - с тяжёлыми хвостами, которых модели «не видели». Выбор правильной метрики - это не техническая деталь, это разница между иллюзией и реальностью.

  • **Zillow** использует медиану (а не среднее) для показа «типичной цены дома» в районе - потому что элитные особняки искажают среднее, создавая ложное впечатление дорогого района
  • **Amazon** мониторит p99 (99-й перцентиль) времени отклика серверов, а не среднее - потому что среднее 50ms скрывает 1% запросов с таймаутом 5 секунд, которые теряют клиентов
  • **Финансовый кризис 2008** частично вызван моделями, которые предполагали нормальное распределение убытков. Реальное распределение имело «тяжёлые хвосты» - экстремальные события случались в 1000 раз чаще, чем предсказывала нормальная модель

Карл Гаусс и нормальное распределение, которое стало нормой

В 1809 году Гаусс вывел нормальное распределение при изучении ошибок астрономических наблюдений. Удобство кривой было настолько велико, что статистики начали применять её повсеместно - к данным, которые этого не заслуживают. Адольф Кетле в 1835 году применил «человека среднего» и нормальное распределение к социальным данным, заложив опасную традицию видеть нормальное везде, где его нет. Настоящий перелом пришёл с работами Вильфредо Парето (1896) о распределении доходов - там нормального не было и в помине.

Среднее арифметическое: простое, но коварное

2023 год. Одна технологическая компания публикует отчёт: средняя зарплата сотрудника - 250 тысяч долларов. Журналисты пишут материалы о «новом стандарте индустрии». Потом всплывает деталь: CEO получает 50 миллионов долларов. Без CEO средняя зарплата - 85 тысяч. Один человек из 500 сдвинул число в три раза. **Среднее арифметическое - самая используемая и одновременно самая обманчивая статистика в мире.**

Формально: **среднее арифметическое (mean)** - это сумма всех значений, делённая на их количество. Матрица весов одинакова для всех.

**Среднее чувствительно к выбросам.** Один экстремальный value меняет результат радикально. Это не баг - это математическое свойство. Среднее «тянется» к выбросам, потому что каждое значение вносит свой вклад в сумму. Чем дальше выброс от основной массы, тем сильнее искажение.

**Взвешенное среднее (weighted mean)** - обобщение, где каждое значение имеет свой «вес». Используется когда значения имеют разную важность. В ML - именно так считаются loss-функции с class weights.

**Когда среднее работает хорошо?** Когда данные симметричны и без сильных выбросов: рост людей, температура за месяц, вес продукции на конвейере. Когда данные скошены (зарплаты, цены недвижимости, количество подписчиков) - среднее обманывает. Всегда строить гистограмму перед тем как использовать среднее.

В команде из 10 разработчиков зарплаты: 9 человек получают по 100 тысяч долларов, один - 1 миллион долларов (техлид-суперзвезда). Средняя зарплата команды = 190 тысяч долларов. Какое утверждение верно?

Медиана: устойчивая к выбросам

Если среднее - «центр масс» данных, то **медиана** - это «середина очереди». Выстрой все значения по порядку - медиана стоит ровно посередине. Половина значений меньше, половина больше. Ключевое: если крайний в очереди - миллиардер, это **никак не сдвинет** медиану. Она зависит только от ранга, не от абсолютных значений.

Amazon мониторит не среднее время отклика серверов, а p50 (медиану) и p99. Причина простая: среднее 50ms маскирует 1% запросов с 5-секундным таймаутом. Медиана показывает реальность для типичного клиента.

**Робастность (robustness)** - устойчивость статистики к выбросам. Медиана робастна, среднее - нет. Это критично при работе с реальными данными, которые всегда содержат ошибки, аномалии и выбросы.

**Квантили и перцентили** - обобщение медианы. Медиана - это 50-й перцентиль (Q2). Разделить данные можно на любое количество частей: - **Q1 (25-й перцентиль)** - четверть значений меньше - **Q2 (50-й перцентиль)** - медиана - **Q3 (75-й перцентиль)** - три четверти значений меньше - **IQR = Q3 - Q1** - межквартильный размах, мера разброса «средней половины» данных

ПоказательСреднее (mean)Медиана (median)
ЗарплатыИскажено топ-менеджерамиОтражает типичного работника
Цены недвижимостиЗавышено элитным жильёмПоказывает типичную квартиру
Время отклика сервераЗавышено тайм-аутамиОтражает типичный запрос
Рост людейАдекватно (нет экстремальных выбросов)Тоже адекватно, близко к среднему
Количество подписчиковИскажено звёздамиОтражает типичного блогера

**Правило большого пальца:** если mean и median сильно различаются - данные скошены (skewed). Указывать оба значения: «Медиана зарплат - 85K (среднее - 190K из-за высокооплачиваемого руководства)». Это честная коммуникация данных.

Время отклика API: [5ms, 8ms, 12ms, 15ms, 20ms, 25ms, 30ms, 35ms, 45ms, 5000ms]. Последний запрос - timeout. Какую метрику использовать для описания «типичного» времени отклика?

Стандартное отклонение: насколько данные разбросаны

Два класса сдали тест. Средний балл в обоих - 75. Но в первом классе все получили от 70 до 80, а во втором - от 30 до 100. Среднее одинаковое, но **разброс** принципиально разный. В Six Sigma это называется процессной нестабильностью. Для измерения разброса существует **стандартное отклонение (standard deviation, std)**.

**Дисперсия (variance)** - средний квадрат отклонений от среднего. **Стандартное отклонение (std)** - корень из дисперсии, имеет те же единицы, что и данные.

**Зачем возводить в квадрат?** Если просто сложить отклонения от среднего, они дадут 0 (положительные и отрицательные компенсируют друг друга). Возведение в квадрат делает все отклонения положительными и усиливает вес больших отклонений - выброс +50 вносит в 25 раз больше, чем отклонение +10.

**Правило 68-95-99.7** (для нормально распределённых данных): примерно 68% значений лежат в пределах ±1σ от среднего, 95% - в пределах ±2σ, 99.7% - в пределах ±3σ. Six Sigma строится именно на этом: процесс «отличный» когда допуск = ±6σ.

**Правило 68-95-99.7 работает ТОЛЬКО для нормального распределения.** Если данные скошены (зарплаты, цены, время отклика), правило не применимо. Для таких данных используйте IQR - он робастен, как медиана.

Два завода выпускают болты. Завод A: диаметр mean=10мм, std=0.01мм. Завод B: mean=10мм, std=0.5мм. Спецификация требует 10±0.5мм. Что можно сказать?

Распределения: форма данных определяет всё

Финансовый кризис 2008 года. Риск-модели банков предсказывали, что такое падение рынка невозможно. Буквально - математически невозможно. Они ошиблись. Причина: все модели предполагали нормальное распределение убытков. Реальное распределение имело «тяжёлые хвосты» - экстремальные события случались в 1000 раз чаще, чем предсказывала нормальная модель. Форма распределения определяет, какие статистики осмыслены и какие выводы корректны.

Четыре ключевых распределения, которые встречаются повсеместно: 1. **Нормальное (Гаусса)** - симметричный «колокол». Рост, IQ, ошибки измерений 2. **Равномерное** - все значения равновероятны. Генератор случайных чисел, бросок кубика 3. **Экспоненциальное** - время между событиями. Интервал между клиентами, время жизни лампочки 4. **Степенное (Парето)** - «длинный хвост». Богатство, размеры городов, частоты слов

РаспределениеФормаMean vs MedianПримеры в реальности
НормальноеСимметричный колоколMean ≈ MedianРост, вес, IQ, температура
РавномерноеПлоский прямоугольникMean = MedianБросок кубика, random()
ЭкспоненциальноеСкошено вправо, хвостMean > MedianВремя до следующего клиента
Степенное (Парето)Экстремальный хвостMean >> MedianДоходы, подписчики, города

**Central Limit Theorem (ЦПТ)** - одна из самых важных теорем статистики. Если взять **среднее** достаточно большой выборки из любого распределения, это среднее будет распределено нормально. Поэтому нормальное распределение встречается повсюду: рост человека - это «среднее» миллионов генетических и средовых факторов. ЦПТ объясняет, почему среднее из SGD-мини-батчей сходится к истинному градиенту.

**Как определить распределение данных?** 1) Постройте гистограмму + KDE. 2) Сравните mean и median: если close - скорее нормальное; mean >> median - скошено вправо. 3) Используйте QQ-plot: если точки лежат на прямой - нормальное. 4) Тест Шапиро-Уилка: `scipy.stats.shapiro(data)` - p-value < 0.05 означает «не нормальное».

Все данные в реальном мире нормально распределены. Можно всегда использовать среднее и стандартное отклонение.

Нормальное распределение - лишь одно из многих. Реальные данные часто скошены: доходы, цены, время отклика, размеры файлов следуют степенному или экспоненциальному распределению. Для таких данных медиана и IQR информативнее среднего и std.

Предположение нормальности привело к финансовому кризису 2008 года: модели недооценили «тяжёлые хвосты» убытков. Всегда проверять распределение визуально (гистограмма, QQ-plot) перед выбором статистик.

Ключевые идеи

  • **Среднее (mean)** - сумма / количество. Чувствительно к выбросам. Работает для симметричных данных (рост, температура), обманывает для скошенных (зарплаты, цены)
  • **Медиана** - значение посередине. Робастна к выбросам. Использовать для скошенных данных. Если mean - медиана сильно отличаются - данные скошены
  • **Стандартное отклонение (std)** - мера разброса. Правило 68-95-99.7 для нормального распределения. Коэффициент вариации (CV) - для сравнения разных шкал
  • **Распределения** - форма данных определяет выбор инструментов. Не всё нормальное! Проверять гистограммой и QQ-plot
  • Финансовый кризис 2008: нормальное распределение убытков в моделях против реальных тяжёлых хвостов. Выбор метрики - это решение о том, какую историю рассказывают данные

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

Описательная статистика - фундамент для всех последующих методов анализа:

  • Python для Data Science — NumPy и Pandas предоставляют все функции: np.mean(), df.describe(), np.percentile()
  • Визуализация данных — Гистограммы, boxplot, KDE - визуальные инструменты для понимания распределений

Вопросы для размышления

  • Новостной заголовок: «Средняя зарплата в стране выросла на 15%». Какие вопросы нужно задать, прежде чем делать вывод, что люди стали жить лучше?
  • Сервис показывает среднее время ответа 100ms. Клиенты жалуются на медленность. Как описательная статистика поможет разобраться?
  • Почему Central Limit Theorem считается одной из самых важных теорем в статистике? Какие практические следствия она имеет для Data Science?

Связанные уроки

  • ds-02 — Pandas и NumPy - инструменты для всех расчётов урока
  • ds-04 — Гистограммы и boxplot строятся поверх описательных метрик
  • ml-01 — Feature engineering начинается с mean, std, percentile по каждому признаку
  • prob-01-intro — Распределения из урока - частный случай теории вероятностей
  • ds-05 — Корреляция и ковариация опираются на mean и std
  • stat-01-sampling
Статистика для DS: описательная

0

1

Войти

Аналитик анализирует время загрузки страницы сайта. Гистограмма показывает пик на 200ms и длинный хвост до 10 секунд. Mean=800ms, Median=300ms. Какое распределение наиболее вероятно?