打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
数据挖掘专题 | 用R怎么做相关性分析?


本文介绍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,]


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【R分享|实战】科白君教你相关性分析及其绘图
数据挖掘|R-相关性分析及检验
五大相关系数简介及R计算:Pearson、Spearman、Kendall、Polychoric、P...
R之相关性的显著性检验
相关性分析返回相关性系数的同时返回p值
psych igraph:共表达网络构建
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服