如何在R中计算有向图聚类系数,得到与Cytoscape、Gephi一致的结果
R计算有向图聚类系数的实现方法
问题根源
你之前调用的transitivity(g,type = "global")未指定有向计算模式,默认按无向图逻辑统计三元组闭合比例,和Cytoscape、Gephi默认采用的有向聚类系数规则不匹配,因此出现结果差异。
解决方案
igraph包的transitivity()本身已支持有向图计算,匹配常用软件的计算规则只需要补充对应参数即可:
全局有向聚类系数计算
对应Gephi、Cytoscape默认输出的全局聚类系数:
# g为你定义的有向图对象 transitivity(g, type = "global", mode = "directed", isolates = "zero")
参数说明:
mode = "directed":核心参数,指定按有向图规则计算三元组,采用Fagiolo提出的有向聚类系数定义,和主流网络分析软件规则对齐isolates = "zero":指定孤立节点的聚类系数计为0,和Cytoscape、Gephi的默认孤立节点处理逻辑一致
节点层面局部有向聚类系数计算
如果需要获取每个节点的局部有向聚类系数,调用方式如下:
local_directed_clust <- transitivity(g, type = "local", mode = "directed", isolates = "zero")
结果校验注意事项
- 计算前可通过
is.directed(g)验证你的图对象为有向图,仅返回TRUE时会按有向规则计算 - 如果结果仍有差异,优先核对R中图对象的边列表、边方向、自环/重复边处理规则,和导入Cytoscape、Gephi的网络文件是否完全一致,排除网络本身的差异导致的结果偏差
内容的提问来源于stack exchange,提问作者rinrin
相关产品推荐
相关产品推荐

