计算顶点级聚类的正确方法

时间:2016-12-10 21:43:11

标签: r igraph

我试图计算我的图中每个顶点的聚类,其中聚类在顶点级定义为实际形成的可能的邻居间链接的百分比(例如,如果顶点i有4个邻居,邻居之间有六种可能的联系。)

我刚刚开始学习一些关于网络的更正式的事情,但似乎这应该是一个非常常见的操作/措施"紧张"一个网络。

但是,我无法找到使用selectAll("restaurant", new GetDataCallback(){ @Override public void onGetMapData(MapData mapData) { // Parse your data } @Override public void onError() { } }); 计算此功能的预制函数。 igraphclusters函数似乎都在处理我所称的"组件",而我可以告诉他们这些只是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 吗?

是否有更规范的方法?

1 个答案:

答案 0 :(得分:2)

clustering coefficient抓住了这一点。在igraph中,通话为transitivity。使用"local"作为type参数。您还可以指定是否需要0NA用于隔离区:

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