此函数计算将图划分为子图的模块化程度。
用法
# S3 method for class 'igraph'
modularity(x, membership, weights = NULL, resolution = 1, directed = TRUE, ...)
modularity_matrix(
graph,
membership = lifecycle::deprecated(),
weights = NULL,
resolution = 1,
directed = TRUE
)
详细信息
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_i\) 是 \(i\) 的度,\(k_j\) 是 \(j\) 的度,\(c_i\) 是 \(i\) 的类型(或组件),\(c_j\) 是 \(j\) 的类型(或组件),总和遍历所有 \(i\) 和 \(j\) 顶点对,\(\delta(x,y)\) 如果 \(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\) 是边的数量(或者如果是加权图,则为总权重)。
参考文献
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_louvain()
和 cluster_leiden()
用于各种社区检测方法。
社区检测 as_membership()
, cluster_edge_betweenness()
, cluster_fast_greedy()
, cluster_fluid_communities()
, cluster_infomap()
, cluster_label_prop()
, cluster_leading_eigen()
, cluster_leiden()
, cluster_louvain()
, cluster_optimal()
, cluster_spinglass()
, cluster_walktrap()
, compare()
, groups()
, make_clusters()
, membership()
, plot_dendrogram()
, split_join_distance()
, voronoi_cells()
作者
Gabor Csardi csardi.gabor@gmail.com
示例
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)
#> [1] 0.5757576
modularity(g, membership(wtc))
#> [1] 0.5757576