R-适当的方法来计算顶点级群集



我正在尝试计算图表中每个顶点的群集,其中将群集定义在顶点级别是实际形成的可能延性间链接的百分比(例如,如果顶点我有4个邻居,邻居之间有六个可能的链接)。

我刚刚开始学习有关网络的一些更正式的知识,但这似乎应该是网络"紧密度"的常见操作/度量。

但是,我找不到使用igraph计算此功能的罐头功能。clusterscluster.distribution的功能似乎都在处理我所谓的"组件",从我可以看出的这两个都只是componentscomponent.distribution的别名。

例如,对于g = make_graph("Bull"),顶点的聚类为:

v |  c
-------
1 |  1
2 | 1/3
3 | 1/3
4 | 0 [by convention]
5 | 0 [by convention]

我可以用以下

获得此功能
library(igraph)
g = make_graph("Bull")
sapply(adjacent_vertices(g, seq_len(vcount(g))), 
       function(x) {
         neigh = as.vector(x)
         if (length(neigh) <= 1L) return(0)
         sum(g[neigh, neigh])/
           (length(neigh)^2 - length(neigh))})
# [1] 1.0000000 0.3333333 0.3333333 0.0000000 0.0000000

,但这似乎是冗长的,可能效率低下。

有其他规范的方法可以使用igraph

聚类系数捕获了这一点。在igraph中,呼叫为transitivity。使用"local"进行type参数。您还可以指定分离株是否需要0 S或NA s:

library(igraph)
g = make_graph("Bull")
transitivity(g, type="local")
# [1] 1.0000000 0.3333333 0.3333333       NaN       NaN
transitivity(g, type="local", isolates = "zero")
# [1] 1.0000000 0.3333333 0.3333333 0.0000000 0.0000000

最新更新