# modularity.igraph

##### Modularity of a community structure of a graph

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

- Keywords
- graphs

##### Usage

```
## S3 method for class '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.

##### 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=\frac{1}{2m} \sum_{i,j} (A_{ij}-\frac{k_ik_j}{2m})\delta(c_i,c_j),$$ here $m$ is the number of edges, $A_{ij}$ is the element of the $A$ adjacency matrix in row $i$ and column $j$, $k_i$ is the degree of $i$, $k_j$ is the degree of $j$, $c_i$ is the type (or component) of $i$, $c_j$ that of $j$, the sum goes over all $i$ and $j$ pairs of vertices, and $\delta(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 $k_i$ 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
$M_{ij}$ is given as $A_{ij}-d_i
d_j/(2m)$, where $A_{ij}$ is the (possibly
weighted) adjacency matrix, $d_i$ is the degree of vertex $i$,
and $m$ is the number of edges (or the total weights in the graph, if it
is weighed).

##### 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.

##### 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

```
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))
```

*Documentation reproduced from package igraph, version 1.0.0, License: GPL (>= 2)*