Personr,kendalltau,spearmanr 相关性系数的区别

Personr,kendalltau,spearmanr 相关性系数的区别在这之前先聊点基础的方差标准差方差和标准差都用来描述数据的离散程度 越小说明数据越集中

欢迎大家来到IT世界,在知识的湖畔探索吧!

在这之前先聊点基础的

Personr,kendalltau,spearmanr 相关性系数的区别

方差

Personr,kendalltau,spearmanr 相关性系数的区别

标准差

方差和标准差都用来描述数据的离散程度,越小说明数据越集中。

需要注意的是,标准差和方差的大小只和数据本身的距离有关,如果数值大,但是间距小,那么标准差就是小的,所以不要觉得数值大一定是标准差也会大

Personr,kendalltau,spearmanr 相关性系数的区别

data1的间距大

Personr,kendalltau,spearmanr 相关性系数的区别

数值不一致,但是间距是一致的

协方差与相关系数:

协方差是一个数字,协方差矩阵是矩阵,不要被协方差的名字吓到了

Personr,kendalltau,spearmanr 相关性系数的区别

μx是x的均值

也可以写成如下,E就是期望,可以用平均值来代替

Personr,kendalltau,spearmanr 相关性系数的区别

协方差的含义是反应两个变量的协同关系, 变化趋势是否一致,如果协方差为正数,代表是同方向变化,反之就是反方向变化。同时协方差的数值越大,说明两个变量同向程度也就越大。(有没有觉得这个和相关系数非常像)

Personr,kendalltau,spearmanr 相关性系数的区别

相关系数

相关系数就是在协方差的基础上,除以了x和y的标准差,其实就相当于对协方差做了一个线性拉伸变换,就是协方差的归一化,是无量纲的。但是相关系数的好处就是范围限定在【-1,1】之间,越接近于1说明越相关。

也有的地方不写协方差和标准差,而是用x,均值这种东西,具体过程可以参考下面的例子

Personr,kendalltau,spearmanr 相关性系数的区别

pearsonr相关系数

pearsonr相关系数的定义和传统的相关系数一模一样,python中的代码也是很简单

import numpy as np >>> from scipy import stats >>> x, y = [1, 2, 3, 4, 5, 6, 7], [10, 9, 2.5, 6, 4, 3, 2] >>> res = stats.pearsonr(x, y) >>> res PearsonRResult(statistic=-0.8428, pvalue=0.0)

欢迎大家来到IT世界,在知识的湖畔探索吧!

输入x矩阵,y矩阵,返回的结果包括相关系数和显著性P值,P值用来衡量是否具有显著相关性,这个案例中相关系数很高(虽然是负数),P小于0.05就说明显著负相关。

Spearman 秩阶相关系数

简单来说,personr相关系数是研究两个原始数据之间的相关性,Spearman 不是研究原始数据之间的相关性,而是基于两个变量的秩次来研究。说人话就是,比如研究血红蛋白含量与贫血的相关性,血红蛋白是连续的数值,比如100,99,98.5这些含量,但是贫血特征是不连续的,被分为阴性贫血,严重贫血,一般贫血这些概念。因此一个变量连续,一个变量离散,就需要将这两者都进行编秩,然后使用personr相关系数进行计算

Personr,kendalltau,spearmanr 相关性系数的区别

欢迎大家来到IT世界,在知识的湖畔探索吧!import numpy as np >>> # total collagen (mg/g dry weight of liver) >>> x = np.array([7.1, 7.1, 7.2, 8.3, 9.4, 10.5, 11.4]) >>> # free proline (μ mole/g dry weight of liver) >>> y = np.array([2.8, 2.9, 2.8, 2.6, 3.5, 4.6, 5.0]) 
>>> from scipy import stats >>> res = stats.spearmanr(x, y) >>> res.statistic 0.00001

代码和personr几乎一样,非常简单

kendalltau一致性检验

具体来说,kendalltau不应该算是相关系数了,而是所谓的一致性,也就是A增加,B也增加,这叫一致性,至于A增加了多少,B增加的是多还是少都不管他的事情了。

欢迎大家来到IT世界,在知识的湖畔探索吧!import numpy as np >>> # total collagen (mg/g dry weight of liver) >>> x = np.array([7.1, 7.1, 7.2, 8.3, 9.4, 10.5, 11.4]) >>> # free proline (μ mole/g dry weight of liver) >>> y = np.array([2.8, 2.9, 2.8, 2.6, 3.5, 4.6, 5.0]) 
>>> from scipy import stats >>> res = stats.kendalltau(x, y) >>> res.statistic 0.99999

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/81669.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信