1) ネットワークのモジュール性を見つけ、2) 各コミュニティ内のノードのアイデンティティを見つけたいです。
これがモジュール性を得る方法だと思います:
g <- graph.full(5) %du% graph.full(5) %du% graph.full(5)
g <- add.edges(g, c(1,6, 1,11, 6, 11))
ebc <- edge.betweenness.community(g)
sizes(ebc)
#Community sizes
#1 2 3
#5 5 5
modularity(g,membership(ebc))
#[1] 0.5757576
しかし、ガボールによるこのリンクで、私はこのコードを取得します:
memberships <- list()
G <- graph.full(5) %du% graph.full(5) %du% graph.full(5)
G <- add.edges(G, c(1,6, 1,11, 6, 11))
### edge.betweenness.community
ebc <- edge.betweenness.community(G)
mods <- sapply(0:ecount(G), function(i) {
g2 <- delete.edges(G, ebc$removed.edges[seq(length=i)])
cl <- clusters(g2)$membership
modularity(G, cl)
})
g2 <- delete.edges(G, ebc$removed.edges[1:(which.max(mods)-1)])
memberships$`Edge betweenness` <- clusters(g2)$membership
これは私と同じことをしているようです.andは、接続エッジを削除してから各コンポーネントのノードのIDを取得することにより、モジュールを個別のコンポーネントに分割することだdelete.edges
と思います.clusters
いくつか質問がありますが:
@Gabor Csardil のコードで、呼び出しが私の例のように
modularity
使用clusters(G)$membership
されないのはなぜですか?ebc
違いはなんですか?(実際のモジュール性を過大評価すると思っていたでしょうか?)community.to.membership
mods
コードは、私が理解できないこのエラーを返します。これが、調査して何が起こっているのかをもっと見ることができない理由のg2
一部cl
です。
delete.edges(G, ebc$removed.edges[seq(length = i)]) のエラー: iterators.c:1809 で: イテレーターを作成できません、無効なエッジ ID、無効な頂点 ID