本文介绍R中常用于相关性分析的四种函数 ##### cor R内置函数,可以直接用于计算两两个向量之间的相关系数(可选方法pearson、spearman、kendall),只能得到相关系数: ##### cor.test R内置函数,可以直接用于计算两个向量之间的相关系数(可选方法pearson、spearman、kendall),可得到相关系数($estimate)、置信区间、P值($p.value)等信息: 如果想做多个因子两两间的相关性,则需要更优的方法去处理分析。 以psych包中的sat.act数据为例: ##### rcorr Hmisc包,输入数值型矩阵,计算两两列之间的相关性(可选方法pearson、spearman),适用于多比较: install.packages('Hmisc') library(Hmisc) result = corr(sat.act, type='pearson') 通过$r和$P可以分别得到相关系数和P值的邻接矩阵。 ##### corr.test psych包,输入矩阵或数据框,计算两两列之间的相关性(可选方法pearson、spearman、kendall), 适用于多比较,可对P值进行校正: install.packages('psych') library(psych) result = corr.test(sat.act, method='pearson', adjust='BH') 如果参数里设置了P值矫正方法,则矫正的P值可通过$p得到: 注意,此时对称的两个值是不同的!而且设置不同的矫正方法所矫正的均是上三角的P值。也即下三角的P值为未矫正的P值。 # 如何取上三角 使用reshape2包中的melt函数: result$p[lower.tri(result$p)] = NA res = melt(result$p, na.rm=T) 综上,对于两个元素之间的相关性计算可使用cor.test,而对于多元素两两间相关性的计算corr.test更优。 ### 关于邻接矩阵的整理 可整理成如下格式: 每行是元素i与元素j之间的相关系数Cor及P值,可考虑删除上示两种数据。 脚本可参考: result$p[lower.tri(result$p)] = NA result$r[lower.tri(result$r)] = NA res = cbind(melt(result$r, na.rm=T), melt(result$p, na.rm=T)[,3]) colnames(res) = c('i', 'j', 'Cor', 'Padj') res = res[res$i != res$j,]
|
|