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, 90Covariance: ~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+ вопросами для собесов.