本文首发于“生信补给站”公众号 数据挖掘|R-相关性分析及检验
相关系数可以用来描述定量变量之间的关系。结果的正负号分别表明正相关或负相关,数值的大小则表示相关关系的强弱程度。
R可以计算多种相关系数,今天主要介绍常见的三种:Pearson相关系数、Spearman相关系数 和 Kendall相关系数。这三种相关系数均可以通过R语言的cor函数计算,method函数指定即可。
一 相关性分析
1.1 Pearson相关系数
度量两个连续变量之间的线性相关程度,需要两个变量的标准差都不为零。此外皮尔逊相关系数适用条件为:
1)变量之间为线性关系,且均为连续数据。
2)变量总体呈正态分布,或接近正态。
x<-mtcars[,c("disp","hp","drat")] y<-mtcars[,c("disp","hp","drat")] cor(x,y,method = "pearson") disp hp drat disp 1.0000000 0.7909486 -0.7102139 hp 0.7909486 1.0000000 -0.4487591 drat -0.7102139 -0.4487591 1.0000000
1.2 Spearman等级相关系数
衡量非线性关系变量间的相关系数,是一种非参数的统计方法。变量是成对的等级评定,或者是由连续变量观测资料转化得到的等级资料。
x<-mtcars[,c("cyl","gear","carb")] y<-mtcars[,c("cyl","gear","carb")] cor(x,y,method = "spearman") cyl gear carb cyl 1.0000000 -0.5643105 0.580068 gear -0.5643105 1.0000000 0.114887 carb 0.5800680 0.1148870 1.000000
Spearman等级相关系数是根据每个值所处的排列位置的差值,求相关性系数。可用于计算实验数据分析中的不同组学数据之间的相关性。
1.3 Kendall秩相关系数
也是一种非参数的等级相关度量,类似Spearman相关系数。对象是分类变量。可以无序,性别(男、女)、血型(A、B、O、AB);可以有序,评分(优、中、差)等。
X<- c(3,1,2,2,1,3) Y<- c(1,2,3,2,1,1) cor(X,Y,method="kendall") [1] -0.2611165
假设X Y 分别为两个裁判对选手的评级---3为优,2为中,1为差,结果可以看出两位裁判对选手们的看法呈相反趋势,但相反程度不大。
二 相关性显著性检验
2.1 单次相关关系检验
使用cor.test()函数,cor.test(x,y,alternative=,method=)。
其中的x和y为要检验相关性的变量,alternative指定进行双侧检验或单侧检验(取值"two.side"、"less"或"greater"),method指定计算的相关类型("pearson"、 "kendall"或"spearman")。
cor.test(mtcars[,"disp"],mtcars[,"hp"])
2.2 计算相关矩阵并进行显著性检验
psych包中 corr.test()函数。corr.test(x, y = NULL, use = "pairwise",method="pearson",adjust="holm",alpha=.05,ci=TRUE,minlength=5)
corr.test(mtcars[,1:10], adjust = "none", use = "complete")
可得到矩阵数据集中两两变量之间得相关系数以及显著性检验得P值。
OK, 注意要根据变量的实际情况选择合适的相关系数以及显著性检验的计算方式。
之前介绍了绘图系列|R-corrplot相关图进行相关系数的可视化,后面也会再介绍一些其他的相关系数可视化的函数。