R igraph 手册页

如果您从 R 中使用 igraph,请使用此选项

modularity.igraph {igraph}R 文档

图的社群结构的模块度

描述

此函数计算将图划分为子图的给定社群结构的模块化程度。

用法

## S3 method for class 'igraph'
modularity(x, membership, weights = NULL, resolution = 1, directed = TRUE, ...)

modularity_matrix(
  graph,
  membership,
  weights = NULL,
  resolution = 1,
  directed = TRUE
)

参数

x, graph

输入图。

membership

数值向量,每个顶点一个值,社群结构的成员向量。

weights

如果不是 NULL,则是一个数值向量,表示边的权重。

resolution

分辨率参数。必须大于或等于 0。将其设置为 1 以使用模块度的经典定义。

有向

是否使用模块度的有向或无向版本。对于无向图,将被忽略。

...

其他参数,目前没有。

详细信息

modularity 计算关于给定 membership 向量的图的模块度。

关于某些划分(或顶点类型)的图的模块度衡量了划分的好坏,或者不同顶点类型之间的分离程度。它被定义为

Q=\frac{1}{2m} \sum_{i,j} (A_{ij}-\gamma\frac{k_i k_j}{2m})\delta(c_i,c_j),

这里 m 是边的数量,A_{ij}A 邻接矩阵中第 i 行和第 j 列的元素,k_ii 的度,k_jj 的度,c_ii 的类型(或组件),c_jj 的类型,总和遍布所有 ij 顶点对,如果 x=y,则 \delta(x,y) 为 1,否则为 0。对于有向图,它定义为

Q = \frac{1}{m} \sum_{i,j} (A_{ij}-\gamma \frac{k_i^{out} k_j^{in}}{m})\delta(c_i,c_j).

分辨率参数 \gamma 允许加权随机零模型,这在找到具有高模块度的分区时可能很有用。当找到具有高模块度的分区时,最大化具有较高分辨率参数值的模块度通常会导致更多、更小的集群。较低的值通常会导致更少、更大的集群。当设置 \gamma 为 1 时,将检索模块度的原始定义。

如果给出了边权重,则将它们视为 A 邻接矩阵的元素,并且 k_i 是顶点 i 的相邻边的权重之和。

modularity_matrix 计算模块度矩阵。这是一个密集矩阵,定义为邻接矩阵和配置模型零模型矩阵之间的差。换句话说,元素 M_{ij} 给定为 A_{ij}-d_i d_j/(2m),其中 A_{ij} 是(可能加权的)邻接矩阵,d_i 是顶点 i 的度,m 是边的数量(或者如果图是加权的,则为总权重)。

对于 modularity,一个数值标量,给定配置的模块度分数。

对于 modularity_matrix,一个数值方阵,它的阶数是图中顶点的数量。

作者

Gabor Csardi csardi.gabor@gmail.com

参考

Clauset, A.; Newman, M. E. J. & Moore, C. Finding community structure in very large networks, Physical Review E 2004, 70, 066111

参见

cluster_walktrap, cluster_edge_betweenness, cluster_fast_greedy, cluster_spinglass, cluster_louvaincluster_leiden 用于各种社群检测方法。

示例


g <- make_full_graph(5) %du% make_full_graph(5) %du% make_full_graph(5)
g <- add_edges(g, c(1,6, 1,11, 6, 11))
wtc <- cluster_walktrap(g)
modularity(wtc)
modularity(g, membership(wtc))


[包 igraph 版本 1.3.5 索引]