Как рассчитать корреляцию в python
Один из способов количественной оценки связи между двумя переменными – использовать коэффициент корреляции Пирсона , который является мерой линейной связи между двумя переменными . Он всегда принимает значение от -1 до 1, где:
- -1 указывает на совершенно отрицательную линейную корреляцию между двумя переменными.
- 0 указывает на отсутствие линейной корреляции между двумя переменными.
- 1 указывает на совершенно положительную линейную корреляцию между двумя переменными.
Чем дальше коэффициент корреляции от нуля, тем сильнее связь между двумя переменными.
В этом руководстве объясняется, как рассчитать корреляцию между переменными в Python.
Как рассчитать корреляцию в Python
Чтобы вычислить корреляцию между двумя переменными в Python, мы можем использовать функцию Numpy corrcoef() .
import numpy as np np.random.seed(100) #create array of 50 random integers between 0 and 10 var1 = np.random.randint(0, 10, 50) #create a positively correlated array with some random noise var2 = var1 + np.random.normal(0, 10, 50) #calculate the correlation between the two arrays np.corrcoef(var1, var2) [[ 1. 0.335] [ 0.335 1. ]]
Видно, что коэффициент корреляции между этими двумя переменными составляет 0,335 , что является положительной корреляцией.
По умолчанию эта функция создает матрицу коэффициентов корреляции. Если бы мы хотели вернуть только коэффициент корреляции между двумя переменными, мы могли бы использовать следующий синтаксис:
np.corrcoef(var1, var2)[0,1] 0.335
Чтобы проверить, является ли эта корреляция статистически значимой, мы можем вычислить значение p, связанное с коэффициентом корреляции Пирсона, с помощью функции Scipy pearsonr() , которая возвращает коэффициент корреляции Пирсона, а также двустороннее значение p.
from scipy.stats.stats import pearsonr pearsonr(var1, var2) (0.335, 0.017398)
Коэффициент корреляции составляет 0,335 , а двустороннее значение p — 0,017 . Поскольку это значение p меньше 0,05, мы можем сделать вывод, что между двумя переменными существует статистически значимая корреляция.
Если вы хотите рассчитать корреляцию между несколькими переменными в DataFrame Pandas, вы можете просто использовать функцию .corr() .
import pandas as pd data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data ABC 0 8 0 9 1 4 0 7 2 9 6 8 3 1 8 1 4 8 0 8 #calculate correlation coefficients for all pairwise combinations data.corr() ABC A 1.000000 -0.775567 -0.493769 B -0.775567 1.000000 0.000000 C -0.493769 0.000000 1.000000
А если вы хотите вычислить корреляцию только между двумя конкретными переменными в DataFrame, вы можете указать переменные:
data['A'].corr(data['B']) -0.775567
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи на Python:
Как создать матрицу корреляции в Python
Как рассчитать корреляцию рангов Спирмена в Python
Как рассчитать автокорреляцию в Python