在Python中计算Pearson's r和P值,以报告相关性的显著性的一个好的解决方案是scipy.stats.pearsonr(x, y) 。对结果的一个很好的概述提供了pingouin'spg.corr(x, y) 。
什么是皮尔逊的 "r "测量?
用Pearson'sr的统计相关性来衡量两个数字变量之间的线性关系。
相关系数r告诉我们数值如何位于一条下降或上升的线上。r的值可以在1(正相关)和-1(负相关)之间,0则是没有相关。
皮尔逊相关的前提条件是正态分布和公制数据(例如,身高、距离、收入或年龄的测量)。
对于分类数据,你应该使用Spearman Rho等级相关。
然而,正态分布是最不重要的先决条件,对于较大的数据集,参数检验是稳健的,所以仍然可以使用。较大的数据集往往是正态分布的,但是正态性检验对微小的变化很敏感,在大数据集上拒绝正态性的概念。
注意:要注意不要把因果关系和相关关系混为一谈。两个有关联的变量不一定有因果关系。可能是第三个变量的缺失解释了这种相关性,或者只是偶然的。这就是所谓的假性关系。
计算相关系数 "r "的Python库
我们将用虹膜数据集上的几个包来计算相关系数r。
首先,我们加载必要的包。
import pandas as pd
import numpy as np
import pingouin as pg
import seaborn as sns
import scipy as scipy
Seaborn中的皮尔逊相关
许多包都有内置的数据集。你可以从Seaborn导入iris 。
iris = sns.load_dataset('iris')
iris.head()
输出。

通过seaborn的sns.heatmap() ,我们可以得到一个快速的相关矩阵,如果我们把df.corr() 传入函数。
sns.heatmap(iris.corr())
输出。

这告诉我们,我们在花瓣长度和花瓣宽度之间有很高的相关性,所以我们将分别测试这些变量。
首先,我们用seaborn检查这两个变量 [sns.scatterplot()](https://blog.finxter.com/how-to-change-the-figure-size-for-a-seaborn-plot/)来直观地确定一个线性关系。
sns.scatterplot(data=iris, x="petal_length", y="petal_width")
输出结果。

有一个明显的线性关系,所以我们继续计算我们的相关系数。
NumPy中的皮尔逊相关
NumPy 将提供相关系数Pearson'sr与np.corrcoef(x, y) 。
np.corrcoef(iris["petal_length"], iris["petal_width"])
输出。

潘达斯中的皮尔逊相关
Pandas也有一个相关函数。用df.corr() ,你可以得到整个数据框架的相关矩阵。或者你可以像这样用x.corr(y) 测试两个变量之间的相关性。
iris["petal_length"].corr(iris["petal_width"])
输出。

注意:NumPy和pandas不提供p值,如果你想报告结果,这一点很重要。以下两个解决方案更适合于此。
SciPy中的Pearson Correlation
通过scipy.stats.pearsonsr(x, y) ,我们很快就能收到r和p值。
scipy.stats.pearsonr(iris["petal_length"], iris["petal_width"])

SciPy只提供两个值,但这两个值很重要:第一个是相关系数r,第二个是决定重要性的p值。
Pingouin中的皮尔逊相关
我最喜欢的解决方案是统计包pingouin ,因为它提供了你在解释时需要的所有数值。
如果你不熟悉pingouin ,就去看看吧!它有很好的功能来完成测试统计。
pg.corr(iris["petal_length"], iris["petal_width"])
输出。

输出告诉我们案例的数量n,系数r,置信区间,p值,贝叶斯系数和功率。
功率告诉我们检测到变量之间真实和强烈关系的概率。如果功率很高,我们就有可能检测到一个真实的效应。
解释。
最重要的数值是相关系数r和p值。Pingouin还提供了一些更有用的测试统计数据。
如果p<0.05,我们就认为测试结果是显著的。
r为0.96,这是一个高度的正相关,当1是最大的,是一个完美的相关。
根据r,我们可以确定效应大小,它告诉我们关系的强度,按照科恩的效应大小解释r。对效应大小也有其他解释,但科恩的解释被广泛使用。
根据Cohen的解释,r值在0.1到0.3之间表明关系较弱,从0.3开始是平均效果,从0.5开始是强效果。r=0.96时,我们解释为强关系。