現実世界に実在する巨大なネットワークを解析するときは、個々の構成要素よりもネットワーク全体としての特徴が注目されます。その特徴とは主として、
- 平均距離
- クラスター係数
- 次数分布
の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()
#最短距離を求める。
#第2引数no
mode = "out"は有向グラフを分析するときに必要である。
> shortest.paths(g, mode = "out")
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0 1 1 1 1 2 2 2 2
[2,] 1 0 1 1 1 1 2 2 2
[3,] 1 1 0 1 2 2 1 2 2
[4,] 1 1 1 0 2 2 2 1 1
[5,] 1 1 2 2 0 2 3 3 3
[6,] 2 1 2 2 2 0 3 3 3
[7,] 2 2 1 2 3 3 0 3 3
[8,] 2 2 2 1 3 3 3 0 2
[9,] 2 2 2 1 3 3 3 2 0
#平均距離の計算
average.path.length(g)
[1] 1.888889
【参考文献】
金明哲『Rで学ぶデータサイエンス 8 ネットワーク分析』2009 共立出版 序文、121 - 131pp