- Как рассчитать корреляцию между двумя столбцами в Pandas
- Пример 1: расчет корреляции между двумя столбцами
- Пример 2: расчет значимости корреляции
- Как рассчитать корреляцию в Python
- Как рассчитать корреляцию в Python
- Дополнительные ресурсы
- Как выполнить корреляционный тест в Python (с примером)
- Пример: корреляция Тест на Python
- Дополнительные ресурсы
Как рассчитать корреляцию между двумя столбцами в Pandas
Вы можете использовать следующий синтаксис для вычисления корреляции между двумя столбцами в кадре данных pandas:
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: расчет корреляции между двумя столбцами
В следующем коде показано, как вычислить корреляцию между столбцами в кадре данных pandas:
import pandas as pd #create DataFrame df = pd.DataFrame() #view first five rows of DataFrame df.head () points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 #calculate correlation between points and assists df['points']. corr(df['assists']) -0.359384
Коэффициент корреляции равен -0,359.Поскольку эта корреляция отрицательна, это говорит нам о том, что очки и передачи имеют отрицательную корреляцию.
Другими словами, по мере увеличения значений в столбце очков значения в столбце помощи имеют тенденцию к уменьшению.
Пример 2: расчет значимости корреляции
Чтобы определить, является ли коэффициент корреляции статистически значимым, вы можете использовать функцию pearsonr(x, y) из библиотеки SciPy .
Следующий код показывает, как использовать эту функцию на практике:
import pandas as pd from scipy. stats import pearsonr #create DataFrame df = pd.DataFrame() #calculate p-value of correlation coefficient between points and assists pearsonr(df['points'], df['assists']) (-0.359384, 0.38192)
Первое значение в выходных данных отображает коэффициент корреляции (-0,359384), а второе значение отображает p-значение (0,38192), связанное с этим коэффициентом корреляции.
Поскольку p-значение не меньше α = 0,05, можно сделать вывод, что корреляция между очками и передачами не является статистически значимой.
Как рассчитать корреляцию в Python
Один из способов количественной оценки взаимосвязи между двумя переменными – использовать Коэффициент корреляции Пирсона, который является мерой линейной связи между двумя переменными.\u00a0Он всегда принимает значение от -1 до 1, где:\n
-1 указывает на совершенно отрицательную линейную корреляцию между двумя переменные
- 0 указывает на отсутствие линейной корреляции между двумя переменными
- 1 указывает на совершенно положительную линейную корреляцию между двумя переменными
Чем дальше коэффициент корреляции от нуля, тем сильнее Связь между двумя переменными.
В этом руководстве объясняется, как вычислить корреляцию между переменными в Python.
Как рассчитать корреляцию в Python
Чтобы вычислить корреляцию между двумя переменными в Python, мы можем использовать функцию Numpy corrcoef()
import numpy as np np.random.seed(100) #создать массив из 50 случайных целых чисел от 0 до 10 var1 = np.random.randint(0, 10, 50) #создать положительно коррелированный массив с некоторым случайным шумом var2 = var1 + np.random.normal(0, 10, 50) #рассчитать корреляцию между двумя массивами 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, мы можем заключить, что существует статистически значимая корреляция между двумя переменными.
Если вас интересует вычисление корреляции между несколькими переменными в Pandas DataFrame, вы можете просто использовать функцию .corr()
import pandas as pd data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data # A B C #0 8 0 9 #1 4 0 7 #2 9 6 8 #3 1 8 1 #4 8 0 8 #рассчитать коэффициенты корреляции для всех попарных комбинаций data.corr() # A B C # A 1.000000 -0.775567 -0.493769 # B -0.775567 1.000000 0.000000 # C -0.493769 0.000000 1.000000
И если вас интересует только расчет корреляции между двумя конкретными переменными в DataFrame, вы можете указать переменные:
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в Python:
Как выполнить корреляционный тест в Python (с примером)
Чтобы определить, корреляция является статистически значимым, можно рассчитать соответствующий t-показатель и значение p.
Формула для расчета t-оценка коэффициента корреляции (r):
t = r * √n-2 / √1-r 2
Затем p-значение рассчитывается как соответствующие два- одностороннее значение p для t-распределения с n-2 степенями свободы.
Пример: корреляция Тест на Python
Чтобы определить, является ли коэффициент корреляции между двумя переменными статистически значимым, вы можете выполнить корреляционный тест на Python с использованием функции pearsonr из библиотеки SciPy.
Эта функция возвращает коэффициент корреляции между двумя переменными вместе с двусторонним значением p.
Например, предположим, что у нас есть следующие два массива в Python:
#создать два массива x = [3, 4, 4, 5, 7 , 8, 10, 12, 13, 15] y = [2, 4, 4, 5, 4, 7, 8, 19, 14, 10]
Мы можем импортировать функцию pearsonr и вычислить коэффициент корреляции Пирсона между двумя массивами:
from scipy.stats.stats import pearsonr #расчет коэффициента корреляции и значения p между x и y pearsonr(x, y) # (0.8076177030748631, 0.004717255828132089)
Вот как интерпретировать вывод:
- Коэффициент корреляции Пирсона (r): 0,8076
- Двустороннее значение p: 0,0047
Поскольку коэффициент корреляции близок к 1, это говорит нам о сильной положительной связи между двумя переменными.
И поскольку соответствующее значение p меньше 0,05, мы заключаем, что существует статистически значимая связь между двумя переменными.
Обратите внимание, что мы также можем извлечь индивидуальный коэффициент корреляции и значение p из функции
#коэффициент корреляции (с округлением до 4 знаков после запятой) r = round(pearsonr(x, y)[0], 4) print(r) # 0.8076 #p-value ( округляется до 4 десятичных знака) p = round(pearsonr(x, y)[1], 4) print(p) # 0.0047
Эти значения немного легче читать по сравнению с выходными данными исходной функции pearsonr.
Дополнительные ресурсы
Следующие руководства содержат дополнительную информацию о коэффициентах корреляции: