目录

1 person correlation coefficient(皮尔森相关性系数)

2 spearman correlation coefficient(斯皮尔曼相关性系数)

3 kendall correlation coefficient(肯德尔相关性系数)

3.1 定义

3.2 Kendall系数的几种计算方法及其原理

3.3 示例

3.3.1 实例一(数值变量)

3.3.2 示例二(定类变量)

4 python实现


Kendall相关系数是对于定类变量的统计,pearson是对定距变量的统计,而spearman是对定序变量的统计。

1 person correlation coefficient(皮尔森相关性系数)

公式如下:

重点关注第一个等号后面的公式。两个变量(X, Y)的皮尔森相关性系数(ρX,Y)等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。

公式的分母是变量的标准差,这就意味着计算皮尔森相关性系数时,变量的标准差不能为0(分母不能为0),也就是说你的两个变量中任何一个的值不能都是相同的。如果没有变化,用皮尔森相关系数是没办法算出这个变量与另一个变量之间是不是有相关性的。

就好比我们想研究人跑步的速度与心脏跳动的相关性,如果你无论跑多快,心跳都不变(即心跳这个变量的标准差为0),或者你心跳忽快忽慢的,却一直保持一个速度在跑(即跑步速度这个变量的标准差为0),那我们都无法通过皮尔森相关性系数的计算来判断心跳与跑步速度到底相不相关。

皮尔森相关性系数是协方差与标准差的比值,所以它对数据是有比较高的要求的:

  1. 实验数据通常假设是成对的来自于正态分布的总体。为啥通常会假设为正态分布呢?因为我们在求皮尔森相关性系数以后,通常还会用t检验之类的方法来进行皮尔森相关性系数检验,而 t检验是基于数据呈正态分布的假设的。
  2. 实验数据之间的差距不能太大,或者说皮尔森相关性系数受异常值的影响比较大。比如刚才心跳与跑步的例子,万一这个人的心脏不太好,跑到一定速度后承受不了,突发心脏病,那这时候我们会测到一个偏离正常值的心跳(过快或者过慢,甚至为0),如果我们把这个值也放进去进行相关性分析,它的存在会大大干扰计算的结果的。
  3. 两个变量的观测值是成对的,每对观测值之间相互独立。
  4. 两个变量的标准差不为0。

2 spearman correlation coefficient(斯皮尔曼相关性系数)

斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解,这种表征形式就没有了求皮尔森相关性系数时那些限制。下面来看一下它的计算公式:

计算过程就是:首先对两个变量(X, Y)的数据进行排序,然后记下排序以后的位置(X’, Y’),(X’, Y’)的值就称为秩次,秩次的差值就是上面公式中的di,n就是变量中数据的个数,最后带入公式就可求解结果。举个例子吧,假设我们实验的数据如下:

带入公式,求得斯皮尔曼相关性系数:ρs= 1-6*(1+1+1+9)/6*35=0.657

也就是说,我们不用管X和Y这两个变量具体的值到底差了多少,只需要算一下它们每个值所处的排列位置的差值,就可以求出相关性系数了。

而且,即便在变量值没有变化的情况下,也不会出现像皮尔森系数那样分母为0而无法计算的情况。另外,即使出现异常值,由于异常值的秩次通常不会有明显的变化(比如过大或者过小,那要么排第一,要么排最后),所以对斯皮尔曼相关性系数的影响也非常小!

由于斯皮尔曼相关性系数没有那些数据条件要求,适用的范围就广多了。在我们生物实验数据分析中,尤其是在分析多组学交叉的数据中说明不同组学数据之间的相关性时,使用的频率很高。

3 kendall correlation coefficient(肯德尔相关性系数)

3.1 定义

kendall秩相关系数(R)是指设有n个统计对象,每个对象有两个属性的系数。将所有统计对象按属性1取值排列,不失一般性,设此时属性2取值的排列是乱序的。设P为两个属性值排列大小关系一致的统计对象对数。

Kendall(肯德尔)系数的定义:n个同类的统计对象按特定属性排序,其他属性通常是乱序的。同序对(concordant pairs)和异序对(discordant pairs)之差与总对数(n*(n-1)/2)的比值定义为Kendall(肯德尔)系数。

1)如果两个属性排名是相同的,系数为1 ,两个属性正相关。

2)如果两个属性排名完全相反,系数为-1 ,两个属性负相关。

3)如果排名是完全独立的,系数为0。

斯皮尔曼等级相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值是成对的等级评定资料,或者是由连续变量观测资料转化得到的等级资料,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。

3.2 Kendall系数的几种计算方法及其原理

3.3 示例

3.3.1 实例一(数值变量)

假如我们设一组8人的身高和体重在那里A的人是最高的,第三重,等等:

我们看到,有一些相关的两个排名之间的相关性,可以使用肯德尔头系数,客观地衡量对应。

注意,A最高,但体重排名为 3 ,比体重排名为 4,5,6,7,8 的重,贡献5个同序对,即AB,AE,AF,AG,AH。同理,我们发现B、C、D、E、F、G、H分别贡献4、5、4、3、1、0、0个同序对,因此,同序对数

           P = 5 + 4 + 5 + 4 + 3 + 1 + 0 + 0 = 22.

异序对数 Q=28-22 (总对数减去同序对数为异序对数)

因而R=((22-6)/28)=0.57。这一结果显示出强大的排名之间的规律,符合预期。

3.3.2 示例二(定类变量)

比如10个病人做检查,检查结果数据如下:

相关性的测量是基于数据的,就是两变量都是数据才能计算其相关性。性别请先自行转换成数值比如0和1,再进行计算,正确的结果是这样的:

按身高排了个序:

一致性C:

比如病人1的性别0<病人2的性别1,且身高130<病人2的身高145,则病人1、2是一致性的1对,解释起来即病人1、2的性别和身高的排序或称之为序列是一致的。

同理,病人1与病人10、6、9、7都能结成一致性的对,这时一致性对数已经等于5.

那么同理,病人5与病人2、10、6、9、7,病人8与病人6、9、7,病人3与病人7,病人4与病人7都是一致的。

这么加起来C=15.

不一致性D:

比如病人2的性别1>病人8的性别0,而身高145<病人8的156,则病人2、8是不一致的一对。

就不继续往下同理了,反正加起来D=10.

即不是一致,也不是不一致:

比如病人1的性别0=病人5的性别0,比如病人2的性别1=病人10的性别1,比如病人6、9性别身高都相等,那么他们既不是一致的,也不是不一致的。

所以这么看其原理,跟spearman倒有点相似,都是基于对变量的顺序进行的分析。

再说N3,N2,N1。

N3==45,N=样本数目10。

N2、N1就比较复杂,它们各指向一个变量,随便吧比如N2指向性别:

N2=,s是指性别中拥有相同元素的小集合的个数,显然是2个,第1个集合是5个0,第2个集合是5个1,v就是每个集合中元素的个数,显然2个集合中元素的个数都是5,N2=20.

N1与N2一样的公式,只是它指向身高,那身高中拥有相同元素的小集合就1个,集合中就2个元素,所以N1=1.

以上,各代入,计算出结果就行。

4 python实现

import copy
import numpy as np
from scipy.stats import pearsonr
from scipy.stats import spearmanr
from scipy.stats import kendalltaudef pearson_prac(data1, data2):"""皮尔逊两关系数:return:"""# 法一res = np.corrcoef(data1, data2)print(res)# 返回的矩阵结果:# r[i][j]分别为第i组数据和第j组数据的⽪尔逊积矩相关系数:# r[0][0]计算的是第[0]组数组和第[0]组数据的相关系数, 也就是, 结果当然是1.# r[0][1]计算的是第[0]组数组和第[1]组数据的相关系数,# r[1][0]计算的是第[1]组数组和第[0]组数据的相关系数# 法二corr, p = pearsonr(data1, data2)print(corr, p, sep="\n")def spearmanr_prac(data1, data2):corr, p = spearmanr(data1, data2)print(corr, p, sep="\n")def kendall_prac(data1, data2):""""""corr, p = kendalltau(data1, data2)print(corr, p, sep="\n")if abs(corr) > 0.5 and p < 0.05:print("trend")else:print("no-trend")if __name__ == "__main__":# 两列相同的数data1 = np.random.randint(6, 10, 300)data2 = copy.deepcopy(data1)# 两列随机数# data = np.random.randint(6, 10, (300, 2))  # 生成随机数# data1 = data[:, 0]# data2 = data[:, 1]# 每列数字相同# data1 = [1] * 100# data2 = [2] * 100pearson_prac(data1, data2)spearmanr_prac(data1, data2)kendall_prac(data1, data2)

时间序列分析之趋势判断 – 标点符

统计学之三大相关性系数(pearson、spearman、kendall) - 程序员大本营

Kendall相关系数详解-案例版 - 知乎

kendall秩相关系数_百度百科

Kendall系数的几种计算方法及其原理.pdf​​​​​​​:有道云笔记

三大统计学相关系数(pearson皮尔森、spearman斯皮尔曼、kendall肯德尔)相关推荐

  1. 皮尔森、斯皮尔曼,肯德尔相关系数的理解

    pandas中的corr()方法可使用如下方法,检测特征间的关系 皮尔森相关系数(线性相关) 计算公式:两个连续变量(X,Y)的pearson相关性系数(Px,y)等于(X, Y)的协方差cov(X, ...

  2. 相关系数pearson、spearman、kendall和R语言中的cor/or.test()

    相关系数pearson.spearman.kendall和R语言中的cor/cor.test 1. 相关系数pearson.spearman.kendall 2. R语言cor函数和cor.test函 ...

  3. 皮尔逊、斯皮尔曼、肯德尔相关系数python实现

    文章目录 一.肯德尔系数 1. 定义: 2. python实现 二.肯德尔系数.皮尔逊系数.斯皮尔曼系数 2. python实现 一.肯德尔系数 1. 定义: Kendall(肯德尔)系数的定义:n个 ...

  4. 统计学三大相关系数---Pearson、Spearman、kendall / RMSE与实现(附代码)

    算法实现:这里直接调库 from scipy import stats import numpy as np val_PLCC = stats.pearsonr(y_pred, y_val)[0] v ...

  5. Pearson皮尔逊,Kendall肯德尔和Spearman斯皮尔曼三种相关分析方法的异同

    在SPSS软件相关分析中,pearson(皮尔逊),kendall(肯德尔)和spearman(斯伯曼/斯皮尔曼)三种相关分析方法有什么异同      两个连续变量间呈线性相关时,使用Pearson积 ...

  6. 三大统计学相关系数(pearson、kendall、spearman)

    一.皮尔逊相关系数 前边文章讲了很多了,这里不详细讲了,想了解的可以看这篇. 相似度计算(2)--皮尔逊相关系数 适用范围: 当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:   ...

  7. 统计基础:4.2_相关分析之Pearson、Spearman、Kendall

    常用的相关分析系数 一.Spearman Rank相关系数 1.1 Pearson相关系数的定义 1.2 python实现pearson相关系数 二.Spearman秩相关系数 2.1 Spearma ...

  8. 机器学习——统计学三大相关性系数(pearson、spearman、kendall)

    应用场景 当想要比较变量间变化趋势时,可以先做出散点图从视觉上判断是否存在相关性(趋势一致).然后再采用相关性分析从统计角度衡量. 1. pearson correlation coefficient ...

  9. 统计学三大相关性系数:pearson,spearman,kendall

    目录 person correlation coefficient(皮尔森相关性系数-r) spearman correlation coefficient(斯皮尔曼相关性系数-p) kendall ...

最新文章

  1. 如何克服实施OKR的阻力?
  2. copy一下面试题目
  3. 数据结构与算法笔记(十四)—— 二叉树
  4. smartforms打印不了可能问题
  5. 动态数据源切换的底层原理-DynamicDataSource
  6. java gridlayout 设置列宽_java 利用GridBagLayout布局时,如何设置单列列宽?
  7. Centos 6.4搭建svnadmin服务器
  8. 前端学习(2518):生命周期钩子
  9. oracle 插入含字符串
  10. 【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误
  11. HTML语法初探(一)
  12. 【渝粤教育】电大中专建筑力学 (2)作业 题库
  13. python 3.5.2 下载(带资源免费)
  14. MySQL之SQL语句实现将三个查询结果集拼接成一个表
  15. 网页或大屏展示的倒计时器
  16. FreeTextBox编辑框遇到的问题
  17. while循环:珠穆朗玛峰案例
  18. 计算机考研各科复习时间规划,2020考研科学复习时间表,985学长强力推荐!
  19. 菜鸟进阶:在Mac上安装Tomcat+Jenkins
  20. java月份简写_Java如何以(MMM)格式显示一个月份的名称?

热门文章

  1. Excel筛选后数据行数
  2. Daloradius添加汉化文件说明
  3. 中国非典型互联网创业案例(转)
  4. LeetCode #11 盛最多水的容器
  5. 分享!微信自定义分享链接的标题(描述和图片)都是怎么实现的?
  6. 电脑上的视频声音怎么提取出来?
  7. Centos7+nginx+uwsgi来部署我的Django项目
  8. 4.UWB代码讲解注释
  9. 面试官:Redis的key过期之后是立即删除吗
  10. 微信公众号后台配置菜单代码