node1 node2 weightこのネットワークデータを作成するRスクリプト例です。
2 5 0.03
1 3 0.04
1 4 0.08
3 5 0.20
5 6 0.15
4 7 0.25
edge.list <- matrix( c(2, 5, 1, 3, 1, 4, 3, 5, 5, 6, 4, 7), nrow=6, ncol=2, byrow=T)グラフクラスタリングをします。
weight <- c(0.03, 0.04, 0.08, 0.20, 0.15, 0.25)
library(igraph)
g <- graph_from_edgelist(edge.list, directed=FALSE)
E(g)$weight <- weight
plot(g)
cluster_optimal(g)7つのノードは,2つのグループにクラスタリングされることが分かりました。
> cluster_optimal(g)
IGRAPH clustering optimal, groups: 2, mod: 0.46
+ groups:
$`1`
[1] 1 4 7
$`2`
[1] 2 3 5 6
node groupお手数をおかけいたします。
1 1
2 2
3 2
4 1
5 2
6 2
7 1
No.22457 Re: R igraphパッケージのクラスタ計算結果の取り出し 【青木繁伸】 2017/10/21(Sat) 19:27
この分析法については知りませんので,正しい解答か分かりませんが,以下のようにすればお望みの結果になるようですが?> a = cluster_optimal(g)
> group = a$membership
> node = seq_along(group)
> d = data.frame(node, group)
> d
node group
1 1 1
2 2 2
3 3 2
4 4 1
5 5 2
6 6 2
7 7 1
No.22458 Re: R igraphパッケージのクラスタ計算結果の取り出し 【明石】 2017/10/21(Sat) 20:50
青木先生,
いつもお世話になり,ありがとうございます,明石と申します。
ありがたいご教示をいただきまして,誠にありがとうございます。
助かりました。> a = cluster_optimal(g)このmembershipを使うのですね。
> str(a)
List of 2
$ modularity: int [1:3] 1 4 7
$ membership: int [1:4] 2 3 5 6
- attr(*, "class")= chr "communities"
> a$membership
[1] 1 2 2 1 2 2 1
よい勉強をさせていただきました。
ありがとうございました。
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る