本文介绍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,]
联系客服