Расчет модульности сети в R - PullRequest
7 голосов
/ 02 апреля 2011

Уравнение для Модульность сети приведено на странице википедии (и в авторитетных книгах).Я хочу видеть, как это работает в некотором коде.Я обнаружил, что это возможно, используя библиотеку модульности для igraph , используемую с R ( Фонд статистических вычислений R ).чтобы увидеть приведенный ниже пример (или аналогичный), используемый в коде для расчета модульности.Библиотека дает пример, но это не совсем то, что я хочу.

Пусть у нас будет набор вершин V = {1, 2, 3, 4, 5} и ребер E = {(1,5), (2,3), (2,4), (2,5) (3,5)}, которые образуют неориентированный граф.

Разделите эти вершины на два сообщества: c1 = {2,3} и c2 = {1,4,5}.Именно модульность этих двух сообществ должна быть вычислена.

1 Ответ

9 голосов
/ 02 апреля 2011
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)

Некоторое объяснение здесь:

  1. Вектор, который я использую при создании графа, является списком ребер графа. (В версиях igraph старше 0.6 мы должны были вычесть 1 из чисел, потому что в то время igraph использует индексы вершин, начинающиеся с нуля, но не больше).

  2. i -й элемент вектора членства membership дает индекс сообщества, которому принадлежит вершина i .

...