相关性分析 -pearson spearman kendall相关系数
先说独立与相关的关系:对于两个随机变量,独立一定不相关,不相关不一定独立。有这么一种直观的解释(不一定非常准确):独立代表两个随机变量之间没有任何关系,而相关仅仅是指二者之间没有线性关系,所以不难推出以上结论。
衡量随机变量相关性的方法主要有三种:pearson相关系数,spearman相关系数,kendall相关系数:
1. pearson相关系数,亦即皮尔逊相关系数
pearson相关系数用来衡量两个随机变量之间的相关性,计算公式为:
公式-1
其中cov(X,Y)也叫做X,Y的协方差,σX是X的标准差,μX是X的期望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
参考文献:
1. pearson,spearman,kendall三种相关分析方法异同
2. Wikipedia: Pearson product-moment correlation coefficient