May 18, 2022

Когда корреляция работает, а когда - нет

Почему говорят, что корреляция отражает линейную связь между переменными? И какую "взаимосвязь" корреляция не видит? Сначала рассмотрим примеры применимости данного показателя.

Как я упоминал ранее, корреляция близка к 1, если измеряемые величины принимают одновременно большие или маленькие значения, если наоборот, корреляция будет близка к -1. В случае, когда связи не прослеживается, то она будет близка к 0. Ниже примеры, хорошей корреляции:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

x = np.arange(-5,6)
y = 0.25*x
plt.plot(x,y)
pd.DataFrame({'x':x,'y':y}).corr()

В примере максимальная положительная корреляция, а вот - отрицательная:

y = -0.75*x
plt.plot(x,y)
pd.DataFrame({'x':x,'y':y}).corr()

вот пример, когда связи нет:

x = np.random.normal(size=100)
y = np.random.normal(size=100)
plt.scatter(x,y)
pd.DataFrame({'x':x,'y':y}).corr()

Однако корреляция улавливает не любую взаимосвязь между переменными. То есть зависимость может быть (например, квадратичная), но при этом коэффициент корреляции не будет отражать этого. Ниже пример:

x = np.arange(-5,6)
y = x**2
plt.plot(x,y)
pd.DataFrame({'x':x,'y':y}).corr()

Не пропустите ничего интересного и подписывайтесь на страницы канала в других социальных сетях:

Яндекс Дзен

Telegram