Correlation vs covariance: разница

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

Короткий ответ

  • Covariance (ковариация) — направление совместного изменения переменных. Единицы = X × Y.
  • Correlation — та же идея, но нормализована на [−1, +1]. Без единиц.

Correlation = нормализованная ковариация.

Формулы

Covariance

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

Correlation (Pearson)

r(X, Y) = cov(X, Y) / (σₓ × σᵧ)

Пример

Данные роста (см) и веса (кг):

X (рост): 170, 175, 180, 185, 190
Y (вес):   60, 65, 75, 80, 90

Covariance: ~60 (в единицах см × кг). Положительная — рост и вес движутся вместе.

Correlation: ~0.98. Очень сильная положительная.

Covariance в см × кг — непонятно, много это или мало. Correlation в [−1, +1] — сразу понятно.

Главные отличия

Covariance Correlation
Единицы X × Y без единиц
Диапазон от −∞ до +∞ от −1 до +1
Интерпретация сложная простая
Чувствительность к масштабу да нет
Нормализация нет да

Когда использовать что

Covariance

  • Построение ковариационной матрицы (для PCA, ML-моделей)
  • Когда нужны величины (например, для портфельной теории)
  • Как промежуточный расчёт для correlation

Correlation

  • Anywhere, где хотите интерпретируемую меру связи
  • Сравнение разных пар переменных
  • Report для бизнеса («корреляция 0.8»)

В Python

import numpy as np

x = [170, 175, 180, 185, 190]
y = [60, 65, 75, 80, 90]

# covariance
np.cov(x, y)[0, 1]           # 62.5

# correlation
np.corrcoef(x, y)[0, 1]      # 0.9877

В pandas:

df.cov()       # матрица ковариаций
df.corr()      # матрица корреляций

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]

На диагонали — variances. Вне — covariances.

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

  • PCA — диагонализация ковариационной матрицы
  • Multivariate analysis
  • Линейная регрессия (β = (XᵀX)⁻¹ XᵀY)
  • Финансовые портфели (risk model)

Correlation matrix

То же, но нормализовано. Диагональ = 1. Вне — correlations.

     X    Y    Z
X  [1.00 0.85 0.40]
Y  [0.85 1.00 0.20]
Z  [0.40 0.20 1.00]

В pandas — df.corr().

Интерпретация на собесе

«Что такое covariance?» Совместное отклонение двух переменных от их средних.

«Чем отличается от корреляции?» Correlation — нормализованная covariance. Corr = cov / (σₓ × σᵧ).

«Какое значение covariance хорошее?» Нельзя сказать — зависит от единиц. Нужна correlation.

«Зачем нужна covariance matrix?» Для PCA, multivariate analysis, regression.

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

1. Интерпретировать covariance без учёта масштаба

Cov(прибыль, продажи) = 1 000 000. Много или мало? Зависит от единиц.

2. Путать correlation и dependence

Corr = 0 не значит независимы. Могут быть нелинейные связи (Y = X²).

3. Использовать covariance для сравнения

«Пара A имеет cov 50, B — 100, значит B связан сильнее» — может быть ошибкой из-за разных масштабов.

4. Zero covariance ≠ independence

Корреляция 0 не гарантирует независимость. Нелинейные зависимости не видны.

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

FAQ

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

Да. Отрицательная covariance = переменные движутся в разные стороны.

Почему correlation ∈ [−1, +1]?

Математически: Cauchy-Schwarz inequality гарантирует нормализацию.

Сovariance matrix всегда симметричная?

Да. Cov(X, Y) = Cov(Y, X).

Какую использовать в ML?

Обычно correlation — для feature selection. Covariance — для PCA и multivariate.


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