2011-04-01 15 views
5

Network Modularity denklemi wikipedia sayfasında (ve saygın kitaplarda) verilmiştir. Bazı kodlarda çalıştığını görmek istiyorum. Bunu R (The R Foundation for Statistical Computing) ile kullanılan igraph için modularity library kullanarak mümkün olduğunu bulduk.Ağ Modülerlik Hesaplamaları R

Modülerliği hesaplamak için kodda kullanılan aşağıdaki örneği (veya benzerini) görmek istiyorum. Kütüphane örnek veriyor ama gerçekten istediğim şey değil.

bize köşe bir dizi ver V = {1, 2, 3, 4, 5} ve kenarları e = {(1,5), (2,3), (2,4), (2, 5) (3,5)} bu, doğrulanmamış bir grafik oluşturur.

Böl iki topluluklara bu noktalar: c1 = {2,3} ve c2 = {1,4,5}. Bu iki toplumun hesaplanması gereken modülerliktir. Burada

cevap

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) 

Bazı açıklama:

  1. grafik oluştururken kullandığım vektör grafiğinin kenar listesidir. (Igraph, 0.6'dan büyük sürümlerde, sayıları 1'den çıkarmak zorundaydık, çünkü igraph, o anda sıfır tabanlı vertex endekslerini kullanıyor, ancak artık değil).

  2. üyelik vektörü membership ait i-inci elemanı i ait olduğu tepe topluluğun indeksini verir.

+0

Tamás teşekkür ederiz. Üyelik <- c (1,2,2,1,1) ile tam olarak nasıl başardınız? Muhtemelen doğru bir şekilde okumadım ama ilk kenar için (1,5), topluluk 1 dedin ama 1 ve 5 köşeleri topluluk 2'de mi? – ale

+0

Evet, bunu karıştırdım; benim vektörümde 1, 4 ve 5 köşeleri 1 topluluğuna aittir ve 2 ve 3 noktaları 2 ve topluluğa aittir. –

+0

Dikkatli olun, üyelik vektörü sıfır temelli olmalıdır (belgelere göre) – Pomber

İlgili konular