统计学之三大相关性系数(pearson、spearman、kendall)matlab实现

统计学之三⼤相关性系数(pearson、spearman、
kendall)matlab实现
(转⾃ 克⾥克学苑,修改成MATLAB语⾔实现)
三个相关性系数(pearson, spearman, kendall)反应的都是两个变量之间变化趋势的⽅向以及程度,其值范围为-1到+1,0表⽰两个变量不相关,正值表⽰正相关,负值表⽰负相关,值越⼤表⽰相关性越强。
1. person correlation coefficient(⽪尔森相关性系数)
公式如下:
公式的分母是变量的标准差,这就意味着计算⽪尔森相关性系数时,变量的标准差不能为0(分母不能为0),也就是说你的两个变量中任何⼀个的值不能都是相同的。如果没有变化,⽤⽪尔森相关系数是没办法算出这个变量与另⼀个变量之间是不是有相关性的。
就好⽐我们想研究⼈跑步的速度与⼼脏跳动的相关性,如果你⽆论跑多快,⼼跳都不变(即⼼跳这个变量的标准差为0),或者你⼼跳忽快忽慢的,却⼀直保持⼀个速度在跑(即跑步速度这个变量的标准差为0),那我们都⽆法通过⽪尔森相关性系数的计算来判断⼼跳与跑步速度到底相不相关。
我们再拔⾼⼀点,来看个更具普遍性的例⼦吧,其中的计算我们使⽤⼴受欢迎的R语⾔来运⾏,如果你⼿边也装了R语⾔,可以⼀起来做做看:
假设你现在做了个⽣物学实验,喜得以下两个变量:
c1=[1;2;3;4;5;6];
c2=[0.3;0.9;2.7;2;3.5;5];
r1=corr(c1,c2,'type','pearson')
p = 0.9481
相关系数为:0.9481
其值在0.9以上,说明⼆者⾮常相关,⽐如验证了蛋⽩A表达量的变化,与蛋⽩B表达量的变化关系很⼤!拿到这种有统计学论证的结果你可能很开⼼。
然⽽,由于实验操作不慎或者处理数据不⼩⼼,得到了这样⼀个变量X2(1,1,1,1,1,1),那么计算X2与Y1之间的⽪尔森相关性系数会发⽣什么呢?
江苏出现1例登革热c1=[1;2;3;4;5;6];
c2=[1;1;1;1;1;1];
r1=corr(c1,c2,'type','pearson')
r1 = NaN
杨宗胜
matlab运⾏会得到⼀个缺失值(NA),并且代码给你提醒:标准差为零(⾃⼰试着计算下X2的标准差是多少),这时候明⽩上⾯说的意思了吧!也就是说,X2⾥⾯的取值根本没有任何波动,那它与Y1的相关性也就没法⽤这种⽅法来计算了。
盐城市第一小学教育集团
此外,从上⾯的公式我们知道,⽪尔森相关性系数是协⽅差与标准差的⽐值,所以它对数据是有⽐较⾼的要求的:
第⼀, 实验数据通常假设是成对的来⾃于正态分布的总体。为啥通常会假设为正态分布呢?因为我们在求⽪尔森相关性系数以后,通常还会⽤t检验之类的⽅法来进⾏⽪尔森相关性系数检验,⽽ t检验是基于数据呈正态分布的假设的。
2. spearman correlation coefficient(斯⽪尔曼相关性系数)
斯⽪尔曼相关性系数,通常也叫斯⽪尔曼秩相关系数。“秩”,可以理解成就是⼀种顺序或者排序,那么它就是根据原始数据的排序位置进⾏求解,这种表征形式就没有了求⽪尔森相关性系数时那些限制。下⾯来看⼀下它的计算公式:
也就是说,我们不⽤管X和Y这两个变量具体的值到底差了多少,只需要算⼀下它们每个值所处的排列位置的差值,就可以求出相关性系数了。这下理解起来是不是容易多了!还是⽤上⾯的数据,下⾯写下代码实现:
私营企业主不能入党
c3=[11;490;14;43;30;3];
c4=[2;75;3;44;7;42];
r2= corr(c3, c4, 'type' , 'Spearman')
温峤娶妇
r2 = 0.6571
⽽且,即便在变量值没有变化的情况下,也不会出现像⽪尔森系数那样分母为0⽽⽆法计算的情况。另外,即使出现异常值,由于异常值的秩次通常不会有明显的变化(⽐如过⼤或者过⼩,那要么排第⼀,要么排最后),所以对斯⽪尔曼相关性系数的影响也⾮常⼩!
由于斯⽪尔曼相关性系数没有那些数据条件要求,适⽤的范围就⼴多了。在我们⽣物实验数据分析中,尤其是在分析多组学交叉的数据中说明不同组学数据之间的相关性时,使⽤的频率很⾼。
3. kendall correlation coefficient(肯德尔相关性系数)
肯德尔相关性系数,⼜称肯德尔秩相关系数,它也是⼀种秩相关系数,不过它所计算的对象是分类变量。
分类变量可以理解成有类别的变量,可以分为
⽆序的,⽐如性别(男、⼥)、⾎型(A、B、O、AB);
有序的,⽐如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。
慧莲功通常需要求相关性系数的都是有序分类变量。
举个例⼦。⽐如评委对选⼿的评分(优、中、差等),我们想看两个(或者多个)评委对⼏位选⼿的评价标准是否⼀致;或者医院的尿糖化验报告,想检验各个医院对尿糖的化验结果是否⼀致,这时候就可以使⽤肯德尔相关性系数进⾏衡量。
由于数据情况不同,求得肯德尔相关性系数的计算公式不⼀样,⼀般有3种计算公式,在这⾥就不繁琐地列出计算公式了,直接给出R语⾔的计算函数:
还是⽤corr函数求,这时候把method这个参数设成“kendall”,这时我们假设⽼师对选⼿的评价等级---3表⽰优,2表⽰中,1表⽰差:
c5=[3;1;2;2;1;3];
c6=[1;2;3;2;1;1];
r3= corr(c5, c6, 'type' , 'kendall')
r3 = -0.2611
这时候就可以理解为两位⽼师对选⼿们的看法是呈相反趋势的,不过这种相反的程度不很⼤。

本文发布于:2024-09-20 20:42:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/485525.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:变量   数据   系数   没有   速度   标准差   计算   相关
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议