Описательная статистика
Центр и разброс
| Мера | Формула / смысл | Чувствительна к выбросам? |
|---|---|---|
| Среднее $\bar{x}$ | $\frac{1}{n}\sum x_i$ | да |
| Медиана | середина отсортированного списка | нет |
| Мода | самое частое значение | нет |
| Дисперсия $s^2$ | $\frac{1}{n-1}\sum (x_i - \bar{x})^2$ | очень |
| Стандартное отклонение $s$ | $\sqrt{s^2}$, в единицах данных | очень |
| Перцентиль $p_q$ | значение, ниже которого $q\%$ данных | нет |
| Межквартильный размах IQR | $p_{75} - p_{25}$ | нет |

- У скошенных распределений (время ответа, доходы, длины текстов) среднее больше медианы — хвост тянет его вправо.
- Почему делят на $n - 1$: среднее посчитано по тем же данным, и отклонения от него в среднем меньше, чем от истинного $\mu$; поправка Бесселя компенсирует это.
- z-оценка $z = (x - \bar{x})/s$ — сколько стандартных отклонений от среднего. $\lvert z\rvert > 3$ — кандидат в выбросы.
Связь двух переменных
Корреляция Пирсона:
$$ r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2}\sqrt{\sum (y_i - \bar{y})^2}} \in [-1, 1] $$
- $r$ ловит только линейную связь; корреляция Спирмена — любую монотонную (считается по рангам).
- Корреляция ≠ причинность: продажи мороженого и число утоплений коррелируют из-за третьего фактора — жары.
Визуализация данных — что смотреть первым
Схема порядка изучения есть на странице оригинала.
🏋️ Практика Б10
Б10.1. Данные: 2, 4, 4, 4, 5, 5, 7, 9. Найдите среднее, медиану, моду и стандартное отклонение (по $n$).
▶️ Ответ
Среднее 5, медиана 4.5, мода 4, σ = 2 (дисперсия по $n$ равна 4).Б10.2. Время ответа сервиса: p50 = 120 мс, p99 = 2400 мс. Что это говорит о сервисе?
▶️ Ответ
Типичный запрос быстрый, но 1% запросов в 20 раз медленнее — тяжёлый хвост. Среднее тут почти бесполезно; оптимизировать нужно хвост (таймауты, батчинг, кэш).Б10.3. Посчитайте корреляцию между $x = (1, 2, 3, 4, 5)$ и $y = x^2$ и между $x = (-2, -1, 0, 1, 2)$ и $y = x^2$.
▶️ Ответ
import numpy as np
x = np.arange(1, 6); print(np.corrcoef(x, x**2)[0, 1]) # 0.98 — почти линейная связь
x = np.arange(-2, 3); print(np.corrcoef(x, x**2)[0, 1]) # 0.0 — связь есть, но нелинейная