Как рассчитать корреляцию в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *