1. 定义
皮尔逊相关系数用于度量两个变量(X和Y)之间的线性相关程度,其值介于-1与1之间。这种线性相关直观表述就是,随着X增大,Y是否同时增大或者减小;当二者分布在一条直线上时,皮尔逊相关系数等于1或-1; 两个变量之间没有线性关系,皮尔逊相关系数为0.
总体相关系数公式:
[站外图片上传中...(image-4135d0-1587028642964)]
由:
[站外图片上传中...(image-73d5ad-1587028642964)]
推出:
[站外图片上传中...(image-23a6f4-1587028642964)]
样本相关系数公式:
[站外图片上传中...(image-839d6f-1587028642964)]
[站外图片上传中...(image-8e4106-1587028642964)]
2. 皮尔逊相关系数与协方差
换个角度理解皮尔逊相关系数:
皮尔逊相关系数就是两个变量协方差除以两个变量标准差乘积:
协方差是一个反映两个随机变量相关程度的指标,协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但是协方差值的大小并不能很好地度量两个随机变量的关联程度,值的大小受到两个变量量纲的影响,不适合用于比较。为了更好的度量两个随机变量的相关程度,引入了Pearson相关系数,其在协方差的基础上除以了两个随机变量的标准差,消除了量纲的影响。
3. 皮尔逊相关系数度量
- 0.8-1.0 极强相关
- 0.6-0.8 强相关
- 0.4-0.6 中等程度相关
- 0.2-0.4 弱相关
- 0.0-0.2 极弱相关或无相关
4. python中如何计算皮尔逊积矩相关系数
M1
import pandas as pd
import numpy as np
#原始数据
x= pd.Series([3,1,2,2,1,3])
y= pd.Series([1,2,3,2,1,1])
r = x.corr(y,method="pearson")
print(r)
-0.2738612787525831
M2
import scipy.stats
x= pd.Series([3,1,2,2,1,3])
y= pd.Series([1,2,3,2,1,1])
scipy.stats.pearsonr(x,y)[0]
-0.27386127875258304
M3
import numpy as np
def pearson_r(x, y):
mx = np.mean(x, axis=0)
my =np.mean(y, axis=0)
xm, ym = x - mx, y - my
r_num = np.sum(xm * ym)
x_square_sum = np.sum(xm * xm)
y_square_sum = np.sum(ym * ym)
r_den = np.sqrt(x_square_sum * y_square_sum)
r = r_num / r_den
return np.mean(r)
pearson_r(x,y)
-0.27386127875258304
网友评论