現実世界に実在する巨大なネットワークを解析するときは、個々の構成要素よりもネットワーク全体としての特徴が注目されます。その特徴とは主として、
- 平均距離
- クラスター係数
- 次数分布
の3つが挙げられまs。
今回はこれらのうち、次数分布の計算を行いたいと思います。
次数分布とはグラフに含まれる頂点の次数がどのように分布しているかを示すものです。
それではRを用いた具体的な計算です。次数分布を計算してヒストグラムで表示させます。
#igraphをロード
library(igraph)
####隣接行列を作成して、そこからグラフを作る####
A <- matrix(c(
0,1,1,1,1,0,0,0,0,
1,0,1,1,1,1,0,0,0,
1,1,0,1,0,0,1,0,0,
1,1,1,0,0,0,0,1,1,
1,1,0,0,0,0,0,0,0,
0,1,0,0,0,0,0,0,0,
0,0,1,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,
0,0,0,1,0,0,0,0,0),
nrow = 9)
#隣接行列よりグラフを作成
g <- graph.adjacency(A)
#グラフを描写
png("graph.png")
plot(g, main = "The graph for cluster coefficient calculation")
dev.off()
#次数分布を計算
dd <- degree.distribution(g)
#片対数グラフを描写
png("degree.png")
plot(dd[-1],log = "x", xlab = "degree", ylab = "frequency", main="Degree distribution")
dev.off()
【参考文献】
金明哲『Rで学ぶデータサイエンス 8 ネットワーク分析』2009 共立出版 序文、121 - 131pp