Data Science
Статистика для DS: описательная
Цели урока
- Понимать, когда среднее обманывает и когда медиана точнее
- Вычислять и интерпретировать стандартное отклонение и IQR
- Определять тип распределения по гистограмме и соотношению mean/median
- Применять правило 68-95-99.7 для нормально распределённых данных
Предварительные знания
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