Unlimited learning, half price | 50% off

Last chance! 50% off unlimited learning

Sale ends in


igraph (version 1.2.4.1)

modularity.igraph: Modularity of a community structure of a graph

Description

This function calculates how modular is a given division of a graph into subgraphs.

Usage

# S3 method for igraph
modularity(x, membership, weights = NULL, ...)

modularity_matrix(graph, membership, weights = NULL)

Arguments

x, graph

The input graph.

membership

Numeric vector, for each vertex it gives its community. The communities are numbered from one.

weights

If not NULL then a numeric vector giving edge weights.

Additional arguments, none currently.

Value

For modularity a numeric scalar, the modularity score of the given configuration.

For modularity_matrix a numeic square matrix, its order is the number of vertices in the graph.

Details

modularity calculates the modularity of a graph with respect to the given membership vector.

The modularity of a graph with respect to some division (or vertex types) measures how good the division is, or how separated are the different vertex types from each other. It defined as Q=12mi,j(Aijkikj2m)δ(ci,cj), here m is the number of edges, Aij is the element of the A adjacency matrix in row i and column j, ki is the degree of i, kj is the degree of j, ci is the type (or component) of i, cj that of j, the sum goes over all i and j pairs of vertices, and δ(x,y) is 1 if x=y and 0 otherwise.

If edge weights are given, then these are considered as the element of the A adjacency matrix, and ki is the sum of weights of adjacent edges for vertex i.

modularity_matrix calculates the modularity matrix. This is a dense matrix, and it is defined as the difference of the adjacency matrix and the configuration model null model matrix. In other words element Mij is given as Aijdidj/(2m), where Aij is the (possibly weighted) adjacency matrix, di is the degree of vertex i, and m is the number of edges (or the total weights in the graph, if it is weighed).

References

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

See Also

cluster_walktrap, cluster_edge_betweenness, cluster_fast_greedy, cluster_spinglass for various community detection methods.

Examples

Run this code
# NOT RUN {
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))

# }

Run the code above in your browser using DataLab