利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值

        利用spearman相关性分析是构建微生物共现网络常用的方法,需要计算每一对OTU的相关系数r和显著性p值,并对r和p值进行筛选来构建微生物网络,例如r>0.7和p<0.001。r和p阈值的确定往往具有一定的主观性,MENAP网站则使用RMT的方法来确定r的阈值,避免阈值确定的主观性问题。但MNAP使用的是网站模式,没有提供相应的R代码,这自然制约了我们对微生物数据的分析。不过我们可以利用RMThresold包实现RMT对相关性矩阵的阈值筛选,代码如下:

library(RMThreshold)
library(igraph)
# 取相关性矩阵R值
# otu_niche行为sample,列为OTUs
occor.r = abs(cor(otu_niche,method = "spearman")) 
diag(occor.r) <- 0
rm.matrix.validation(occor.r,unfold.method = "spline")
#Get threshold by RMT
res <- rm.get.threshold(occor.r,discard.zeros = TRUE,
                        unfold.method = "spline")
thre <- (res$sse.chosen + res$p.ks.chosen)/2
cleaned.matrix <- rm.denoise.mat(occor.r, threshold = thre) #denoise adjacency matrix by threshold
cleaned.matrix <- rm.discard.zeros(cleaned.matrix) #delete all-zero rows
igraph = graph_from_adjacency_matrix(cleaned.matrix ,mode="undirected",weighted=TRUE,diag=FALSE)
write_graph(igraph, "~/Desktop/mygraph.graphml","graphml")

RMT进行阈值筛选的原理可参考:Molecular ecological network analyseshttps://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-13-113RMThresold包的使用可以参考:RMThresholdhttp://matstat.org/content_en/RMT/RMThreshold_Intro.pdf

 测试数据和代码可参考:

R语言向量化计算spearman相关系数及RMT确定阈值-专业指导文档类资源-CSDN下载https://download.csdn.net/download/weixin_43367441/82724288

注意:最近有粉丝反映程序运行中出现 “选择的点不在2.5英寸内” 的警告,可能RMThreshold这个包没有跟上Rstudio的变化,使用旧版本Rstudio才运行成功,RStudio-1.3.1093。如果您在使用过程中出现问题可评论或者私信我,看到后会第一时间回复哈。

评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长1994

您的鼓励有助于我创作更多高质量

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值