代码编织梦想

代码来源于:https://github.com/yaleimeng/Final_word_Similarity
我将其单独抽取、组合出来做讲解。

1. 简介

相关系数:考察两个变量之间的相关程度。相关系数越大,相关性越强。
皮尔逊相关也称为积差相关,是英国统计学家皮尔逊于20世纪提出的一种计算直线相关的方法。

2. 公式

在这里插入图片描述
三个公式都能计算正确结果,我们采用第三个公式来编程实现。

3. 代码实现

from math import sqrt

def multiply(a,b):
    #a,b两个列表的数据一一对应相乘之后求和
    sum_ab=0.0
    for i in range(len(a)):
        temp=a[i]*b[i]
        sum_ab+=temp
    return sum_ab

def cal_pearson(x,y):
    n=len(x)
    #求x_list、y_list元素之和
    sum_x=sum(x)
    sum_y=sum(y)
    #求x_list、y_list元素乘积之和
    sum_xy=multiply(x,y)
    #求x_list、y_list的平方和
    sum_x2 = sum([pow(i,2) for i in x])
    sum_y2 = sum([pow(j,2) for j in y])
    molecular=sum_xy-(float(sum_x)*float(sum_y)/n)
    #计算Pearson相关系数,molecular为分子,denominator为分母
    denominator=sqrt((sum_x2-float(sum_x**2)/n)*(sum_y2-float(sum_y**2)/n))
    return molecular/denominator

if __name__ == '__main__':
    x = [1.0, 0.8413847866522796, 1.0, 1.0, 0.7220196471443738, 0.8659769034282755, 0.8525472520008003, 1.0,
         0.8333703748448211, 0.389905372997432, 0.7323982353899079, 0.7636377912400188, 0.7182768399980969,
         0.2674857649974473, 0.4044950329998137, 0.34512807490538866, 0.18946683500771058, 0.30049731372316213,
         0.24729781155291156, 0.3094230131574097, 0.41238596985736753, 0.0, 0.0, 0.2684506957865521,
         0.14158316440453367, 0.35473275983651914, 0.0, 0.0, 0.0, 0.0]
    y = [0.98, 0.96, 0.96, 0.94, 0.925, 0.9025, 0.875, 0.855, 0.7775, 0.77, 0.7625, 0.7425, 0.7375, 0.705, 0.42, 0.415,
         0.29, 0.275, 0.2375, 0.2225, 0.2175, 0.21, 0.1575, 0.1375, 0.105, 0.105, 0.0325, 0.0275, 0.02, 0.02]
    res = cal_pearson(x,y)
    print(res) # 0.9171284464588204

4. 其他参考资料

如何理解皮尔逊相关系数(Pearson Correlation Coefficient)? - 微调的回答 - 知乎

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/GreatXiang888/article/details/103903538

相位差、广义互相关、相关系数求声音信号的延时值-爱代码爱编程

最近查了很多文献,也尝试了很多方法,可是还是没有找到一个绝好的方法求同一声源下相隔一定距离的两麦克风测得声音序列的延时值。 目前公认最好的求延时值的方法是广义互相关法代码如下 ay=xlsread('C:\Users\solid\Desktop\最新测试\o1.xlsx','B2:B4002'); ax=xlsread('C:\Users\solid\D

相关系数-爱代码爱编程

下面两个相关系数可以用来衡量两个变量之间的相关性大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析。 总体和样本 总体:所要考察对象的全部个体叫做总体,我们总是希望得到总体数据的一些特征样本:从总体中所抽取的一部分个体叫做总体的一个样本 1. 总体皮尔逊person相关系数 如果两组数据

距离度量-爱代码爱编程

在机器学习算法中,常根据样本间的相似度或距离来判断样本的归属或样本之间的相似性,对于不同的问题,具体哪种相似度/距离更适合取决于应用问题的特性。 1、闵可夫斯基距离:  定义1、给定样本集合X,X是n维实数向量空间  中点的集合,其中  ,样本  与样本  的闵科夫斯基距离定义为:            2、欧式距离: 当闵可夫斯基距离中的p=2

Matlab计算相关系数-爱代码爱编程

Matlab计算相关系数常使用corr函数和corrcoef函数。 1. 基本语法 1.1 corr函数基本语法 语法说明rho = corr(X)返回输入矩阵X中每对列之间的两两线性相关系数矩阵。rho = corr(X, Y)返回输入矩阵X和Y中每对列之间的两两相关系数矩阵。[rho, pval] = corr(X, Y)返回pval,一个p值矩

各种距离算法汇总-爱代码爱编程

1. 欧氏距离 最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为: 二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:         两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2

学习笔记 | 研究关联性、相关系数-爱代码爱编程

01 二次函数、二次方程式、二次不等式 二次函数 二次方程式 ax2+bx+c=0 这是二次方程式的一般式。“y=0”在坐标图上则代表x轴本身。即将y=0代入二次方程式所得到的两个解,就是二次函数的图像与x轴的交点(x坐标)。 二项不等式 02 点位图 要抓住两个变量之间的倾向特征,就必须

数学建模方法——皮尔逊相关系数及其显著性检验 (Pearson correlation coefficient)-爱代码爱编程

目录: 皮尔逊相关系数简介皮尔逊相关系数 1.1. 皮尔逊相关系数注意事项——要配合散点图皮尔逊相关系显著性检验的条件 2.1. Jarque-Bera检验 JB检验 2.2. shapior-wilk 检验(matlab实现) 2.3. Q-Q图皮尔逊相关系数显著性检验方法总结 0. 皮尔逊相关系数简介 相关系数是衡量两个数据相关关系的指标

Python玩转数据分析——相关分析-爱代码爱编程

Pearson 相关检验 在参数统计中,常用的相关分析方法是 Pearson 相关系数,公式如下: r ( X

【Python】当你需要计算1,000,000+次一维向量的相关系数, 怎么算最快?-爱代码爱编程

背景 最近需要用python计算大量的一维向量之间的相关系数, 其中:         测试数据: (1000, 100)   one of them (100,)         模板数据: (1000, 100)   one of them (100,) 那么就需要计算1,000,000次相关系数,那么在这种情况下, 计算效率就变

相关性分析【用python&pandas实现】-爱代码爱编程

相关分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个因素的的相关密切程度,相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。 判断数据之间的关系,常用的方法有两种:散点图和相关关系。 散点图 散点图:是判断数据是否具有相关关系最直观的方法。 相关系数 相关系数是反映两个变量之间线性相关程度的指标(相关系数的平方称为

脑影像分析|数据分析——单个变量或多个变量与y的皮尔逊相关,同时返回r与p值(python)-爱代码爱编程

| 图源   皮尔逊相关是计算两个变量之间线性相关关系,或者两个向量共线程度的常用指标,应返回衡量相关程度的r值,和相关显著程度的p值。我们熟知的工具包,如pandas,numpy和scipy等,只能计算单个变量x与变量y之间的相关值,或者多个变量两两相关的相关矩阵。当我们想要分别计算多个变量X与y之间的相关关系时,就需要自己手撕代码。如果觉得手撕代

google earth engine(gee) ——kendalls/pearsons/spearmans三种相关系数的对比分析-爱代码爱编程

很多时候我们要计算波段之间的相关性,这里我们就需要了解相关性分析,在GEE中存在有三种相关性分析的函数,这次我们使用了两种不同的影像,分别选择对应的ndvi波段来完成对影像波段的选择,最后我们可以通过reduceRegion函数实现对影像的统计,这里我们要明确的是,我们需要对影像进行统计分析,即使是用相关性分析也是要通过这个函数来实现的,和统计影像数量是一