在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coefficient,简称 PPMCC或PCCs),是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。
R
=
∑
z
x
z
y
N
R = \frac{\sum{z_xz_y}}{N}
R=N∑zxzy
式中:
- R: 皮尔逊相关系数
- z x z_x zx: 变量x的z分数, z x = x − x ˉ S x z_x = \frac{x - \bar{x}}{S_x} zx=Sxx−xˉ ,就是将 变量x 转化成标准正态分布
- z x z_x zx: 变量y的z分数, z y = y − y ˉ S y z_y = \frac{y - \bar{y}}{S_y} zy=Syy−yˉ , 就是将 变量y 转化成标准正态分布
- N: X 和 Y 取值的配对个数
公式的工作原理:
首先将配对的 z分数相乘。
如果样本中某个对象在两个考察变量上的取值都大于均值,则两个 z分数 都为正, 相乘后的交叉乘积也将为正。同理,如果某个对象在两个变量上的取值都小于均值,则两个z分数都为负,相乘后的交叉乘积还是为正。因此,如果样本中一个变量的较小取值倾向于与另一个变量的较小取值联系在一起,一个变量的较大取值倾向于与另一个变量的较大取值联系在一起,那么交叉乘积项求和后就会得到一个正数,这也就是相关系数为正的原因所在。
现在考虑一个变量的较大取值与另一个变量的较小取值联系在一起时会如何。如果样本中的一个对象在一个变量上的取值大于均值(即z分数为正),在另一个变量上的取值小于均值(z分数为负),那么这两个z分数相乘后,积为负数。 如果对于样本中的大多数对象而言,一个变量的较大取值与另一个变量的较小取值联系在一起,则z分数的乘积和 ∑ z x z y \sum{z_xz_y} ∑zxzy 为负。这也就是相关系数为负数的原因所在。
简单的相关系数的分类:
- 0.8-1.0 极强相关
- 0.6-0.8 强相关
- 0.4-0.6 中等程度相关
- 0.2-0.4 弱相关
- 0.0-0.2 极弱相关或无相关
import numpy as np
import pandas as pd
x = [2, 4, 6, 8]
y = [3, 9, 6, 12]
data = pd.DataFrame({'x':x, 'y':y})
# print(data)
# x y
# 0 2 3
# 1 4 9
# 2 6 6
# 3 8 12
print(data.corr())
# x y
# x 1.0 0.8
# y 0.8 1.0
自己根据皮尔逊相关系数公式撸一下
z_x = (x - np.mean(x)) / np.std(x)
z_y = (y - np.mean(y)) / np.std(y)
r = np.sum(z_x * z_y) / len(x)
print(r)
# 0.8