我正在尝试计算图表中每个顶点的群集,其中将群集定义在顶点级别是实际形成的可能延性间链接的百分比(例如,如果顶点我有4个邻居,邻居之间有六个可能的链接)。
我刚刚开始学习有关网络的一些更正式的知识,但这似乎应该是网络"紧密度"的常见操作/度量。
但是,我找不到使用igraph
计算此功能的罐头功能。clusters
和cluster.distribution
的功能似乎都在处理我所谓的"组件",从我可以看出的这两个都只是components
和component.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