如何在Python中进行相关性测试(附实例)

590 阅读2分钟

量化两个变量之间关系的一种方法是使用皮尔逊相关系数,该系数衡量两个变量之间的线性关联*。*

它总是在-1和1之间取值,其中:

  • -1表示完全负线性相关
  • 0表示没有线性相关关系
  • 1表示完全正的线性相关

为了确定一个相关系数是否具有统计学意义,你可以计算出相应的t分数和p值。

计算相关系数(r)的t分数的公式是。

t= r * √n-2 / √1-r2

然后,p值被计算为具有n-2个自由度的t分布的相应双侧p值。

例子:Python中的相关测试

为了确定两个变量之间的相关系数是否有统计学意义,你可以使用SciPy库中的pearsonr函数在Python中进行相关检验。

这个函数返回两个变量之间的相关系数以及双尾P值。

例如,假设我们在Python中有以下两个数组:

#create two arrays
x = [3, 4, 4, 5, 7, 8, 10, 12, 13, 15]
y = [2, 4, 4, 5, 4, 7, 8, 19, 14, 10]

我们可以导入pearsonr函数并计算这两个数组之间的Pearson相关系数:

from scipy.stats.stats import pearsonr

#calculation correlation coefficient and p-value between x and y
pearsonr(x, y)

(0.8076177030748631, 0.004717255828132089)

下面是如何解释输出的:

  • 皮尔逊相关系数(r):0.8076
  • 双尾P值:0.0047

由于相关系数接近于1,这告诉我们这两个变量之间存在着强烈的正相关。

而由于相应的P值小于0.05,我们得出结论,两个变量之间存在着统计学上的显著关联。

请注意,我们也可以从pearsonr函数中提取单个相关系数和p值:

#extract correlation coefficient (rounded to 4 decimal places)
r = round(pearsonr(x, y)[0], 4)

print(r)

0.8076

#extract p-value (rounded to 4 decimal places) 
p = round(pearsonr(x, y)[1], 4)

print(p) 

0.0047

与原始pearsonr函数的输出相比,这些值更容易阅读。

额外的资源

下面的教程提供了关于相关系数的额外信息:

皮尔逊相关系数简介
什么被认为是 "强 "相关?
皮尔逊相关的五个假设