Матрица корреляции пирсона python

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

Чем дальше коэффициент корреляции от нуля, тем сильнее связь между двумя переменными.

Но в некоторых случаях мы хотим понять корреляцию между более чем одной парой переменных. В этих случаях мы можем создать матрица корреляции, представляющая собой квадратную таблицу, которая показывает коэффициенты корреляции между несколькими попарными комбинациями переменных.

В этом руководстве объясняется, как создать и интерпретировать корреляционную матрицу в Python.

Как создать матрицу корреляции в Python

Выполните следующие шаги, чтобы создать матрицу корреляции в Python.

Шаг 1. Создайте набор данных

import pandas as pd data = df = pd.DataFrame(data, columns=['assists','rebounds','points']) df # assist rebounds points #0 4 12 22 #1 5 14 24 #2 5 13 26 #3 6 7 26 #4 7 8 29 #5 8 8 32 #6 8 9 20 #7 10 13 14

Шаг 2. Создайте матрицу корреляции

#создать корреляционную матрицу df.corr() assists rebounds points assists 1.000000 -0.244861 -0.329573 rebounds -0.244861 1.000000 -0.522092 points -0.329573 -0.522092 1.000000 #создайте ту же матрицу корреляции с коэффициентами, округленными до 3 знаков после запятой df.corr().round(3) assists rebounds points assists 1.000 -0.245 -0.330 rebounds -0.245 1.000 -0.522 points -0.330 -0.522 1.000

Шаг 3. Интерпретация матрицы корреляции

Все коэффициенты корреляции по диагонали таблицы равны 1, потому что каждая переменная совершенна коррелирует сам с собой.

Все остальные коэффициенты корреляции указывают на корреляцию между различными попарными комбинациями переменных. Например:

  • Коэффициент корреляции между передачами и подборами равен -0.245
  • Коэффициент корреляции между передачами и очками равен -0.330 .
  • Коэффициент корреляции между подборами и очками равен -0.522

Шаг 4. Визуализируйте матрицу корреляции (необязательно)

Вы можете визуализировать матрицу корреляции с помощью параметры стиля доступны в pandas:

corr = df.corr() corr.style.background_gradient(cmap='coolwarm')

Correlation matrix in Python

Вы также можете изменить аргумент cmap , чтобы создать корреляционную матрицу с разными цветами.

corr = df.corr() corr.style.background_gradient(cmap='RdYlGn') 

Correlation matrix with matplotlib in Python

corr = df.corr() corr.style.background_gradient(cmap='bwr')

Correlation matrix using Pandas

Примечание: Полный список аргументов cmap см. в документация по matplotlib.

Источник

pandas.DataFrame.corr#

Compute pairwise correlation of columns, excluding NA/null values.

Parameters method or callable

  • pearson : standard correlation coefficient
  • kendall : Kendall Tau correlation coefficient
  • spearman : Spearman rank correlation
  • callable: callable with input two 1d ndarrays and returning a float. Note that the returned matrix from corr will have 1 along the diagonals and will be symmetric regardless of the callable’s behavior.

Minimum number of observations required per pair of columns to have a valid result. Currently only available for Pearson and Spearman correlation.

numeric_only bool, default False

Include only float , int or boolean data.

Changed in version 2.0.0: The default value of numeric_only is now False .

Compute pairwise correlation with another DataFrame or Series.

Compute the correlation between two Series.

Pearson, Kendall and Spearman correlation are currently computed using pairwise complete observations.

>>> def histogram_intersection(a, b): . v = np.minimum(a, b).sum().round(decimals=1) . return v >>> df = pd.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)], . columns=['dogs', 'cats']) >>> df.corr(method=histogram_intersection) dogs cats dogs 1.0 0.3 cats 0.3 1.0 
>>> df = pd.DataFrame([(1, 1), (2, np.nan), (np.nan, 3), (4, 4)], . columns=['dogs', 'cats']) >>> df.corr(min_periods=3) dogs cats dogs 1.0 NaN cats NaN 1.0 

Источник

Читайте также:  Kotlin массив из объектов
Оцените статью