相关性分析 -pearson spearman kendall相关系数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相关性分析 -pearson spearman kendall相关系数相关的知识,希望对你有一定的参考价值。

先说独立与相关的关系:对于两个随机变量,独立一定不相关,不相关不一定独立。有这么一种直观的解释(不一定非常准确):独立代表两个随机变量之间没有任何关系,而相关仅仅是指二者之间没有线性关系,所以不难推出以上结论。

  衡量随机变量相关性的方法主要有三种:pearson相关系数,spearman相关系数,kendall相关系数:

 

 

1.连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用spearman相关系数也可以,
  就是效率没有pearson相关系数高。

2.上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。

3.两个定序测量数据之间也用spearman相关系数,不能用pearson相关系数。

 

 

  1. pearson相关系数,亦即皮尔逊相关系数

  pearson相关系数用来衡量两个随机变量之间的相关性,计算公式为:

  

  技术分享  公式-1

  其中cov(X,Y)也叫做X,Y的协方差,σXX的标准差,μXX的期望E(X).

  因为σX=E[(X-E(X))2]=E(X2)-E(X)2,并且

  技术分享  公式-2

    所以公式-1可以改写为:

技术分享  公式-3

  R语言中求两个随机变量pearson相关系数的函数:   

技术分享
1 //赋予a,b向量值
2 a<-c(1,2,3) 
3 b<-c(11,12,14)
4 
5 //计算pearson相关系数
6 cor.test(a,b,method="pearson")
7 cor=0.9819805060619659
技术分享

 

  2. spearman相关系数,亦即秩相关系数

  spearman和kendall都是等级相关系数,亦即其值与两个相关变量的具体值无关,而仅仅与其值之间的大小关系有关。

  spearman相关系数,亦即秩相关系数,根据随机变量的等级而不是其原始值衡量相关性的一种方法。

  spearman相关系数的计算可以由计算pearson系数的方法,只需要把原随机变量中的原始数据替换成其在随机变量中的等级顺序即可:

  (1,10,100,101)替换成(1,2,3,4)

  (21,10,15,13)替换成(4,1,3,2)

  然后求替换后的两个随机变量的pearson相关系数即可.

  R语言中求两个随机变量的spearman相关系数的函数:

技术分享
 1 //赋予a,b向量值
 2 a<-c(1,10,100,101)
 3 b<-c(21,10,15,13)
 4 
 5 //计算spearman相关系数
 6 cor.test(a,b,method="spearman")
 7 rho=-0.4
 8 
 9 //用替换后的向量的pearson相关系数进行验证
10 e<-c(1,2,3,4)
11 f<-c(4,1,3,2)
12 cor.test(e,f,method="pearson")
13 cor=-0.4
技术分享

  3. kendall相关系数,亦即和谐系数

  kendall相关系数又称作和谐系数,也是一种等级相关系数,其计算方法如下:

  对于X,Y的两对观察值Xi,Yi和Xj,Yj,如果Xi<Yi并且Xj<Yj,或者Xi>Yi并且Xj>Yj,则称这两对观察值是和谐的,否则就是不和谐的.

  kendall相关系数的计算公式如下:

  技术分享  公式-4

  亦即,所有观察值对中(总共有0.5*n*(n-1)对),和谐的观察值对减去不和谐的观察值对的数量,除以总的观察值对数.

  R语言中计算kendall相关系数的函数:

技术分享
1 //赋予a,b向量值
2 a<-c(1,2,3)
3 b<-c(1,3,2)
4 
5 //计算kendall相关系数
6 cor.test(a,b,method="kendall")
7 tau=0.3333333333
技术分享

以上是关于相关性分析 -pearson spearman kendall相关系数的主要内容,如果未能解决你的问题,请参考以下文章

python scipy spearman相关性

斯皮尔曼spearman相关系数

Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现

R语言之相关性分析

R语言相关性分析

4.3. 相关分析概述与简单相关系数计算——python实战