pandas.Series.corr#
Compute correlation with other Series, excluding missing values.
The two Series objects are not required to be the same length and will be aligned internally before the correlation function is applied.
Parameters other Series
Series with which to compute the correlation.
Method used to compute correlation:
- 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 needed to have a valid result.
Compute pairwise correlation between columns.
Compute pairwise correlation with another DataFrame or 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 >>> s1 = pd.Series([.2, .0, .6, .2]) >>> s2 = pd.Series([.3, .6, .0, .1]) >>> s1.corr(s2, method=histogram_intersection) 0.3
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
Как рассчитать ранговую корреляцию Спирмена в Python
В статистике корреляция относится к силе и направлению связи между двумя переменными. Значение коэффициента корреляции может варьироваться от -1 до 1 со следующими интерпретациями:
- -1 : идеальная отрицательная связь между двумя переменными
- 0: нет связи между двумя переменными
- 1: идеальная положительная связь между двумя переменными
Один особый тип корреляции называется ранговая корреляция Спирмена, которая используется для измерения корреляции между двумя ранжированными переменными. (например. оценка учащегося на экзамене по математике и оценка его оценки на экзамене по естественным наукам в классе).
Это учебник объясняет, как вычислить ранговую корреляцию Спирмена между двумя переменными в Python
Пример: ранговая корреляция Спирмена в Python
Предположим, у нас есть следующий кадр данных pandas, который содержит стиль оценка экзамена по математике и экзамена по естественным наукам 10 учащихся в определенном классе:
import pandas as pd #create DataFrame df = pd.DataFrame()
Чтобы вычислить корреляцию рейтинга Спирмена между оценками по математике и естественным наукам , мы можем использовать spearmanr() из scipy.stats:
from scipy.stats import spearmanr #calculate Spearman Rank correlation and corresponding p-value rho, p = spearmanr(df['math'], df['science']) #напечатать ранговая корреляция Спирмена и p-значение print(rho) # -0.41818181818181815 print(p) # 0.22911284098281892
Из вывода видно, что ранговая корреляция Спирмена составляет -0,41818, а соответствующее значение p равно 0,22911.
Это указывает на наличие отрицательной корреляции между результатами экзаменов по естественным наукам и математике.
Однако, поскольку p-значение корреляции не меньше 0,05, корреляция не является статистически значимой.
Обратите внимание, что мы также можем использовать следующий синтаксис, чтобы просто извлечь коэффициент корреляции или значение p:
#Коэффициент ранговой корреляции Спирмена spearmanr(df['math'], df['science'])[0] # -0.41818181818181815 #извлечь p-значение ранговой корреляции Спирмена spearmanr(df['math'], df['science'])[1] # 0.22911284098281892