计算顶点级聚类的正确方法
Proper approach for calculating vertex-level clustering
我正在尝试计算图中每个顶点的聚类,其中聚类在顶点级别定义为实际形成的可能的邻居间链接的百分比(例如,如果顶点 i 有 4 个邻居,邻居之间有六个可能的链接)。
我刚开始学习一些关于网络的更正式的东西,但看起来这应该是网络的 operation/measure of "tightness" 中的一个相当常见的东西。
但是,我找不到用 igraph
计算这个的固定函数。 clusters
和 cluster.distribution
函数似乎都在处理我所说的 "components",据我所知,它们都是 components
和 [=16] 的简单别名=], 分别.
例如,对于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
是否有更规范的方法来做到这一点?
clustering coefficient 捕获了这一点。在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
我正在尝试计算图中每个顶点的聚类,其中聚类在顶点级别定义为实际形成的可能的邻居间链接的百分比(例如,如果顶点 i 有 4 个邻居,邻居之间有六个可能的链接)。
我刚开始学习一些关于网络的更正式的东西,但看起来这应该是网络的 operation/measure of "tightness" 中的一个相当常见的东西。
但是,我找不到用 igraph
计算这个的固定函数。 clusters
和 cluster.distribution
函数似乎都在处理我所说的 "components",据我所知,它们都是 components
和 [=16] 的简单别名=], 分别.
例如,对于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
是否有更规范的方法来做到这一点?
clustering coefficient 捕获了这一点。在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