2011-04-01 28 views
5

La ecuación para Network Modularity figura en su página de wikipedia (y en libros de buena reputación). Quiero verlo funcionando en algún código. He encontrado que esto es posible usando el modularity library para igraph usado con R (The R Foundation for Statistical Computing).Cálculos de modularidad de red en R

Quiero ver el ejemplo a continuación (o uno similar) utilizado en el código para calcular la modularidad. La biblioteca da un ejemplo, pero realmente no es lo que quiero.

Tengamos un conjunto de vértices V = {1, 2, 3, 4, 5} y bordes E = {(1,5), (2,3), (2,4), (2, 5) (3,5)} que forman un gráfico no dirigido.

Divida estos vértices en dos comunidades: c1 = {2,3} y c2 = {1,4,5}. Es la modularidad de estas dos comunidades lo que se debe calcular.

Respuesta

8
library(igraph) 
g <- graph(c(1,5,2,3,2,4,2,5,3,5)) 
membership <- c(1,2,2,1,1) 
modularity(g, membership) 

alguna explicación aquí:

  1. El vector uso al crear el gráfico es la lista de aristas del grafo. (En las versiones de igraph anteriores a 0.6, tuvimos que restar 1 de los números porque igraph usa índices de vértices basados ​​en cero en ese momento, pero no más).

  2. El elemento -ésimo i del vector de miembros membership da el índice de la comunidad a la que pertenece vértice i.

+0

Gracias Tamás. ¿Cómo se llegó a 'membresía <- c (1,2,2,1,1)' exactamente? Probablemente no lo esté leyendo correctamente, pero para el primer borde (1,5), ¿ha dicho comunidad 1 pero los vértices 1 y 5 están en comunidad 2? – ale

+0

Sí, lo mezclé; en mi vector, los vértices 1, 4 y 5 pertenecen a la comunidad 1 y los vértices 2 y 3 pertenecen a la comunidad 2. –

+0

Tenga cuidado, el vector de membresía debe estar basado en cero (de acuerdo con la documentación) – Pomber