肯德尔(Kendall)相关系数概述及计算例

news/2024/5/15 7:42:25/文章来源:https://blog.csdn.net/chenxy_bwave/article/details/126919019

目录

1. 何谓相关(correlation)?

2. 肯德尔相关 

3. 肯德尔相关的假设

4. 计算公式及代码示例

4.1 Tau-a

4.2  Tau-b       


1. 何谓相关(correlation)?

        相关是指一种双变量分析(bi-variate analysis)技术,用于分析两个(随机)变量之间相互关联的强度和方向。相关系数的值域范围为[-1,1],其中绝对值表示相关强度,正负号则表示相关的方向。相关系数为+/-1表示完全的关联。相关系数为0则表示两者完全没有任何关系。

        例1。一般来说,一个人受教育水平越高他的收入就会更高一些(当然这是从统计平均的意义上来说),因此我们可以说收入水平与受教育水平是正相关的。

        例2。一个联赛中各支球队的球员总身价越高,通常球队在联赛中的成绩(排名)就会越靠前,因此我们可以说球员总身价与联赛成绩是正相关的。

        统计学上常用的相关分析有以下几种:

  • 皮尔逊相关:Pearson correlation (parametric)
    • 参见皮尔逊相关(Pearson correlation)系数概述及其计算例
  • 斯皮尔曼相关:Spearman rank correlation (non-parametric)
    • 参见斯皮尔曼相关(Spearman correlation)系数概述及其计算例
  • 肯德尔相关:Kendall rank correlation (non-parametric)
  • Point-Biserial correlation.

        本文讨论肯德尔相关(系数)。 

2. 肯德尔相关 

        也称肯德尔秩相关(Kendall Rank Correlation),肯德尔相关系数通常也称为“Kendall’s tau coefficient”,顾名思义,肯德尔相关系数通常用希腊字母\tau来表示(斯皮尔曼相关系数则用r来表示,在scipy.stats中两个相关系数计算的函数名kendalltau()和spearmanr()非常清楚地)。 

        与斯皮尔曼秩相关相似的是,肯德尔相关也是一种秩相关系数,是基于数据对象的秩(rank)来进行两个(随机变量)之间的相关关系(强弱和方向)的评估。所分析的目标对象应该是一种有序的类别变量,比如名次、年龄段、肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)等。

        不同的是,斯皮尔曼相关是基于秩差(比如说,小明在班级中的历史成绩排名为10,英语成绩排名为4,那么在这个班级的学生的历史成绩和英语成绩的斯皮尔曼相关分析中,小明的成绩的贡献就是(10-4=6) )来进行相关关系的评估;而肯德尔相关则是基于样本数据对之间的关系来进行相关系数的强弱的分析,数据对可以分为一致对(Concordant)和分歧对(Discordant)。

        比如说变量X的两个样本值记为x_1, x_2,与之相对应的变量Y的两个样本值分别记为y_1, y_2

        一致对(Concordant)是指两个变量的这一对样本值取值的相对关系一致,可以理解为x_2-x_1y_2-y_1有相同的符号,即(x_2 - x_1)(y_2-y_1) \geq 0

        分歧对是指这一对样本值取值的相对关系不一致,即(x_2 - x_1)(y_2-y_1) < 0

        当数据样本比较小,而且存在并列排位(tied ranks,比如说小明的历史成绩和英语成绩排名都是第8名)时,肯德尔相关系数是比斯皮尔曼相关系数更合适的一个相关性衡量指标。

        适合于采用肯德尔相关系数分析的一些问题例如下所示:

  1. 学生的考试成绩分级 (A, B, C…) 和他平均每天学习所投入的时间分级 (<2 hours, 2–4 hours, 5–7 hours…)时间的相关性
  2. 顾客满意度 (比如说:非常满意,比较满意,一般。。。) 以及递送时间 (< 30 Minutes, 30 minutes — 1 Hour, 1–2 Hours etc)
  3. 。。。

3. 肯德尔相关的假设

        在适用肯德尔相关分析前首先要检查数据是否满足以下基本假设,满足了这些基本假设才能确保你所得到的相关分析结果是有效的。

  1. 变量数据是有序的( ordinal) 或者是连续的continuous). 有序尺度(Ordinal scales )的数据通常用于用数值的方式来衡量非数值的概念,比如说,满意度,幸福度等等,还有像成绩排名啊、比赛名次啊之类的。而连续尺度的数据就勿需解释了,常见的温度啊、体重啊、收入啊等等都(或严格、或近似)算是连续尺度的数据
  2. 两个变量的数据之间应该遵循单调关系( monotonic relationship)。 简而言之就是,其中一个变量的值增大,另一个也增大,这个称为正相关;或者一个变量的值增大,另一个就变小,这个称为负相关。当然,这个单调关系是一个统计意义上的,或者说一种趋势上的,而非严格的单调。如下如所示。左图和中图都呈现一种近似单调的关系,而右图则不是,因为右图的左半部分和右半部分的趋势是相反的。

4. 计算公式及代码示例

        肯德尔系数有两个计算公式,一个称为Tau-c,另一个称为Tau-b。两者的区别是Tau-b可以处理有相同值的情况,即并列排位(tied ranks)。下面分别说明这两个公式。

4.1 Tau-a

        \tau_a=\frac{c-d}{\frac{1}{2}n(n-1)}

        其中,n表示样本个数。如上所述,肯德尔相关系数是基于数据对来进行分析的,n个样本每两两组队所得到的组队数就是\frac{1}{2}n(n-1),Tau-a的分母即来自于此。分子中c和d则分别代表一致对和分歧对的个数。

        计算例如下所示:

# Example4 -- Kendall correlation coefficient
from scipy.stats.stats import kendalltaudat1 = np.array([3,5,1,9,7,2,8,4,6])
dat2 = np.array([5,3,2,6,8,1,7,9,4])
fig,ax = plt.subplots()
ax.scatter(dat1,dat2)
kendalltau(dat1,dat2)
KendalltauResult(correlation=0.3888888888888889, pvalue=0.18018077601410934)

        当然也可以写一段自己的代码来实现相关系数的计算,这样能够更加确切地知道到底是如何计算的,代码示例如下:

c = 0
d = 0
for i in range(len(dat1)):for j in range(i+1,len(dat1)):if (dat1[i]-dat1[j])*(dat2[i]-dat2[j])>0:c = c + 1else:d = d + 1
k_tau = (c - d) * 2 / len(dat1)/(len(dat1)-1)print('k_tau = {0}'.format(k_tau))    

         运行以上代码同样可以得到0.3888...的结果,只不过没有给出p-value分析结果(这个稍微麻烦一些,此处暂且略过)。

4.2  Tau-b       

        在以上Tau-a的计算中假定原始数据中不存在并列排位。当原始数据中存在并列排位时,则用以下公式能够给出更准确的分析结果。

                        \tau_b = \frac{c-d}{\sqrt{(c+d+t_x)(c+d+t_y)}}

        其中c和d则分别代表一致对和分歧对的个数,t_xt_y则分别表示数据X中的并列排位个数,和数据Y中的并列排位个数。注意,如果是同时发生在X和Y中并列排位,则既不计入t_x,也不计入t_y。 

# Tau_b
from scipy.stats.stats import kendalltaudat1 = np.array([3,5,1,6,7,2,8,8,4])
dat2 = np.array([5,3,2,6,8,1,7,8,4])
#dat1 = np.array([3,5,1,9,7,2,8,4,6])
#dat2 = np.array([5,3,2,6,8,1,7,9,4])
c = 0
d = 0
t_x = 0
t_y = 0
for i in range(len(dat1)):for j in range(i+1,len(dat1)):if (dat1[i]-dat1[j])*(dat2[i]-dat2[j])>0:c = c + 1elif (dat1[i]-dat1[j])*(dat2[i]-dat2[j])<0:d = d + 1else:if (dat1[i]-dat1[j])==0 and (dat2[i]-dat2[j])!=0:t_x = t_x + 1elif (dat1[i]-dat1[j])!=0 and (dat2[i]-dat2[j])==0:t_y = t_y + 1tau_b = (c - d) / np.sqrt((c+d+t_x)*(c+d+t_y))print('tau_b = {0}'.format(tau_b))            
print('kendalltau(dat1,dat2) =  {0}'.format(kendalltau(dat1,dat2)))
tau_b = 0.6857142857142857
kendalltau(dat1,dat2) =  KendalltauResult(correlation=0.6857142857142857, pvalue=0.011424737055271894)

        注意,这个数据用上面的tao_a的计算方式会得到不同的结果,有兴趣的小伙伴可以自行验证。

 

Kendall Rank Correlation Explained. | by Joseph Magiya | Towards Data Science

scipy.stats.kendalltau — SciPy v1.9.1 Manual 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_10275.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不知道数字化转型有什么意义?实现数字化转型价值都有哪些路径

近些年来&#xff0c;随着人工智能、云计算、大数据、物联网、区块链等新一代前沿技术的普及应用&#xff0c;社会的方方面面都有了信息化、数字化的身影&#xff0c;并通过相关技术、理念、应用创造了从未体验过的数字化社会&#xff0c;对整个社会形式进行了一次深层次的转型…

JVM原理及优化_垃圾回收器

文章目录JVM原理及调优_垃圾回收器什么是垃圾收集器&#xff1f;垃圾回收器详解SerialParNewParallel ScavengeSerial OldParallnel oldCMSG1JVM原理及调优_垃圾回收器 什么是垃圾收集器&#xff1f; 垃圾收集器是垃圾回收算法&#xff08;引用计数法、标记清除法、标记整理法…

PLM是什么?为什么要上PLM?有什么好处?

PLM是什么&#xff1f;或许早在五年前还有这个疑问&#xff0c;但如今已成为行业竞争的必需品。 PLM即对产品从创建、使用到最终报废&#xff0c;是一种对全生命周期产品数据信息进行管理的理念&#xff1b;是一种应用于在单一地点的企业内部、分散在多个地点的企业内部&#…

SpringBoot JavaBean对象拷贝 orika

前言: 日常开发中&#xff0c;经常会遇到将一个对象bean值复制到另一个bean,一般通过set方法一个一个属性写上去&#xff0c;比较麻烦。当然也有spring、apache的属性拷贝工具,这里介绍一下orika orika 是什么? Orika 是一个 Java Bean 映射框架&#xff0c;它可以递归地将数…

Oracle 11g第一次启动SQL Developer所出现的问题

Oracle 11g第一次启动SQL Developer提示缺少快捷方式 1)问题复刻 当第一次启动SQL Developer的时候提示我 :“Windows 正在查找SQLDEVELOPER.BAT。如果想亲自查找文件,请单击"浏览” 。这个时候如果没有点击浏览,过一会他会自动跳到图二,此时就算点击了修复也无济于事…

zabbix服务器搭建

文章目录zabbix1. 环境准备2. zabbix服务器安装3. 监控本机4. 通过zabbix-agent监控远程机器5. zabbix用户与用户群组6. 监控项与应用集7. 为监控项创建图形8. 自定义监控项9. 为自定义监控项创建图形10zabbix zabbix官网 1. 环境准备 主机ipzabbix_server192.168.44.10agen…

什么是自动采矿卡车autonomous mining trucks

自动采矿卡车 (AMT) 是无人驾驶的矿山重型车辆&#xff0c;可以感知环境并在矿山运输路面上导航&#xff0c;无需任何人工干预。AMT 降低了设备与辅助设备或配备的手动车辆 (EMV) 接触的风险。 矿业在世界经济中发挥着重要作用。随着发达国家追求零伤亡&#xff0c;进入技术工人…

Jenkins Pipeline项目实战

一、项目流程 Jenkins从git拉取指定tag代码 Jenkins构建代码、镜像以及推送镜像到镜像库 Jenkins通过Publish Over SSH通知远程服务器拉取镜像、远程服务器通过镜像启动容器二、实现流程 1、从代码仓中拉取Jenkinsfile文件 2、从git拉取指定tag代码 配置Git参数: 剩下的部分需…

Spring学习的第二天

1. Spring 管理第三方资源导入Druid 坐标<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.16</version> </dependency> <dependency>配置数据源对象作为Spr…

【牛客刷题】每日一练—ArrayList的实例强化

✨hello&#xff0c;进来的小伙伴们&#xff0c;你们好呐&#xff01;✨ &#x1f362;&#x1f362;系列专栏&#xff1a;【牛客刷题】 &#x1f32f;&#x1f32f;作者简介&#xff1a;一名大三在读的科班Java编程小白&#xff0c;星夜漫长&#xff0c;你我同行! &#x1f37…

383.赎金信

题目来源&#xff1a; 力扣https://leetcode.cn/problems/ransom-note/题目简介&#xff1a; 判断字符串a中的字母能不能构成字符串b&#xff0c;能的话就返回true&#xff0c;不能就返回false&#xff0c;字符串a里的字母每个都只能用一次&#xff0c;不能重复使用 思路&am…

Endpoint Central的IT资产管理(ITAM)

什么是 IT 资产管理 (ITAM) IT 资产管理 (ITAM) 是识别、发现、采购、管理、监控和处置企业网络中存在的所有公司拥有的数据、设备和软件元素的过程。ITAM 工具可确保集中查看网络中存在的所有资产以及软件和硬件详细信息。拥有完整的 ITAM 流程可以使您能够就收购新资产做出有…

笨方法学Python

前言 这本书指导你在Python中通过练习和记忆等技巧慢慢建设和建立技能,然后应用它们解决越来越困难的问题。在这本书的最后&#xff0c;你需要拥有必要的工具开始进行更多复杂程序的学习。我喜欢告诉大家&#xff0c;我的书带给你们“编程黑带”。意思是说你知道的基础知识足够…

『华强买瓜』奇袭好莱坞!Jupyter也能创建可交互仪表板啦!超全面的英语论文写作套路;神经辐射场NeRF工具包;前沿论文 | ShowMeAI资讯日报

&#x1f440;日报合辑 | &#x1f4c6;电子月刊 | &#x1f514;公众号下载资料 | &#x1f369;韩信子 &#x1f4e2; 好莱坞全明星版『华强买瓜』&#xff1a;你这 AI 保熟吗&#xff1f; https://weibo.com/2395607675/M61L994kN 一起来看看 AI 最近又搞出了什么好玩意儿…

gradle缓存路径

gradle缓存路径网上有很多配置教程,但是实际使用过程中发现不是很准确,验证下缓存配置 1.个人认为最优雅 在gradle的安装目录&#xff0c;编辑bin文件夹下的gradle文件&#xff0c;然后找到如下语句: # Add default JVM options here. You can also use JAVA_OPTS and GRADLE…

eplan里面导入3D图

1.第一步,打开RICAD-3D软件 2.点击RICAD-3D 3.进入页名后,①首先点击RITTAL机柜系统-②SMall enclosours-③选中双击compact enclosures-AE 4.双击后出现这个页面,在开放式列表中型号选择1050.500的, 5.点击STEP 3D后面的向下箭头,点击3D系统中性格式,点击STEP3d 6.这边…

初识SpringBoot

文章目录一、SpringBoot特点优点缺点二、时代背景1、微服务2、分布式分布式的困难分布式解决3、云原生上云的困难三、快速上手1、导入依赖2、创建架构编写业务MainApplication作为主程序应用controller作为业务层3、修改端口号一、SpringBoot特点 优点 创建独立Spring应用内嵌…

WoShop多商户直播短视频APP小程序商城全开源无加密商城源码

WoShop多商户直播短视频APP小程序商城全开源无加密商城源码基于现场直播购物模式&#xff0c;用户可以“边看边买”现场直播商城平台&#xff0c;全终端支持&#xff0c;统一管理后台&#xff0c;传播更强&#xff0c;管理更方便&#xff0c;支持私有化配置&#xff0c;提供系统…

牛视系统源码定制开发come here,抖音矩阵系统。

Seo是Search Engine Optimization的缩写&#xff0c;译成英文的意思是‘浏览器强化’&#xff0c;可能有很多爸爸妈妈就会问了&#xff1a;抖音什么时候沦为了浏览器&#xff1f;他不是一种SNS影视娱乐应用软件吗&#xff1f;假如您还这么想&#xff0c;而且就行不通了&#xf…

5分钟,带你看完24岁60W年薪架构师的简历,上面竟然写着精通JVM

前言 近期&#xff0c;看了一份24岁60W年薪架构师简历&#xff0c;上面写着他的求职意向所掌握的技能....... 所掌握的技能大部分写的都是精通&#xff01;我不禁想问&#xff0c;大佬都这么强吗&#xff1f;你敢在简历上把所有的技能都写精通吗&#xff1f; 简历 下面来带…