スポンサードリンク
前回の続きをしていこうと思います。グラフ理論というより厳密にはネットワーク分析ですね笑。まあそういう細かいことはほっておいて笑。
用いるデータは前回と変わりません。
ネットワーク構造の諸批評
前回説明した密度以外にどんなものがあるか述べていきます。
推移性
わかりやすくいうと無向グラフの場合、グラフ全体のうち閉ループになっている割合です。
私が参考にしている本では「自分の友達の友達は自分の友達である割合」と言っています。人的ネットワークでいうと三角関係の割合というところでしょうか。
下のような隣接行列で表されるグラフであれば、3-2-1とか、1-4-5-の関係の割合です。
具体的な計算方法
- 隣接行列Aを2乗する。→理由は不明だが、算出された各成分は長さ2の経路の数に等しくなる。
- 1で求めた行列A2の成分の和を求める。→長さ2の経路の数
- 2で求めたもののうち、両端の頂点に直接関係のあるものは、A2とAの成分積の成分の総和となる
よって推移性は以下の式で定義される。
\begin{eqnarray}
R = \frac{\sum A_{ij}}{\sum A2_{ij}}
\end{eqnarray}
Rでの計算方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
library(igraph) 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) (A.g<-graph.adjacency(A)) V(A.g)$name<-c("1","2","3","4","5","6","7","8") plot(A.g,label=V(A.g)$name,layout=layout.circle) A2 <- A %*% A diag(A2) <- 0 sum(A2*A)/sum(A2) |
12から14行目はグラフ表示する部分ですので、推移性を求める場合はいらないです。
計算すると
1 |
0.4285714 |
となります。
スポンサードリンク
密度との比較
ここで前回のデータ(高校生の友人関係のネットワークデータ)を用いて、推移性を求めてみようと思います。
1 2 3 4 5 6 7 8 9 |
> library(statnet) > data(package = "sna") > data(package = "sna") > data(coleman) > gden(coleman) Fall Spring 0.04623288 0.05003805 > gtrans(coleman) [1] 0.4626866 0.3802817 |
gtrans()は推移性を求める関数です。
1957年秋に比べ、1958年春の方が推移性は下がっています。友人関係の密度(繋がり)は増加しても、三角関係というか(共通の知り合い)は増えないみたいです。
友達の紹介を通じて得られる友人よりも、個人個人で新たに繋がりを増やす人の方が多いということでしょうか。
ネットワーク分析で事象の背景が見えてくるのは本当に面白いですね。
スポンサードリンク