[R][ネットワーク分析] ネットワーク構造の諸指標
ネットワーク分析 (Rで学ぶデータサイエンス 8)の第3章の内容
密度(density)
グラフにおいて張ることの出来る全てのエッジの数に対する、実際のエッジの数の比率
例
- データの入力
library(igraph) A <- matrix(c( 0,1,1,1,1, 1,0,0,1,1, 1,0,0,0,0, 1,1,0,0,0, 1,1,0,0,0),nrow=5) B <- matrix(c( 0,1,1,1,1, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0),nrow=5,byrow=T) g1 <- graph.adjacency(A, mode = "undirected") g2 <- graph.adjacency(B)
- Aのプロット
plot(g1)
- Bのプロット
plot(g2)
- 密度の計算
> graph.density(g1) [1] 0.6 > graph.density(g2) [1] 0.3
推移性(transitivity)
ネットワークにおいて、ノードiとノードjの間、及びノードjとノードkの間に関係が合って、ノードiとノードkの間も関係がある場合、関係が推移的(transitive)であるという
例えば、「自分の友達の友達が、自分の友達でもある」というように、関係が三角形を作っている場合がこれにあたる
推移性(transitivity)とは、推移的な関係が成り立っている程度を比率で表したもの
- データの入力
A <- matrix(c( 0,1,1,1,1,1,0,0, 1,0,1,0,0,0,1,0, 1,1,0,0,0,0,0,0, 1,0,0,0,1,0,0,1, 1,0,0,1,0,1,0,0, 1,0,0,0,1,0,0,0, 0,1,0,0,0,0,0,0, 0,0,0,1,0,0,0,0),nrow=8) g <- graph.adjacency(A, mode="undirected")
- Aのプロット
plot(g)
- 推移性の計算
> transitivity(g) [1] 0.4285714
相互性(reciprocity)
有向グラフ全体において、「両想い」がどらくらいの割合を占めているか
- データの入力
A <- matrix(c( 0,1,0,0,1, 1,0,1,0,0, 0,1,0,1,0, 1,0,1,0,0, 0,0,0,1,0),nrow=5,byrow=T) g <- graph.adjacency(A)
- Aのプロット
plot(g)
- 相互性の計算
> reciprocity(g) [1] 0.5
分析例
データは、第8章のハイテク企業の管理職21人の友人ネットワーク
データの入力
> (friend <- read.csv("friend.csv",header=F)) V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 4 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 5 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 6 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 11 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 12 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 13 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 15 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 16 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1 18 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 1 1 1 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 20 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 21 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 > g <- graph.adjacency(friend)
推移性
> transitivity(g) [1] 0.4714946
- 「自分の友達の友達が、自分の友達(片想い含む)」という関係が半分くらい
相互性
> reciprocity(g) [1] 0.2911392
- 互いに友達と思っている関係は、3割程度しかないという悲しい現実





