Matlab
注意,数组元素之间用分号隔开的
clear all;
a=[ 0.6; 0.9;0.78; 0.28;0.44;0.40;0.69;0.94;0.45]
b=[ 31.46;26.75;32.08 ;26.38;29.75;27.57;28.56 ;27.67 ;28.18 ]
coeff = corr(a , b,'type','pearson');
Python
from math import sqrt
def multipl(a,b):
sumofab = 0.0
for i in range ( len (a)):
temp = a[i] * b[i]
sumofab =sumofab + temp
return sumofab
def corrcoef(x,y):
n = len (x)
#求和
sum1 = sum (x)
sum2 = sum (y)
#求乘积之和
sumofxy = multipl(x,y)
#求平方和
sumofx2 = sum ([ pow (i, 2 ) for i in x])
sumofy2 = sum ([ pow (j, 2 ) for j in y])
num = sumofxy - ( float (sum1) * float (sum2) / n)
#计算皮尔逊相关系数
den = sqrt((sumofx2 - float (sum1 ** 2 ) / n) * (sumofy2 - float (sum2 ** 2 ) / n))
return num / den
#神经质维度
x = [ 0.6 , 0.9 , 0.78 , 0.28,0.44,0.40,0.69,0.94,0.45 ]
y = [ 31.46,26.75,32.08 ,26.38 ,29.75 ,27.57 ,28.56 ,27.67 ,28.18 ]
print (corrcoef(x,y)) #0.14418073993882827
from scipy.stats import pearsonr
pccs = pearsonr(x, y)
print(pccs)
(0.14418073993881686, 0.7113182029255729)
参考:
统计相关系数(1)——Pearson(皮尔逊)相关系数及MATLAB实现
matlab相关系数计算公式(Pearson和Spearman,以及Kendall Rank)
皮尔逊相关系数的计算(python代码版)
Python–如何计算皮尔逊相关系数(Pearson correlation coefficient)