Ковариация и корреляция 🔗
Открой практически любой ноутбук с разведочным анализом данных (EDA) перед обучением модели — почти наверняка одной из первых ячеек будет что-то вроде df.corr(), а сразу за ней — тепловая карта с цветными квадратиками от синего к красному. Это и есть корреляционная матрица: сетка чисел от $-1$ до $1$, показывающая, насколько каждая пара признаков в датасете связана друг с другом линейно. Именно с этой картинки дата-сайентист обычно начинает разговор с данными — задолго до того, как выбрана архитектура модели, задолго до кросс-валидации. И вся эта картинка целиком строится на одной-единственной идее, которую мы разберём сегодня: как взять два столбца чисел и получить одно число, описывающее, насколько согласованно они меняются.
В прошлом уроке ты научился строить совместное распределение случайного вектора, находить маргинальные и условные распределения, проверять независимость через факторизацию плотности. Это мощный, но громоздкий аппарат: чтобы полностью описать связь между двумя признаками, тебе нужна вся функция $f(x,y)$ целиком. На практике же почти всегда хочется более простого ответа на вопрос «а насколько сильно эти два признака связаны?» — желательно в виде одного числа, которое можно быстро сравнить с другим числом. Ковариация и корреляция — это ровно такая свёртка: они жертвуют почти всей информацией о форме совместного распределения ради одного компактного числа, которое описывает конкретно линейную составляющую связи.
Это очень мощный инструмент, но с встроенной ловушкой: свернув богатую совместную картину в единственное число, легко забыть, что осталось за кадром. Именно поэтому этот урок наполовину про математику (как ковариация и корреляция определяются и вычисляются), а наполовину — про дисциплину мышления: что означает знак и величина корреляции, чем корреляционная матрица помогает при отборе признаков и поиске мультиколлинеарности, как ковариационная матрица лежит в основе метода главных компонент (PCA) — и почему фраза «между X и Y есть корреляция» практически никогда не означает «X вызывает Y», хотя человеческий мозг склонен читать её именно так.
🎯 Ты узнаешь:
- Что такое ковариация как мера совместной изменчивости двух случайных величин, и что означает её знак
- Почему само значение ковариации нельзя использовать для сравнения силы связи между разными парами признаков — и как коэффициент корреляции Пирсона решает эту проблему нормировкой
- Как доказывается, что коэффициент корреляции всегда лежит в диапазоне $[-1, 1]$, и что означают его крайние и промежуточные значения
- Почему нулевая корреляция не гарантирует независимость величин, а сильная корреляция не гарантирует причинно-следственную связь — на классических примерах вроде мороженого и утоплений
- Как ковариация обобщается на многомерный случай в виде ковариационной матрицы, и как её собственные значения и собственные векторы лежат в основе метода главных компонент (PCA)
- Как корреляционная матрица признаков используется в разведочном анализе данных (EDA) для поиска мультиколлинеарности и первичного отбора признаков перед обучением модели
История: откуда это взялось?
Идея измерять связь между двумя величинами одним числом родилась там же, где и совместное распределение — у Фрэнсиса Гальтона, изучавшего наследственность роста в 1880-х годах. Гальтон заметил не только то, что рост родителей и детей связан (это было очевидно и без статистики), но и куда более тонкий эффект: дети очень высоких родителей в среднем оказывались чуть ниже своих родителей, а дети очень низких родителей — чуть выше. Он назвал это «регрессией к посредственности» и одним из первых попытался количественно оценить, насколько тесно связаны две измеряемые величины — не просто «связаны или нет», а «насколько сильно». Именно для этого в 1888 году Гальтон ввёл понятие коэффициента корреляции, хотя его первоначальная формула была геометрической, основанной на построении эллипсов рассеяния точек на графике, и довольно далёкой от современной алгебраической записи.
Строгую, вычислимую формулу дал его ученик Карл Пирсон в 1896 году — тот самый Пирсон, который годом ранее ввёл термин «маргинальное распределение» (урок 243). Пирсон формализовал коэффициент корреляции именно через отношение ковариации к произведению стандартных отклонений — ровно ту формулу, с которой ты сегодня будешь работать, и она с тех пор носит его имя: коэффициент корреляции Пирсона. Пирсон рассматривал его как универсальный числовой индекс силы линейной связи между любыми двумя измеримыми признаками — ростом и весом, температурой и урожайностью, количеством осадков и ценой на зерно. Помимо этого Пирсон вместе с Уолтером Уэлдоном активно применял новый аппарат к биологическим и экономическим данным, что сделало корреляцию одним из самых узнаваемых инструментов статистики уже к началу XX века.
Само слово «ковариация» (co-variance — «совместное отклонение») закрепилось чуть позже, в работах английского статистика Рональда Фишера в 1920-х годах, когда потребовалось строгое понятие для общего, не нормированного случая — то, из чего корреляция получается делением. Фишер же одним из первых систематически работал с ковариационными матрицами для многомерных данных — конструкцией, которую мы разберём в конце этого урока и которая почти столетие спустя легла в основу метода главных компонент и огромной части современного машинного обучения. Забавный исторический штрих: и Гальтон, и Пирсон, и Фишер занимались этой математикой в контексте евгенических исследований наследственности — сомнительная с точки зрения современной этики мотивация неожиданно подарила статистике один из самых широко используемых инструментов её арсенала.
Ковариация и её знак
Интуиция: совместное отклонение от среднего
Представь двух людей, несущих носилки — если оба синхронно поднимают и опускают свой край, носилки идут ровно; если один поднимает, когда другой опускает, носилки раскачиваются. Ковариация измеряет ровно это: насколько согласованно две случайные величины отклоняются от своих собственных средних значений одновременно. Если $X$ выше своего среднего именно тогда, когда $Y$ тоже выше своего среднего (и ниже — тоже одновременно), произведение отклонений $(X-\mathbb{E}X)(Y-\mathbb{E}Y)$ в среднем оказывается положительным. Если же $X$ выше среднего именно тогда, когда $Y$ ниже своего, произведение отклонений в среднем отрицательно.
Рост и вес человека — характерный пример положительной связи: более высокие люди в среднем весят больше. Цена подержанного автомобиля и его пробег — характерный пример отрицательной связи: чем больше пробег, тем ниже цена. А число веснушек у человека и курс доллара к евро в день его рождения — величины, у которых совместные отклонения от среднего не имеют никакой систематической согласованности, и в среднем их произведение близко к нулю.
Определение: Ковариацией случайных величин $X$ и $Y$ называется число
$$\mathrm{Cov}(X,Y) = \mathbb{E}\big[(X-\mathbb{E}X)(Y-\mathbb{E}Y)\big].$$Раскрывая скобки и используя линейность математического ожидания, получаем эквивалентную и чаще используемую на практике формулу:
$$\mathrm{Cov}(X,Y) = \mathbb{E}[XY] - \mathbb{E}X \cdot \mathbb{E}Y.$$Знак ковариации показывает направление линейной связи: $\mathrm{Cov}(X,Y) > 0$ — величины в среднем растут и убывают согласованно (положительная связь); $\mathrm{Cov}(X,Y) < 0$ — при росте одной величины другая в среднем убывает (отрицательная связь); $\mathrm{Cov}(X,Y) = 0$ — величины называются некоррелированными, линейной связи между ними нет.
Стоит сразу отметить важное свойство, которое пригодится дальше: $\mathrm{Cov}(X,X) = \mathbb{E}[(X-\mathbb{E}X)^2] = \mathbb{D}X$ — дисперсия является частным случаем ковариации, ковариацией величины с самой собой. Это не совпадение обозначений, а содержательный факт: дисперсия измеряет, насколько величина «согласована сама с собой», то есть попросту как сильно она разбросана вокруг своего среднего.
Примеры с разбором
Пример 1 (лёгкий). Дискретный случайный вектор $(X,Y)$ описывает поведение пользователя мобильного приложения: $X$ — сколько времени пользователь провёл в приложении за день (мало $=0$, много $=1$), $Y$ — сделал ли он покупку в этот день ($0$ — нет, $1$ — да). Совместное распределение задано таблицей:
| $Y=0$ | $Y=1$ | |
|---|---|---|
| $X=0$ | 0,50 | 0,10 |
| $X=1$ | 0,15 | 0,25 |
Найдём ковариацию. Маргинальные вероятности: $\mathbb{E}X = P(X=1) = 0{,}15+0{,}25 = 0{,}40$, $\mathbb{E}Y = P(Y=1) = 0{,}10+0{,}25 = 0{,}35$. Поскольку обе величины индикаторные (принимают только значения $0$ и $1$), произведение $XY$ равно единице лишь при $X=1,Y=1$, а во всех остальных случаях — нулю, значит $\mathbb{E}[XY] = P(X=1,Y=1) = 0{,}25$. Подставляем в формулу:
$$\mathrm{Cov}(X,Y) = \mathbb{E}[XY] - \mathbb{E}X\cdot\mathbb{E}Y = 0{,}25 - 0{,}40 \cdot 0{,}35 = 0{,}25 - 0{,}14 = 0{,}11.$$Ковариация положительна: пользователи, проводящие в приложении много времени, в среднем чаще совершают покупки в этот же день — ожидаемая, интуитивно понятная связь.
Пример 2 (средний). Вспомним непрерывную совместную плотность $f(x,y) = x+y$ на квадрате $[0,1]\times[0,1]$ из прошлого урока (243). Там мы уже находили маргинальные плотности $f_X(x) = x+\tfrac12$, $f_Y(y)=y+\tfrac12$. Найдём $\mathbb{E}X$:
$$\mathbb{E}X = \int_0^1 x\left(x+\frac12\right)dx = \int_0^1\left(x^2+\frac{x}{2}\right)dx = \left[\frac{x^3}{3}+\frac{x^2}{4}\right]_0^1 = \frac13+\frac14 = \frac{7}{12}.$$По симметрии формулы относительно $x$ и $y$ сразу получаем $\mathbb{E}Y = \tfrac{7}{12}$. Теперь найдём $\mathbb{E}[XY]$, интегрируя по совместной плотности:
$$\mathbb{E}[XY] = \int_0^1\int_0^1 xy(x+y)\,dx\,dy = \int_0^1\int_0^1 (x^2y+xy^2)\,dx\,dy = \frac13\cdot\frac12 + \frac12\cdot\frac13 = \frac16+\frac16=\frac13.$$Подставляем в формулу ковариации:
$$\mathrm{Cov}(X,Y) = \frac13 - \left(\frac{7}{12}\right)^2 = \frac13 - \frac{49}{144} = \frac{48}{144}-\frac{49}{144} = -\frac{1}{144} \approx -0{,}00694.$$Результат неожиданный на первый взгляд: плотность $f(x,y)=x+y$ «выталкивает» вектор в сторону угла $(1,1)$, где обе координаты велики, и интуиция могла бы подсказать положительную связь. Но ковариация здесь крохотная и отрицательная. Разгадка в том, что плотность $x+y$ также довольно весома вдоль краёв квадрата — например, при малом $x$ и большом $y$ значение $f(x,y)=x+y$ всё ещё может быть немаленьким. Эта слабая асимметрия «съедает» интуитивно ожидаемую положительную связь и даже слегка перевешивает её в противоположную сторону. Мораль: интуиция о знаке связи, основанная на беглом взгляде на формулу плотности, может подвести — нужен честный расчёт.
Пример 3 (сложный). Пусть для роста ($X$, в сантиметрах) и веса ($Y$, в килограммах) группы людей известна ковариация $\mathrm{Cov}(X,Y) = 8$ (в см·кг). Найдём, как изменится ковариация, если рост измерить в метрах, то есть перейти к величине $X' = 0{,}01X$, а вес оставить без изменений.
По определению ковариации и линейности математического ожидания:
$$\mathrm{Cov}(aX+b,\ Y) = \mathbb{E}\big[(aX+b-a\mathbb{E}X-b)Y\big] - \dots = a\cdot\mathrm{Cov}(X,Y)$$(слагаемое $b$ сокращается, потому что $\mathbb{E}[(aX+b) - \mathbb{E}(aX+b)] = a(X-\mathbb{E}X)$, сдвиг $b$ не влияет на отклонение от среднего). Более полно: ковариация билинейна, $\mathrm{Cov}(aX+b,\ cY+d) = ac\cdot\mathrm{Cov}(X,Y)$ для любых констант $a,b,c,d$. Подставляем $a=0{,}01$, $c=1$:
$$\mathrm{Cov}(0{,}01X,\ Y) = 0{,}01 \cdot 8 = 0{,}08 \text{ (м·кг)}.$$Число изменилось в сто раз, хотя физическая связь между ростом и весом людей не изменилась ни на грамм — просто мы сменили единицу измерения одной из переменных. Более того, если бы мы вместо роста взяли «расстояние до потолка» (то есть перешли к переменной $2 - 0{,}01X$ при среднем росте помещений в 2 метра, с отрицательным коэффициентом при $X$), ковариация сменила бы знак: $\mathrm{Cov}(2-0{,}01X,\ Y) = -0{,}01\cdot8 = -0{,}08$ — при том же самом физическом явлении! Этот пример — прямая подводка к следующей проблеме: сырое число ковариации критически зависит от произвольного выбора единиц измерения.
Почему это важно. Знак ковариации — первый и самый грубый, но исключительно полезный сигнал в любом разведочном анализе данных: положительная ковариация между ценой квартиры и её площадью, отрицательная — между ценой автомобиля и его пробегом. Но, как только что показал пример 3, величина ковариации сама по себе почти ничего не говорит о силе связи, потому что зависит от единиц измерения обеих переменных. Именно эта проблема и решается следующим шагом — нормировкой, которая приводит нас к коэффициенту корреляции.
Проблема масштаба: почему ковариацию нельзя сравнивать напрямую
Интуиция: температура без указания шкалы
Представь, что тебе сказали: «сегодня температура — сто». Сто градусов Цельсия — это кипяток. Сто градусов Фаренгейта — это примерно $37{,}8\,^\circ\text{C}$, обычная жаркая летняя погода. Число «сто» само по себе абсолютно бессмысленно без указания единиц. Ровно то же самое происходит с ковариацией: число $\mathrm{Cov}(X,Y) = 8$ ничего не говорит о «силе» связи, пока не известно, в каких единицах измеряются $X$ и $Y$ — и, что хуже, его невозможно напрямую сравнить с другим числом ковариации, посчитанным для другой пары признаков в других единицах.
Это не абстрактная проблема — она встаёт при первом же взгляде на реальный датасет. У тебя может быть площадь квартиры в квадратных метрах, число комнат (безразмерное целое число), расстояние до метро в километрах и цену в миллионах рублей. Ковариация между площадью и ценой окажется числом совершенно другого порядка величины, чем ковариация между числом комнат и ценой — просто из-за разных единиц измерения, а не потому, что одна связь физически «в сто раз сильнее» другой.
Примеры с разбором
Пример 1 (лёгкий). Ковариация между доходом клиента (в рублях) и суммой его среднего чека (в рублях) равна $\mathrm{Cov}(X,Y) = 450\,000$. Найди ковариацию, если доход и чек пересчитать в тысячах рублей.
Переход к $X' = 0{,}001X$, $Y' = 0{,}001Y$ даёт по свойству билинейности $\mathrm{Cov}(X',Y') = 0{,}001\cdot0{,}001\cdot450\,000 = 0{,}45$. Число изменилось в миллион раз ($0{,}001 \times 0{,}001 = 10^{-6}$) при абсолютно той же самой экономической связи между доходом и чеком.
Пример 2 (средний). В датасете о квартирах найдены две ковариации: $\mathrm{Cov}(\text{площадь в кв. м},\ \text{цена в млн руб}) = 32{,}5$ и $\mathrm{Cov}(\text{этаж},\ \text{цена в млн руб}) = 2{,}1$. Можно ли на основании этих чисел утверждать, что связь «площадь–цена» примерно в $32{,}5/2{,}1 \approx 15{,}5$ раза сильнее, чем связь «этаж–цена»?
Нет, нельзя. Площадь измеряется в квадратных метрах и обычно имеет большой разброс (десятки квадратных метров), а этаж — безразмерное целое число с разбросом всего в несколько единиц. Разница в масштабе самих признаков (не только их единиц измерения, но и типичного диапазона значений) целиком искажает прямое сравнение ковариаций. Чтобы честно сравнить силу двух связей, обе ковариации нужно сначала нормировать на «естественный» масштаб — стандартные отклонения соответствующих признаков, а не сравнивать их напрямую.
Пример 3 (сложный). Ковариация между высотой места над уровнем моря (в метрах) и средней годовой температурой (в градусах Цельсия) для набора городов отрицательна: $\mathrm{Cov}(X,Y) = -18$ (выше в горах — холоднее, стандартный физический эффект). Если вместо «высоты над уровнем моря» ввести признак «глубина ниже условного потолка атмосферы в 5000 метров», то есть $X' = 5000 - X$, как изменится знак ковариации и почему это не должно вводить в заблуждение?
По билинейности $\mathrm{Cov}(X',Y) = \mathrm{Cov}(5000-X,\ Y) = -1\cdot\mathrm{Cov}(X,Y) = -1\cdot(-18) = 18$ — знак сменился на положительный. Формально теперь «глубина ниже потолка» и температура связаны положительно: чем больше глубина (то есть чем ниже высота), тем теплее. Физический смысл при этом остался ровно тем же самым — просто ось координат перевернули, произвольно решив измерять не высоту, а «недостаток высоты». Этот пример подчёркивает: даже знак ковариации формально зависит от того, в какую сторону направлена шкала измерения переменной, хотя интуитивно кажется, что знак — это что-то незыблемое.
Почему это важно. Проблема масштаба — не теоретическая придирка, а причина, по которой сырую ковариацию почти никогда не публикуют и не сравнивают напрямую в отчётах и статьях. В любой библиотеке анализа данных (той же pandas) метод .cov() существует, но на практике почти всегда вызывают именно .corr() — потому что только нормированная версия ковариации позволяет честно сравнивать силу связи между разными парами признаков, измеренными в разных единицах и с разным типичным разбросом значений. Именно к этой нормировке мы и переходим.
Коэффициент корреляции Пирсона
Интуиция: нормировка на собственный масштаб каждой величины
Идея решения проста и элегантна: раз проблема в том, что $X$ и $Y$ измеряются в «разных единицах» (в широком смысле — разных масштабах разброса), нужно предварительно избавиться от единиц измерения, разделив каждую величину на её собственное стандартное отклонение. Это в точности то же самое действие, что и переход к $z$-оценкам — «сколько сигм от среднего», знакомый ещё по стандартизации данных. Ковариация двух уже стандартизированных величин и есть коэффициент корреляции: число, не имеющее единиц измерения вообще, а значит пригодное для честного сравнения силы любых двух связей.
Определение: Коэффициентом корреляции Пирсона случайных величин $X$ и $Y$ (при $\mathbb{D}X > 0$, $\mathbb{D}Y > 0$) называется число
$$\rho(X,Y) = \frac{\mathrm{Cov}(X,Y)}{\sigma_X \sigma_Y}, \qquad \sigma_X = \sqrt{\mathbb{D}X},\ \ \sigma_Y = \sqrt{\mathbb{D}Y}.$$Коэффициент корреляции всегда лежит в диапазоне $-1 \le \rho(X,Y) \le 1$. Значение $\rho = 1$ означает точную линейную связь с положительным коэффициентом наклона ($Y = aX+b$, $a>0$, почти наверное), $\rho=-1$ — точную линейную связь с отрицательным наклоном, $\rho=0$ — отсутствие линейной связи (величины называются некоррелированными).
Докажем ключевое свойство $-1\le\rho\le1$ — оно того стоит, потому что доказательство короткое и опирается на факт, который ты уже знаешь: дисперсия любой случайной величины неотрицательна. Возьмём стандартизированные величины $Z_X = (X-\mathbb{E}X)/\sigma_X$, $Z_Y = (Y-\mathbb{E}Y)/\sigma_Y$ — у обеих $\mathbb{E}Z_X=\mathbb{E}Z_Y=0$ и $\mathbb{D}Z_X=\mathbb{D}Z_Y=1$, а $\mathrm{Cov}(Z_X,Z_Y)=\rho(X,Y)$ (проверка этого равенства — задание 19 в практике ниже). Рассмотрим дисперсию их разности, которая по определению неотрицательна:
$$0 \le \mathbb{D}(Z_X - Z_Y) = \mathbb{D}Z_X + \mathbb{D}Z_Y - 2\,\mathrm{Cov}(Z_X,Z_Y) = 1+1-2\rho = 2-2\rho \quad\Rightarrow\quad \rho \le 1.$$Аналогично, дисперсия суммы тоже неотрицательна:
$$0 \le \mathbb{D}(Z_X+Z_Y) = 1+1+2\rho = 2+2\rho \quad\Rightarrow\quad \rho \ge -1.$$Вместе эти два неравенства и дают $-1\le\rho\le1$. Более того, из первого неравенства видно: равенство $\rho=1$ достигается ровно тогда, когда $\mathbb{D}(Z_X-Z_Y)=0$, а дисперсия равна нулю только у вырожденной (постоянной почти наверное) величины — значит $Z_X - Z_Y = 0$ п. н., то есть $X$ и $Y$ связаны точной линейной зависимостью.
Для интерпретации промежуточных значений $|\rho|$ статистики традиционно используют условную шкалу (шкалу Чеддока): $|\rho|$ от $0$ до $0{,}3$ — слабая связь, от $0{,}3$ до $0{,}5$ — умеренная, от $0{,}5$ до $0{,}7$ — заметная, от $0{,}7$ до $0{,}9$ — сильная, от $0{,}9$ до $1$ — очень сильная. Это именно ориентир, а не строгая математическая граница — в разных областях приняты разные пороги.
Примеры с разбором
Пример 1 (лёгкий). Для дискретной таблицы «время в приложении / покупка» из примера 1 предыдущего раздела мы уже нашли $\mathrm{Cov}(X,Y)=0{,}11$. Найдём дисперсии: $X$ и $Y$ — индикаторные величины, поэтому $\mathbb{D}X = p(1-p)$ с $p=\mathbb{E}X=0{,}40$: $\mathbb{D}X = 0{,}40\cdot0{,}60 = 0{,}24$, откуда $\sigma_X = \sqrt{0{,}24}\approx0{,}4899$. Аналогично $\mathbb{D}Y = 0{,}35\cdot0{,}65=0{,}2275$, $\sigma_Y=\sqrt{0{,}2275}\approx0{,}4770$. Тогда
$$\rho(X,Y) = \frac{0{,}11}{0{,}4899\cdot0{,}4770} = \frac{0{,}11}{0{,}23368} \approx 0{,}4707.$$Коэффициент корреляции около $0{,}47$ — по шкале Чеддока это умеренная-заметная положительная связь.
Пример 2 (средний). Для непрерывной плотности $f(x,y)=x+y$ на $[0,1]^2$ мы нашли $\mathrm{Cov}(X,Y)=-1/144$. Найдём дисперсию $X$: $\mathbb{E}X^2 = \int_0^1 x^2(x+\tfrac12)dx = \int_0^1(x^3+\tfrac{x^2}{2})dx = \tfrac14+\tfrac16 = \tfrac{5}{12}$, значит $\mathbb{D}X = \tfrac{5}{12} - \left(\tfrac{7}{12}\right)^2 = \tfrac{60}{144}-\tfrac{49}{144}=\tfrac{11}{144}$. По симметрии $\mathbb{D}Y=\tfrac{11}{144}$ тоже. Тогда
$$\rho(X,Y) = \frac{-1/144}{\sqrt{11/144}\cdot\sqrt{11/144}} = \frac{-1/144}{11/144} = -\frac{1}{11} \approx -0{,}0909.$$Очень слабая отрицательная связь — почти незаметная, что согласуется с тем, насколько малой оказалась исходная ковариация.
Пример 3 (сложный). Собрана выборка из пяти квартир: площадь $X$ (кв. м) и цена $Y$ (млн руб): $(30,\ 3)$, $(40,\ 4)$, $(50,\ 5)$, $(60,\ 7)$, $(70,\ 8)$. Найдём выборочный коэффициент корреляции. Средние: $\overline X = (30+40+50+60+70)/5 = 50$, $\overline Y = (3+4+5+7+8)/5 = 27/5 = 5{,}4$. Отклонения от среднего:
$$X - \overline X:\ -20,\ -10,\ 0,\ 10,\ 20 \qquad Y - \overline Y:\ -2{,}4,\ -1{,}4,\ -0{,}4,\ 1{,}6,\ 2{,}6$$Произведения отклонений: $(-20)(-2{,}4)=48$, $(-10)(-1{,}4)=14$, $0\cdot(-0{,}4)=0$, $10\cdot1{,}6=16$, $20\cdot2{,}6=52$. Сумма $=48+14+0+16+52=130$. Выборочная ковариация (с несмещённым делением на $n-1=4$, как в уроке про дисперсию):
$$\widehat{\mathrm{Cov}}(X,Y) = \frac{130}{4} = 32{,}5.$$Суммы квадратов отклонений: для $X$ — $400+100+0+100+400=1000$, выборочная дисперсия $1000/4=250$, $\widehat\sigma_X = \sqrt{250}\approx15{,}811$. Для $Y$ — $5{,}76+1{,}96+0{,}16+2{,}56+6{,}76=17{,}2$, выборочная дисперсия $17{,}2/4=4{,}3$, $\widehat\sigma_Y=\sqrt{4{,}3}\approx2{,}0736$. Тогда
$$\widehat\rho(X,Y) = \frac{32{,}5}{15{,}811\cdot2{,}0736} \approx \frac{32{,}5}{32{,}788} \approx 0{,}9912.$$Коэффициент корреляции около $0{,}99$ — почти идеальная линейная связь между площадью и ценой квартиры. Это ровно та цифра, которую ты увидел бы, вызвав df[['area','price']].corr() в pandas на таких данных, и ровно тот уровень корреляции, который в реальном EDA сигнализирует: возможно, эти два признака несут почти одинаковую информацию, и стоит задуматься о мультиколлинеарности.
Почему это важно. Коэффициент корреляции — это, без преувеличения, самое часто вычисляемое число во всей прикладной статистике и машинном обучении. Он не имеет единиц измерения, всегда лежит в известном диапазоне $[-1,1]$, а значит его можно сравнивать между любыми парами признаков, независимо от того, в чём они измерялись изначально. Ровно поэтому корреляционная матрица (та самая тепловая карта из вступления) — это первое, на что смотрит дата-сайентист при разведочном анализе: она сразу показывает, какие признаки сильно связаны с целевой переменной (потенциально полезны для модели) и какие признаки сильно связаны друг с другом (потенциальная мультиколлинеарность, о которой пойдёт речь дальше).
Корреляция не означает причинность
Интуиция: мороженое и утопления
Это, пожалуй, самое важное методологическое предупреждение во всей теме, и оно заслуживает отдельного, максимально серьёзного разбора. Представь исследование: по данным за год посчитана корреляция между ежемесячными продажами мороженого и числом случаев утопления в открытых водоёмах. Корреляция оказывается высокой и положительной — скажем, $\rho \approx 0{,}82$. Заголовок в жёлтой прессе напрашивается сам собой: «мороженое приводит к утоплениям» или, в обратную сторону, «страх утонуть заставляет людей есть больше мороженого». Оба вывода абсурдны, и любой человек это чувствует интуитивно — но стоит заменить мороженое и утопления на что-то менее очевидное, и та же самая логическая ошибка проскакивает совершенно незаметно.
Разгадка в том, что и продажи мороженого, и число утоплений растут по одной общей причине — по теплу: летом люди чаще покупают мороженое и чаще купаются (а значит, чаще тонут), а зимой не происходит ни того, ни другого. Температура воздуха здесь — скрытая переменная (конфаундер): третий фактор, который одновременно влияет и на $X$, и на $Y$, создавая между ними корреляцию, хотя прямой причинной связи между самими $X$ и $Y$ нет вовсе.
Определение: Наличие корреляции $\rho(X,Y) \ne 0$ между двумя величинами говорит лишь о статистической согласованности их изменений и никогда само по себе не доказывает, что $X$ является причиной $Y$ (или наоборот). Основные причины ложной («поверхностной») корреляции: скрытая переменная — общий фактор, влияющий на обе величины; обратная причинность — на самом деле $Y$ влияет на $X$, а не наоборот; случайное совпадение на конкретных данных — особенно вероятное при малых выборках или при переборе множества пар признаков без поправки на множественное тестирование.
Примеры с разбором
Пример 1 (лёгкий, классика). Данные за 12 месяцев показывают корреляцию $\rho = 0{,}82$ между продажами мороженого и числом утоплений. Проанализируем: что можно и что нельзя заключить из этого числа?
Можно заключить: в месяцы с высокими продажами мороженого статистически чаще наблюдается и высокое число утоплений — сам факт совместного изменения установлен корректно, вычисления не врут. Нельзя заключить: что покупка мороженого физически увеличивает риск утонуть, или что рост числа утоплений стимулирует продажи мороженого. Вероятная скрытая переменная — температура воздуха и сезон: тёплая погода одновременно повышает и спрос на мороженое, и число людей, купающихся в открытых водоёмах (а значит, и число происшествий). Обе переменные — следствия одной общей причины, а не причина и следствие друг друга.
Пример 2 (средний). На месте крупных пожаров наблюдается сильная положительная корреляция между числом пожарных машин, приехавших тушить пожар, и суммой материального ущерба от пожара. Значит ли это, что приезд большего числа пожарных машин увеличивает ущерб (и, доведя логику до абсурда, что для снижения ущерба нужно присылать меньше пожарных)?
Разумеется, нет. И размер пожара определяет число пожарных машин, которые на него отправляют (крупный пожар требует больше техники), и тот же размер пожара определяет итоговый ущерб (крупный пожар сжигает больше). Обе переменные — следствия одной общей причины (масштаб пожара), это тот же тип скрытой переменной, что и в примере с мороженым, только сформулированный менее очевидно. Данная задача — стандартный учебный пример, который используют именно для тренировки навыка «остановись и подумай о скрытой переменной», прежде чем интерпретировать корреляцию как причинность.
Пример 3 (сложный, ML-контекст). В логах интернет-магазина обнаружена сильная положительная корреляция между числом обращений клиента в поддержку и вероятностью того, что клиент вскоре уйдёт (отток). Аналитик радостно добавляет «число обращений в поддержку за последний месяц» как признак в модель прогноза оттока. Позже выясняется: подавляющее большинство таких обращений — это просьбы закрыть счёт или вернуть деньги, то есть клиенты обращаются в поддержку именно после того, как уже приняли решение уйти.
Здесь работает не скрытая переменная, а обратная причинность: не обращения вызывают отток, а уже принятое решение об оттоке вызывает обращения. Хуже того, это классический случай утечки данных (data leakage): признак содержит информацию, которая по факту доступна только тогда, когда решение уже принято, — то есть «из будущего» относительно момента, когда модель должна делать реальный прогноз. Такая модель покажет прекрасное качество на исторических данных (высокая корреляция признака с меткой) и окажется бесполезной в продакшене, потому что на момент, когда прогноз действительно нужен (заранее, чтобы удержать клиента), этого сигнала ещё попросту не существует.
Почему это важно. Различие между корреляцией и причинностью — не философская тонкость, а прямой источник дорогостоящих ошибок в бизнесе, медицине и машинном обучении: неверные выводы А/Б-тестов, признаки с утечкой данных, ложные медицинские рекомендации, построенные на наблюдательных, а не экспериментальных данных. Установить настоящую причинность обычно можно только через контролируемый эксперимент (рандомизированное вмешательство, где ты искусственно меняешь $X$ и смотришь на $Y$, а не просто наблюдаешь их естественную совместную изменчивость) или через специальные методы причинного вывода, выходящие далеко за рамки простого коэффициента корреляции. Твёрдое правило на будущее: увидев сильную корреляцию, первым делом задай себе вопрос «а что, если оба явления — следствие какой-то третьей причины, о которой я ещё не подумал?»
Ковариационная матрица и связь с PCA
Интуиция: таблица всех попарных связей сразу
Реальный датасет почти никогда не состоит из двух признаков — их могут быть десятки и сотни. Логичное обобщение ковариации на такой случай — собрать все попарные ковариации (и дисперсии на диагонали, как частный случай ковариации величины с собой) в одну таблицу-матрицу. Это и есть ковариационная матрица: квадратная таблица, в которой на пересечении строки $i$ и столбца $j$ стоит $\mathrm{Cov}(X_i, X_j)$, а на диагонали — обычные дисперсии $\mathbb{D}X_i = \mathrm{Cov}(X_i,X_i)$.
Определение: Для случайного вектора $\mathbf{X} = (X_1,\dots,X_n)$ ковариационной матрицей называется матрица $\Sigma$ размера $n\times n$ с элементами
$$\Sigma_{ij} = \mathrm{Cov}(X_i,X_j), \qquad \Sigma_{ii} = \mathbb{D}X_i.$$Ковариационная матрица всегда симметрична ($\Sigma_{ij}=\Sigma_{ji}$, так как $\mathrm{Cov}(X_i,X_j)=\mathrm{Cov}(X_j,X_i)$ по определению) и положительно полуопределена — для любого вектора коэффициентов $\mathbf{a}$ выполняется $\mathbf{a}^T\Sigma\mathbf{a} = \mathbb{D}(a_1X_1+\dots+a_nX_n) \ge 0$, поскольку это дисперсия линейной комбинации, а дисперсия не может быть отрицательной.
Если каждую переменную предварительно стандартизировать (перейти к $Z_i = (X_i-\mathbb{E}X_i)/\sigma_i$), ковариационная матрица этих стандартизированных величин превращается ровно в корреляционную матрицу: на диагонали единицы (дисперсия стандартизированной величины всегда равна единице), а вне диагонали — коэффициенты корреляции $\rho_{ij}$. Именно эту матрицу и рисуют в виде тепловой карты при EDA — «матрица корреляций» технически является ковариационной матрицей данных после нормировки каждого признака на его собственное стандартное отклонение.
Теперь — про самое интересное практическое применение ковариационной матрицы. Метод главных компонент (PCA) — один из базовых инструментов понижения размерности в машинном обучении — целиком построен на анализе ковариационной матрицы признаков. Идея в двух предложениях: PCA ищет такие новые (искусственные) оси координат, вдоль которых данные разбросаны максимально сильно, и эти оси — не что иное, как собственные векторы ковариационной матрицы $\Sigma$, а разброс данных вдоль каждой такой оси (её дисперсия) — соответствующее собственное значение. Если несколько признаков сильно коррелируют между собой (как площадь и цена квартиры из примера выше), их совместная «истинная» изменчивость на самом деле одномерна или почти одномерна, и PCA обнаруживает это как одно доминирующее собственное значение, забирающее почти всю дисперсию, — то есть сжимает несколько коррелированных признаков в один без существенной потери информации.
Примеры с разбором
Пример 1 (лёгкий). Для эмпирических данных о квартирах из предыдущего раздела мы нашли $\widehat{\mathbb{D}}(\text{площадь}) = 250$, $\widehat{\mathbb{D}}(\text{цена}) = 4{,}3$, $\widehat{\mathrm{Cov}}(\text{площадь},\ \text{цена}) = 32{,}5$. Запиши ковариационную матрицу этой пары признаков.
По определению, диагональ — дисперсии, вне диагонали — ковариация (симметрично):
$$\Sigma = \begin{pmatrix} 250 & 32{,}5 \\ 32{,}5 & 4{,}3 \end{pmatrix}$$Пример 2 (средний). В датасете три признака: возраст клиента $X_1$, годовой доход $X_2$ (в тыс. руб), число лет с компанией $X_3$. Известно: $\mathbb{D}X_1=64$, $\mathbb{D}X_2 = 90\,000$, $\mathbb{D}X_3=9$, $\mathrm{Cov}(X_1,X_2)=1200$, $\mathrm{Cov}(X_1,X_3)=18$, $\mathrm{Cov}(X_2,X_3)=150$. Построй полную ковариационную матрицу $3\times3$.
Заполняем симметричную таблицу диагональю (дисперсии) и попарными ковариациями:
$$\Sigma = \begin{pmatrix} 64 & 1200 & 18 \\ 1200 & 90\,000 & 150 \\ 18 & 150 & 9 \end{pmatrix}$$Обрати внимание, насколько разного порядка получаются числа: $64$ и $90\,000$ на диагонали — прямое следствие того, что возраст и доход измерены в совершенно разных масштабах. Это тот самый эффект «проблемы масштаба» из середины урока, только теперь проявляющийся уже в целой матрице, а не в одной паре чисел — веский аргумент, почему для PCA данные почти всегда предварительно стандартизируют, переходя от ковариационной матрицы к корреляционной, чтобы доход (с его большими абсолютными значениями дисперсии) не «забивал» своим масштабом более скромные по величине признаки вроде возраста.
Пример 3 (сложный). Для ковариационной матрицы площади и цены квартир из примера 1 этого раздела, $\Sigma = \begin{pmatrix}250 & 32{,}5\\ 32{,}5 & 4{,}3\end{pmatrix}$, известно, что её собственные значения приближённо равны $\lambda_1 \approx 254{,}226$ и $\lambda_2 \approx 0{,}074$ (сумма собственных значений равна следу матрицы $250+4{,}3=254{,}3$ — можешь проверить: $254{,}226+0{,}074=254{,}3$ ✓, а произведение равно определителю $250\cdot4{,}3-32{,}5^2=1075-1056{,}25=18{,}75$ — тоже можно проверить: $254{,}226\cdot0{,}074\approx18{,}81$, с округлением сходится). Найди долю суммарной дисперсии, которую объясняет первая главная компонента.
$$\frac{\lambda_1}{\lambda_1+\lambda_2} = \frac{254{,}226}{254{,}3} \approx 0{,}9997.$$Первая главная компонента объясняет примерно $99{,}97\%$ всей дисперсии этих двух признаков — то есть практически всю информацию, содержащуюся в паре «площадь, цена», можно сжать в одно-единственное новое число (проекцию на первую главную ось) почти без потерь. Это прямое численное следствие того, что коэффициент корреляции между площадью и ценой был близок к единице ($\widehat\rho\approx0{,}99$): чем ближе корреляция пары признаков к $\pm1$, тем более «одномерно» на самом деле выглядит их совместное облако точек, и тем увереннее PCA схлопывает эту пару в одну ось.
Почему это важно. Ковариационная матрица — это ровно тот объект, который передаётся внутрь любой реализации PCA (sklearn.decomposition.PCA вычисляет её, хотя технически чаще работает через сингулярное разложение исходной матрицы данных, что математически эквивалентно), любой линейной модели с множественной регрессией (где диагонали и недиагональные элементы напрямую определяют устойчивость оценок коэффициентов), любой оценке многомерного нормального распределения. Понимание того, что ковариационная матрица — это просто таблица всех попарных ковариаций признаков, а её собственные векторы задают направления максимальной согласованной изменчивости данных, снимает почти всю «магию» с PCA: это не отдельная загадочная техника, а прямое алгебраическое следствие идеи ковариации, с которой ты работал весь этот урок, только применённой сразу ко многим признакам.
Практика: 30 заданий
Базовые (задания 1–10)
Задание 1. Дискретный случайный вектор $(X,Y)$: $X$ — число показов рекламы пользователю (мало $=0$, много $=1$), $Y$ — клик по рекламе ($0$ — нет, $1$ — да). Совместное распределение: $P(0,0)=0{,}50$, $P(0,1)=0{,}10$, $P(1,0)=0{,}15$, $P(1,1)=0{,}25$. Найди $\mathrm{Cov}(X,Y)$.
Задание 2. Для таблицы из задания 1 найди $\mathbb{D}X$, $\mathbb{D}Y$ и коэффициент корреляции $\rho(X,Y)$.
Задание 3. Дано $\mathrm{Cov}(X,Y)=15$, $\mathbb{D}X=25$, $\mathbb{D}Y=36$. Найди $\rho(X,Y)$.
Задание 4. Дано $\rho(X,Y)=0{,}8$, $\sigma_X=4$, $\sigma_Y=10$. Найди $\mathrm{Cov}(X,Y)$.
Задание 5. Случайные величины $X$ и $Y$ независимы. Чему равна $\mathrm{Cov}(X,Y)$? Обоснуй.
Задание 6. Дано $\mathrm{Cov}(X,Y)=8$ (см·кг для роста и веса). Найди ковариацию, если рост измерять в метрах вместо сантиметров.
Задание 7. Дано $\mathbb{D}X=9$, $\mathbb{D}Y=16$, $\mathrm{Cov}(X,Y)=-10$. Проверь, возможна ли такая комбинация чисел, используя неравенство $|\mathrm{Cov}(X,Y)|\le\sigma_X\sigma_Y$.
Задание 8. Дано $\mathbb{D}X=4$, $\mathbb{D}Y=9$, $\mathrm{Cov}(X,Y)=7$. Проверь корректность этих данных.
Задание 9. Дано $\mathbb{D}X=5$, $\mathbb{D}Y=7$, $\mathrm{Cov}(X,Y)=2$. Найди $\mathbb{D}(X+Y)$ и $\mathbb{D}(X-Y)$.
Задание 10. Портфель из двух активов: дисперсия доходности актива A равна $0{,}04$, актива B — $0{,}09$, ковариация доходностей $\mathrm{Cov}(A,B)=-0{,}02$ (активы движутся в противофазе). Портфель составлен поровну: $R=0{,}5A+0{,}5B$. Найди дисперсию доходности портфеля.
Средние (задания 11–20)
Задание 11. Совместная плотность $f(x,y)=x+y$ на квадрате $[0,1]\times[0,1]$. Найди $\mathrm{Cov}(X,Y)$ с нуля.
Задание 12. Для распределения из задания 11 найди $\rho(X,Y)$, зная, что $\mathbb{D}X=\mathbb{D}Y=\tfrac{11}{144}$.
Задание 13. Случайные величины связаны линейно: $Y=3X+5$. Найди $\rho(X,Y)$, не зная конкретного распределения $X$ (достаточно $\mathbb{D}X>0$).
Задание 14. Случайные величины связаны как $Y=-2X+7$. Найди $\rho(X,Y)$.
Задание 15. В датасете известны возраст клиента $X$ и стаж работы $Z$ (оба в годах): $\mathrm{Cov}(X,Z)=45$, $\mathbb{D}X=64$, $\mathbb{D}Z=36$. Найди $\rho(X,Z)$ и прокомментируй риск мультиколлинеарности.
Задание 16. Даны четыре наблюдения пары $(X,Y)$: $(1,2)$, $(2,4)$, $(3,5)$, $(4,9)$. Найди выборочную ковариацию (с делением на $n-1$) и выборочный коэффициент корреляции.
Задание 17. В корреляционной матрице признаков датасета: $\rho(\text{площадь},\ \text{цена})=0{,}85$, $\rho(\text{этаж},\ \text{цена})=0{,}05$, $\rho(\text{площадь},\ \text{этаж})=0{,}10$. Какой признак стоит оставить в первую очередь для простой линейной модели предсказания цены и почему низкая корреляция между самими признаками — это хорошо?
Задание 18. Докажи, что $\mathrm{Cov}(X,X)=\mathbb{D}X$, используя определение ковариации.
Задание 19. Для стандартизированных величин $Z_X=(X-\mu_X)/\sigma_X$, $Z_Y=(Y-\mu_Y)/\sigma_Y$ докажи, что $\mathrm{Cov}(Z_X,Z_Y)=\rho(X,Y)$.
Задание 20. В EDA перед построением модели обнаружено $\rho(\text{признак}_1,\ \text{признак}_2)=0{,}98$. Объясни проблему для линейной регрессии и укажи два стандартных решения.
Продвинутые (задания 21–30)
Задание 21. Докажи неравенство $-1\le\rho(X,Y)\le1$, используя неотрицательность дисперсий $\mathbb{D}(Z_X-Z_Y)$ и $\mathbb{D}(Z_X+Z_Y)$ для стандартизированных величин.
Задание 22. Докажи, что если $\rho(X,Y)=1$, то $Y=aX+b$ почти наверное с $a>0$.
Задание 23. Построй ковариационную матрицу для трёх признаков: $\mathbb{D}X_1=4$, $\mathbb{D}X_2=9$, $\mathbb{D}X_3=16$, $\mathrm{Cov}(X_1,X_2)=3$, $\mathrm{Cov}(X_1,X_3)=-2$, $\mathrm{Cov}(X_2,X_3)=6$.
Задание 24. Для матрицы из задания 23 проверь, что все попарные коэффициенты корреляции лежат в диапазоне $[-1,1]$.
Задание 25. Объясни, почему ковариационная матрица двух стандартизированных (приведённых к $z$-оценкам) признаков всегда имеет вид $\begin{pmatrix}1 & \rho\\ \rho & 1\end{pmatrix}$.
Задание 26. Ковариационная матрица площади и цены квартир $\Sigma=\begin{pmatrix}250 & 32{,}5\\ 32{,}5 & 4{,}3\end{pmatrix}$ имеет собственные значения $\lambda_1\approx254{,}226$, $\lambda_2\approx0{,}074$. Найди долю дисперсии, объясняемую первой главной компонентой, и прокомментируй с точки зрения PCA.
Задание 27. Правда ли, что $\rho(X,Y)=0$ всегда означает независимость $X$ и $Y$? Проверь на примере: $X$ равномерно распределена на $[-1,1]$, $Y=X^2$.
Задание 28. Продажи мороженого $X$ и число утоплений $Y$ за 12 месяцев дают $\rho(X,Y)=0{,}82$. Объясни, почему нельзя заключить «мороженое вызывает утопления» или обратное, и укажи вероятную скрытую переменную.
Задание 29. В интернет-магазине обнаружена сильная положительная корреляция между «числом обращений в поддержку за месяц» и вероятностью оттока клиента. Выясняется: клиенты обращаются в поддержку в основном для того, чтобы закрыть счёт. Объясни проблему включения такого признака в модель, предсказывающую отток заранее.
Задание 30. Ковариационная матрица трёх стандартизированных признаков: $\Sigma=\begin{pmatrix}1 & 0{,}9 & 0{,}1\\ 0{,}9 & 1 & 0{,}05\\ 0{,}1 & 0{,}05 & 1\end{pmatrix}$. Какие два признака нужно проверить на мультиколлинеарность в первую очередь, и почему третий, скорее всего, безопасен?
Частые ошибки
❌ Ошибка: «Раз $\mathrm{Cov}(X,Y)=25$ больше, чем $\mathrm{Cov}(A,B)=3$, значит связь между $X$ и $Y$ сильнее, чем между $A$ и $B$» ✅ Правильно: Сравнивать напрямую можно только нормированные величины — коэффициенты корреляции $\rho$, а не сырые ковариации 💡 Почему: Значение ковариации зависит от единиц измерения и типичного масштаба разброса каждой переменной; $\mathrm{Cov}(X,Y)=25$ может соответствовать слабой связи между величинами с большим разбросом, а $\mathrm{Cov}(A,B)=3$ — почти идеальной связи между величинами с маленьким разбросом.
❌ Ошибка: «$\rho(X,Y)=0$ означает, что $X$ и $Y$ независимы» ✅ Правильно: Нулевая корреляция означает лишь отсутствие линейной связи; величины могут быть строго зависимы нелинейно (см. пример $Y=X^2$, задание 27) 💡 Почему: Формула ковариации построена вокруг произведения отклонений от среднего — она «видит» только ту часть связи, которая описывается прямой линией. Параболическая, синусоидальная или любая другая симметричная нелинейная зависимость может дать ровно нулевую ковариацию, полностью оставаясь при этом зависимостью.
❌ Ошибка: «Раз между $X$ и $Y$ высокая корреляция, значит $X$ вызывает $Y$» ✅ Правильно: Корреляция говорит лишь о статистической согласованности, но не о механизме связи — причиной может быть скрытая переменная, обратная причинность или случайное совпадение 💡 Почему: Ковариация и корреляция вычисляются из наблюдаемых, уже случившихся данных и по построению симметричны ($\rho(X,Y)=\rho(Y,X)$) — они математически не способны отличить «$X$ вызывает $Y$» от «$Y$ вызывает $X$» или от «оба вызваны третьей причиной». Для установления причинности нужен контролируемый эксперимент или отдельный аппарат причинного вывода.
❌ Ошибка: «Коэффициент корреляции может быть, например, равен $1{,}3$, если связь особенно сильная» ✅ Правильно: Коэффициент корреляции Пирсона строго ограничен диапазоном $[-1,1]$ по неравенству, доказанному через неотрицательность дисперсии — значение вне этого диапазона означает ошибку в вычислениях или в исходных данных 💡 Почему: Это прямое следствие неравенства $\mathbb{D}(Z_X\pm Z_Y)\ge0$ (задание 21) — дисперсия никогда не бывает отрицательной, и из этого чисто алгебраически следует ограничение на $\rho$. Если при расчётах получилось $|\rho|>1$, значит где-то допущена арифметическая ошибка, а не найдена сверхсильная связь.
❌ Ошибка: «Корреляционная матрица данных — это отдельный, самостоятельный инструмент, никак не связанный с PCA» ✅ Правильно: Метод главных компонент строится непосредственно на анализе собственных значений и собственных векторов ковариационной (или корреляционной) матрицы признаков 💡 Почему: Собственные векторы ковариационной матрицы задают направления максимальной совместной изменчивости данных, а собственные значения — величину дисперсии вдоль этих направлений; PCA — не отдельная магия, а прямое алгебраическое следствие ковариации, применённой сразу ко всем парам признаков.
❌ Ошибка: «Если ковариация положительна, то и коэффициент корреляции обязательно близок к $1$» ✅ Правильно: Знак ковариации и её абсолютная величина — разные вещи; ковариация может быть положительной, но очень маленькой относительно произведения стандартных отклонений, что даёт корреляцию, близкую к нулю 💡 Почему: Ковариация — ненормированное число, зависящее от масштаба переменных, тогда как знак и «сила» связи — это разные характеристики: знак определяется направлением связи, а сила — тем, насколько точно эта связь описывается прямой линией (что и измеряет именно $\rho$, а не сама ковариация).
Главное запомнить
✅ Ковариация: $\mathrm{Cov}(X,Y)=\mathbb{E}[(X-\mathbb{E}X)(Y-\mathbb{E}Y)]=\mathbb{E}[XY]-\mathbb{E}X\cdot\mathbb{E}Y$ — мера совместной изменчивости двух случайных величин; $\mathrm{Cov}(X,X)=\mathbb{D}X$ как частный случай
✅ Знак ковариации показывает направление связи: положительная — величины растут и убывают согласованно, отрицательная — противофазно, нулевая — величины некоррелированы (нет линейной связи)
✅ Ковариация билинейна: $\mathrm{Cov}(aX+b,\ cY+d)=ac\cdot\mathrm{Cov}(X,Y)$ — она зависит от единиц измерения и масштаба переменных, поэтому её значение нельзя напрямую сравнивать между разными парами признаков
✅ Коэффициент корреляции Пирсона: $\rho(X,Y)=\mathrm{Cov}(X,Y)/(\sigma_X\sigma_Y)$ — нормированная, безразмерная версия ковариации, всегда лежит в диапазоне $[-1,1]$
✅ $\rho=\pm1$ означает точную линейную зависимость ($Y=aX+b$), $\rho=0$ означает отсутствие линейной связи, но не обязательно независимость величин
✅ Нулевая корреляция не гарантирует независимость (контрпример: $Y=X^2$ при $X$, симметричной относительно нуля) — корреляция улавливает только линейную составляющую связи
✅ Сильная корреляция не означает причинность — возможны скрытая переменная (конфаундер), обратная причинность или случайное совпадение; классический пример — мороженое и утопления, связанные через жаркую погоду
✅ Ковариационная матрица $\Sigma_{ij}=\mathrm{Cov}(X_i,X_j)$ обобщает ковариацию на многомерный случай, она симметрична и положительно полуопределена; после стандартизации признаков превращается в корреляционную матрицу
✅ Собственные векторы и собственные значения ковариационной матрицы лежат в основе метода главных компонент (PCA): собственные векторы задают направления максимальной изменчивости данных, собственные значения — величину дисперсии вдоль них
✅ Корреляционная матрица признаков — стандартный первый шаг в разведочном анализе данных (EDA): она помогает найти мультиколлинеарность между признаками и оценить их связь с целевой переменной
Связь с другими темами курса
🔙 Откуда пришли: Из урока 243 — совместное распределение, маргинальные и условные распределения, независимость случайных величин через факторизацию плотности; из более ранних уроков — определение дисперсии как частного случая ковариации
🔜 Куда идём:
- Выборка и генеральная совокупность (урок 245) — переход от теоретических характеристик распределения к их оценке по конечной выборке, включая выборочную ковариацию и корреляцию, которые ты уже считал в практических заданиях этого урока
- Регрессионный анализ (урок 249) — коэффициенты линейной регрессии напрямую выражаются через ковариации и дисперсии признаков, а мультиколлинеарность (высокая корреляция между признаками) — одна из главных практических проблем при её построении
- Проверка статистических гипотез (уроки 247–248) — статистическая значимость коэффициента корреляции, посчитанного по выборке, проверяется именно аппаратом проверки гипотез
🎯 В машинном обучении: Корреляционная матрица — стандартный инструмент разведочного анализа данных (EDA) для поиска мультиколлинеарности и первичного отбора признаков; ковариационная матрица — фундамент метода главных компонент (PCA) и многомерного нормального распределения; предупреждение «корреляция не причинность» — постоянный источник ошибок при построении признаков и риска утечки данных в реальных проектах
Интересные факты
📌 Классический пример «мороженое и утопления» — не единичный анекдот, а часть целого жанра «ложных корреляций», которые находят, перебирая множество пар временных рядов без всякой содержательной связи. Статистик Тайлер Вайген собрал сотни курьёзных примеров вроде почти идеальной корреляции между потреблением сыра на душу населения в США и числом людей, запутавшихся в собственных простынях — оба ряда данных просто росли на протяжении нескольких лет подряд, что автоматически даёт высокую корреляцию без какой-либо причинной связи.
📌 Двумерное нормальное распределение — единственное классическое распределение, для которого из нулевой ковариации между компонентами следует их независимость. Для любого другого совместного распределения это, как показывает пример с $Y=X^2$, не так: некоррелированность — заметно более слабое условие, чем независимость.
📌 Термин «регрессия», который сегодня означает «предсказание непрерывной величины», ведёт свою родословную ровно от исследований Гальтона о корреляции роста родителей и детей — он заметил эффект «регрессии к среднему» (дети очень высоких родителей в среднем чуть ниже родителей) как прямое следствие неполной корреляции между поколениями, и с тех пор слово прижилось в статистике в почти не связанном с оригинальным биологическим наблюдением смысле.
📌 Коэффициент корреляции Пирсона измеряет только линейную связь, и существуют альтернативные коэффициенты — например, корреляция Спирмена, которая измеряет монотонную (не обязательно линейную) связь через ранги значений, а не сами значения. Признаки могут иметь низкую корреляцию Пирсона и при этом высокую корреляцию Спирмена, если связь между ними монотонна, но нелинейна — ещё один аргумент против слепого доверия одному-единственному числу $\rho$.
Лайфхаки и полезные трюки
💡 Прежде чем интерпретировать сильную корреляцию как значимое открытие, задай себе вопрос: «а что, если оба явления — следствие какой-то третьей, ещё не рассмотренной причины?» Этот единственный вопрос отсекает подавляющее большинство ложных выводов о причинности в аналитике.
💡 В pandas команда df.corr() по умолчанию считает именно корреляцию Пирсона; если подозреваешь, что связь между признаками нелинейная, но монотонная, попробуй df.corr(method='spearman') — иногда это открывает связи, которые Пирсон полностью пропускает.
💡 Перед построением линейной модели быстро просканируй корреляционную матрицу признаков на пары с $|\rho| > 0{,}8$–$0{,}9$: это первый и самый дешёвый способ заметить потенциальную мультиколлинеарность, прежде чем она проявится в виде неустойчивых или контринтуитивных коэффициентов модели.
💡 Если нужно быстро прикинуть «на глаз», действительно ли облако точек на диаграмме рассеяния демонстрирует линейную связь, обрати внимание не только на общий наклон, но и на форму облака: узкий, вытянутый эллипс — признак высокой $|\rho|$, широкое, почти круглое облако — признак $\rho$, близкого к нулю, независимо от того, есть ли там скрытая нелинейная закономерность.
💡 Проверка $|\mathrm{Cov}(X,Y)| \le \sigma_X\sigma_Y$ (эквивалентная $|\rho|\le1$) — удобный быстрый способ проверить, не закралась ли ошибка в вычислениях дисперсий и ковариации: если после подстановки твоих чисел получается $|\rho|>1$, где-то точно есть арифметическая ошибка, а не сенсационно сильная связь.
💡 Когда строишь PCA на признаках с сильно разными единицами измерения (например, возраст в годах и доход в рублях), всегда стандартизируй данные заранее — иначе PCA, работая с сырой ковариационной матрицей, «увидит» огромную дисперсию признака с большим масштабом просто из-за единиц измерения, а не из-за реальной вариативности данных, и первая компонента окажется почти полностью посвящена одному этому признаку.
Ковариация и корреляция — это первый и самый важный шаг на пути от «просто смотреть на данные» к строгому языку связей между ними. Одно число $\rho$ умеет сказать удивительно много: направление связи, её приблизительную силу, риск мультиколлинеарности в будущей модели, потенциальный кандидат в главные компоненты при сжатии размерности. Но, как и любой мощный инструмент, оно требует дисциплины в использовании: помни, что $\rho=0$ не значит «независимость», а $\rho$, близкое к единице, не значит «одно явление вызывает другое». Держа в голове эти две оговорки, ты сможешь читать любую корреляционную матрицу не как магическую тепловую карту, а как содержательный, понятный тебе изнутри отчёт о структуре данных — а это ровно то умение, с которого начинается любой осмысленный разведочный анализ перед построением модели.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку