Pearson Collelation

皮尔森相关系数是衡量线性关联性的程度,P的一个几何解释是其代表两个变量的取值根据均值集中后构成的向量之间夹角的余弦。

  • 0 无相关
  • 0-1 正相关
  • -1 - 0负相关

相关系数

  • 0.8-1.0 极强相关
  • 0.6-0.8 强相关
  • 0.4-0.6 中等相关
  • 0.2- 0.4 弱相关
  • 0.0- 0.2 极弱相关或者无关

    计算公式

在这里插入图片描述
两个连续变量(x,y)的per 系数P(x,y)等于他们之间的协方差cov(x,y)除以他们各自的标准差成绩。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import math
vec1 = [0,1,2,3,4]
vec2 = [0,1,2,3,4]
def pearson(vec1,vec2):
n = len(vec1)
n1= len(vec2)
if(n==n1):
sum1 = sum(float(vec1[i]) for i in range(n))
sum2 = sum(float(vec2[i]) for i in range(n))
sum1_pow = sum([pow(v,2.0) for v in vec1])
sum2_pow = sum([pow(v,2.0) for v in vec2])
p_sum = sum([vec1[i]*vec2[i] for i in range(n)])
num = p_sum-(sum1*sum2/n)
fen = math.sqrt((sum1_pow-pow(sum1,2)/n)*(sum2_pow-pow(sum2,2)/n))
if fen ==0:
return 0.0;
return num/fen;
return 0.0;
v = pearson(vec1,vec2);
print(v)