r语言如何计算t分布临界值_如何评估不同网络间整体拓扑特征的差异程度

4ff2c3781ff2cb9dfbe12d9c8e30a951.gif 如何评估不同网络间整体拓扑特征的差异程度 cb8056bb168f740047244432ffcef548.gif 提到在不同网络之间比较拓扑特征的差异,例如给定网络之间是否在凝聚性特征上存在较大区别,通常做法是什么?  

网络全局特征指标的直接数值比较

首先最容易想到的方法就是找一些合适的能够直接用于表征网络图凝聚性特征的指标,通过计算给定网络的这些拓扑特征,就可以直接通过数值大小进行比较评估。这类的指标有很多,常见的如节点平均度、图密度、聚类系数等,它们的含义和计算方法可参考前文“网络拓扑结构-网络图的凝聚性特征”。

举个例子来说明吧,这类的文献还是非常多的。例如,Zhang等(2018)构建并比较了中国大豆农田中土壤和大豆根际微生物的共发生网络,包含全局图谱以及分别针对北方和南方土壤的局部图谱。平均路径长度、图密度、聚类系数等指标作为衡量标准,评估北方和南方土壤、土壤和大豆根际微生物网络之间拓扑特征的差异程度,以反映微生物互作的频率、复杂性以及环境异质性等。此外该统计表中还借助了随机网络,辅助评估所观测的微生物网络的拓扑特征是否是有意义的(由非随机的共发生模式驱动)。

df67b377f8b615519e157c9f452624d7.png

常见的网络图凝聚性特征

如上所述,关于常见的可用于表征网络图凝聚性特征的指标的描述,及R语言计算方法等,可参考前文“网络拓扑结构-网络图的凝聚性特征”。

附带的随机网络的有关内容,可参考前文“随机网络及其在评估网络凝聚性特征中的应用”。

R语言计算示例

为了方便理解,接下来在R中模拟这种过程。

示例数据和R代码的百度盘链接(提取码,sous):

https://pan.baidu.com/s/1gIx9cLCcQCGu6sWo0v6GBw

网盘附件“five_network”里有5个网络文件,通过R依次读取后统计它们的有关拓扑特征指标(该示例简单起见,仅以聚类系数为例展示,其它类型可参考上述链接),以便于整体比较;同时通过广义随机图模拟具有相同节点和边数量的随机网络并计算类似的指标,以评估“给定网络是非随机驱动”的信息,最后整合为一张表输出。

#5 个网络的批处理,计算拓扑特征以及对应的随机网络获得
library(igraph)    #igraph 包用于网络统计
adj_file result  
for (file in adj_file) {
    #输入数据示例,网络邻接矩阵
    #这是一些微生物 OTU 水平的互作网络,数值 1 代表 OTU 之间有互作关系,0 代表无关联,即非加权的无向网络
    adj     
    #转为 igraph 网络邻接列表,并删除孤立节点(删除度为 0 的节点)
    g     g     
    #这里简单选择了选择一些网络拓扑特征做统计描述,例如
    node_num     edge_num     V(g)$degree     average_degree     clustering_coefficient     
    #通过广义随机图评估“给定网络是否是非随机驱动的”
    #首先定义图的集合
    degree_dist     degree_num     degree_count     names(degree_count)     degs     
    #1000 个随机网络及拓扑特征计算
    clustering_coefficient_rand     set.seed(123)
    for (i in 1:1000) {
        g_rand         clustering_coefficient_rand     }
    result         mean(clustering_coefficient_rand), sd(clustering_coefficient_rand)))
}
#输出表格
result rownames(result) colnames(result)     'clustering_coefficient_rand_average', 'clustering_coefficient_rand_sd')
result$clustering_coefficient_random     round(result$clustering_coefficient_rand_sd, 3), sep = '±')
result result
write.table(result, 'five_network.stat.txt', sep = '\t', col.names = NA, quote = FALSE)

42c74bb44e37252a902054b77b79e578.png

这个简单的示例结果中,包含了统计的网络中节点和边数量、平均度、聚类系数,以及1000个随机网络的聚类系数的均值±标准差。

通过数值比较,就能直接得到哪些网络具有更高的凝聚性。随机网络的作用额外提供了这些网络的“非随机性组建规则”信息,注意它不是用作两个观测网络间差异显著的度量。

Kolmogorov-Smirnov test比较各节点特征的整体分布

上述过程也是文献中经常看到的描述网络间拓扑特征差异的方法,数值大小比较也非常的直观,但有可能会伴随这样的缺点:如果两个数值比较接近,还有没有理由说明两个网络在凝聚性上存在区别呢?

此外,通过单一指标的数值比较,还会忽略掉网络中很多局部细节信息,例如节点的属性等。如果也期望将某些节点特征考虑在内,暂且不考虑节点的细节属性(例如微生物网络中节点属于哪些微生物,它们的功能是什么等,这些太复杂了,不是本篇讨论的内容),只是对整体分布作个概括(例如不同网络中节点的整体连通状态是否相似),有什么快捷方法吗?

来看另一种思路,这个是前不久偶然看到的,可以通过计算网络中各个节点的拓扑特征(不再是网络全局特征),通过比较节点特征的分布状态,评估网络全局的凝聚性。Banerjee等(2019)调查了三种不同耕作方式(传统耕作、免耕种植和有机耕作)的农田中土壤真菌群落共发生网络的复杂性。作者使用了一种称为Kolmogorov-Smirnov test(简称KS检验)的方法,评估了特定于农业的土壤真菌网络之间节点属性(包括节点度、介数中心性和接近中心性等指标)在整体分布模式上是否存在显著差异,借此说明有机耕作更有利于组建复杂和稳健的土壤真菌群落。

1f7524778bddb5081f44dd0ea57cb1c0.png

什么是Kolmogorov-Smirnov test

其实本篇原计划是想单独对KS检验作一篇科普来着,思索再三后感觉孤零零地讲述它可能比较费解,还是和一个实际应用放在一起比较好,所以就合并在本篇“网络拓扑特征差异比较”里面了。

那么,首先需要了解下什么是KS检验。

简单概括,KS检验是用于确定一组观测值分布和理论分布是否存在偏倚,或者比较两组观测值的分布是否存在显著差异的一种方法(Chakravarti et al, 1967)。KS检验零假设给定的观测值符合理论分布,或者两组数据分布一致,如果拒绝,则有理由认为二者在数值分布上显著不同。

不难看出,KS检验本质上就是一种用于比较两组数值差异的假设检验方法,但其具体关注的不是均值或中位数的差异,而是重在描述所有数值的整体分布。其优点是对数据实际分布无特殊要求(例如,t检验比较两组数值差异时要求必须满足正态分布,KS检验则无需),可以是任意的,因此从技术上讲KS检验是非参数的假设检验方法,适用范围也更广。但是其缺点是较为保守,如果数据满足正态性等特殊分布,t检验等参数方法仍是首选。此外,KS检验的侧重点既然是比较分布,就必须要求观测对象的总量不能太少,为了结果的稳健性,也常借助自助法(bootstrap)模拟更广泛的理论分布范围。

R语言计算示例

接下来继续在R中模拟,比较上文网盘附件中给定示例的5个网络的节点拓扑特征分布,借此评估这些网络的整体凝聚性是否存在较大差别。

考虑到就上述所展示的文献而言,作者已经在附件中提供了计算过程R代码,因此不妨参考作者的计算过程稍加修改,以便加深理解。在作者提供的原始代码中,对于每个网络而言,计算了包括节点度、介数中心性、接近中心性、连通度在内的多种节点拓扑特征(有关它们的定义可参考前文“网络拓扑结构-节点和边特征”),并通过自助法(bootstrap)重抽样模拟了这些节点特征的更偏于理论的分布,进而使用KS检验评估不同网络节点特征理论分布间是否存在显著的差别,统计值最终表征了不同网络整体拓扑特征的差异。

首先定义统计函数,并计算给定网络的节点拓扑特征,同样包括节点度、介数中心性、接近中心性、连通度,以及通过bootstrap重抽样估计节点特征的理论分布。

#定义计算函数,参考自“Agricultural intensification reduces microbial network complexity and the abundance of keystone taxa in roots”附件代码
#式中,g 是 igraph 的网络邻接列表数据结构
library(igraph)
node_char
#计算节点拓扑特征
all_degree all_betweenness all_closeness all_transitivity all_transitivity[is.na(all_transitivity)] names(all_transitivity)
#Bootstrapping,10000 次自举重抽样,估计节点特征的理论分布
set.seed(123)
boot_degree boot_betweenness boot_closeness boot_transitivity
#合并数据框
node_characterstics node_characterstics
}
#5 个网络的批处理
#将 5 个网络的结果数据框整合为列表数据结构便于存储
adj_file network_node
for (file in adj_file) {
#输入数据示例,网络邻接矩阵
#这是一些微生物 OTU 水平的互作网络,数值 1 代表 OTU 之间有互作关系,0 代表无关联,即非加权的无向网络
adj
#转为 igraph 网络邻接列表,并删除孤立节点(删除度为 0 的节点)
g g
#调用上述计算函数,计算网络中节点拓扑特征并估计理论分布
network_node[gsub('.csv', '', file)] }
#所有结果统一存储在一个列表中,包含了 10000 次 bootstrap 重抽样模拟后的数值
#例如查看网络“a_net”
head(network_node[['a_net']])

65a605c016e47fc161c5f57a9f3bb29d.png

#再例如初步观测所有网络的节点度分布状态
par(mfrow = c(2, 5))
for (network in names(network_node)) {
hist(network_node[[network]][ ,'boot_degree'], xlab = 'degree', ylab = 'count', main = network)
}
for (network in names(network_node)) {
degree_dist degree_num degree_count plot(log(degree_num), log(degree_count), xlab = 'log-degree', ylab = 'log-count', main = network)
}

89c2996783633d390518e1d7fff08e9e.png

大家可以再模仿尝试作图观测其它类型的节点特征分布等,不再多说了。

总之可以初步通过肉眼观察分布状态,就以节点度分布为例,这5个网络还是区别挺明显的。接下来为了证实观测的猜想,就可以通过KS检验比较它们的分布,获得一个统计量作为衡量差异的标准。

#两两网络之间,节点拓扑特征分布的 KS 检验
result num
for (i in 1:(num-1)) {
for (j in (i+1):num) {
#节点度的 KS 检验
node_degree_i node_degree_j ks_degree
#介数中心性的 KS 检验
node_betweenness_i node_betweenness_j ks_betweenness
#接近中心性的 KS 检验
node_closeness_i node_closeness_j ks_closeness
#连通度的 KS 检验
node_transitivity_i node_transitivity_j ks_transitivity
#合并统计值,均以显著性 p 值作为标准
result 'ks_degree' = ks_degree$p.value, 'ks_betweenness' = ks_betweenness$p.value,
'ks_closeness' = ks_closeness$p.value, 'ks_transitivity' = ks_transitivity$p.value))
}
}
result result$ks_degree result$ks_betweenness result$ks_closeness result$ks_transitivity result #这里所示的数值都是 p 值,默认 p<0.05 为显著
#输出表格
write.table(result, 'five_network.node_KStest.txt', sep = '\t', row.names = FALSE, quote = FALSE)

16817be14f1b8fb3aec49b48caf52379.png

如此就获得了不同网络之间,在整体拓扑特征上是否存在显著差别,这种差别是通过所有节点特征的分布模式的差异所推断的。

参考文献

Banerjee S, Walder F, Buchi L, et al. Agricultural intensification reduces microbial network complexity and the abundance of keystone taxa in roots. The ISME Journal, 2019, 13(7): 1722-1736. Chakravarti I M, Laha R G, Roy J. Handbook of Methods of Applied Statistics. Technometrics, 1967, Volume I, John Wiley and Sons, pp. 392-394. Zhang B, Zhang J, Liu Y, et al. Co-occurrence patterns of soybean rhizosphere microbiome at a continental scale. Soil Biology & Biochemistry, 2018: 178-186. 4ff2c3781ff2cb9dfbe12d9c8e30a951.gif 友情链接 cb8056bb168f740047244432ffcef548.gif

网络分析

网络基础简介 

网络拓扑结构:节点和边特征

                     网络图凝聚性特征

                     幂律分布

                     网络模块内连通度(Zi)和模块间连通度(Pi)

                     复杂网络抗毁性的谱测度和自然连通度

关联网络推断:简单相关系数网络

                      加权基因共表达网络分析(WGCNA)

                      最大信息系数(MIC)的非线性关联网络

                      局部相似性分析(LSA)的时滞效应关联网络

                       CoNet网络                       分子生态网络分析( MENA)

                      SPIEC-EASI网络

                      SparCC网络

随机网络: 经典随机图(ER随机图)    广义随机图

               小世界模型

               优先连接模型及BA随机网络

               随机网络评估网络凝聚性特征

网络模型: 潜变量网络模型(特征模型) 驱动节点识别:  NetShift 网络可视化: G ephi      Cytoscape

08089e0b9560c400d7309a2e82d698cf.gif

7fa4f7a02cae2c04756cba1a0f859344.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值