Ковариация простыми словами

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Короткое объяснение

Ковариация (covariance) — мера того, насколько две переменные изменяются вместе.

  • Положительная covariance: когда X выше среднего, Y тоже выше. Движутся в одну сторону.
  • Отрицательная: X выше → Y ниже. Движутся в противоположные.
  • Нулевая: нет линейной связи.

Формула

cov(X, Y) = Σ(xᵢ − x̄)(yᵢ − ȳ) / (n − 1)

Для каждой пары (x, y):

  1. Считаем отклонение X от среднего
  2. Считаем отклонение Y от среднего
  3. Перемножаем
  4. Суммируем и усредняем

Пример

Продажи мороженого (X) и температура (Y) за 5 дней:

День | X (мороженое) | Y (температура)
  1  |     100       |     20
  2  |     150       |     25
  3  |     200       |     30
  4  |     120       |     22
  5  |     180       |     28

x̄ = 150, ȳ = 25

Ковариация ≈ +200. Положительная — когда теплее, продаётся больше мороженого.

Проблема covariance

Значение зависит от единиц.

  • Если измеряем в шт × °C → cov = 200
  • Если в тыс шт × K → cov = совсем другое число

Это плохо для интерпретации и сравнения.

Решение — Correlation

Correlation = covariance / (σₓ × σᵧ) → нормализованная, в [−1, +1].

Подробнее: correlation vs covariance.

Зачем нужна covariance

1. Промежуточный расчёт для correlation

Формула correlation включает covariance.

2. Covariance matrix

Для многомерных данных:

     X       Y       Z
X  [var_X,  cov_XY, cov_XZ]
Y  [cov_YX, var_Y,  cov_YZ]
Z  [cov_ZX, cov_ZY, var_Z]

Используется в:

  • PCA — разложение covariance matrix
  • Linear regression (β = (XᵀX)⁻¹ XᵀY)
  • Risk models в финансах
  • Multivariate analysis

3. Прямое использование в формулах

Некоторые формулы (variance суммы, портфельный риск) используют covariance напрямую.

4. Portfolio theory

Harry Markowitz Nobel Prize: оптимальный портфель минимизирует дисперсию через covariance matrix.

В Python

import numpy as np

x = [100, 150, 200, 120, 180]
y = [20, 25, 30, 22, 28]

# covariance (delta degrees of freedom = 1 → sample)
np.cov(x, y)[0, 1]     # ≈ 205

# covariance matrix
np.cov([x, y])

# в pandas
df[['x', 'y']].cov()

Интерпретация

  • cov(X, Y) > 0: положительная связь
  • cov(X, Y) < 0: отрицательная
  • cov(X, Y) ≈ 0: нет линейной связи

Но НЕ говорит:

  • Насколько сильная связь (нужен correlation)
  • Линейная или нелинейная
  • Причинно-следственная связь

Covariance vs correlation

Covariance Correlation
Диапазон −∞ до +∞ −1 до +1
Единицы X × Y без единиц
Интерпретация сложная простая
Для отчётов редко часто
В формулах часто реже

Правило: для intuition и отчётов — correlation. Для math и моделей — covariance.

Частые ошибки

1. Сравнивать covariance у разных пар

«Cov(A, B) = 50 vs Cov(C, D) = 100» — это не значит, что вторая пара «сильнее связана». Разные масштабы.

2. Zero covariance = independence

Нет. Zero covariance = нет ЛИНЕЙНОЙ связи. Могут быть нелинейные.

3. Использовать covariance для feature selection

Correlation удобнее — не зависит от масштаба.

4. Путать sample и population covariance

В статистике обычно sample (делим на n−1). В ML иногда population (делим на n).

На собесе

«Что такое covariance?» Мера совместного отклонения X и Y от их средних.

«Чем отличается от корреляции?» Correlation = cov / (σₓ × σᵧ). Нормализована в [−1, +1].

«Когда covariance = 0?» Когда нет линейной связи. Может быть нелинейная.

«Зачем нужна covariance matrix?» PCA, regression, portfolio theory.

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

FAQ

Covariance может быть отрицательной?

Да. Значит X и Y движутся в противоположные стороны.

Где применяется на практике?

PCA, линейная регрессия, portfolio optimization, ML-алгоритмы.

Covariance или correlation?

Для интерпретации — correlation. Для математических операций — covariance.

Sample или population?

Для анализа выборки — sample (n−1). В некоторых ML-алгоритмах — population.


Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.