スポンサードリンク
今回は、ネットワーク構造の指標の一つである密度について述べていきます。
対象データ
今回用いた対象データは、Colemanによる73人の男子高校生の友人ネットワークです。よく付き合いのある相手をあげてもらい、その方向のデータです。
ここでは1957年のと1958年の春の2回分のネットワークデータについてグラフ化します。
前回(Rを用いてグラフ理論を学んでみる。)では、コンソールに直接コードを入力しましたが、非効率なので今回はスクリプトを作成し、それを実行するようにしました。
R-studioにおけるスクリプトの実行方法
右上側にあるRunボタンだと、スクリプトが一行ずつ読み込まれるようです。そのため最後まで読み込むには連打しなければいけません。
なので、それよりも右側にあるSourceボタンを押してください。そうするとスクリプトファイルの内容を一発で実行できます。
対象データのグラフ化
作成したスクリプトは、以下です。
1 2 3 4 5 6 7 8 9 |
install.packages('statnet') library(statnet) data(package = "sna") data(package = "ergm") data(coleman) coord1 <- gplot(coleman, g = 1) par(mfrow = c(1,2)) gplot(coleman, g = 1, coord = coord1, main = "Fall, 1957") gplot(coleman, g = 2, coord = coord1, main = "Spring, 1958") |
gplot()でプロットするグラフを定義します。最初のgplotは同じ生徒が同じ位置に来るように配置を定義するためのものです。
試しに以下のコードを実行します。
1 2 3 4 5 |
library(statnet) data(package = "sna") data(package = "ergm") data(coleman) gplot(coleman, g = 1) |
生成されるグラフは以下のようになります。
par(mfrow = (m,n))は画面をm行n列に分割して画像を生成するという意味。
最後にgplotで先ほど定義した「友人関係の配置を定義したもの」を用いて、ネットワーク関係(相互関係)のみ更新して終わりです。
作成されるグラフは以下になります。
ネットワークにおける密度
以上の例でみたネットワークの密度を求める前に、密度の定義について述べて行きます。
密度の定義
グラフにおいてはることができる全ての辺の数に対する、実際の辺の比率です。
単純グラフの場合、頂点数nの無向グラフにおいて可能な辺の数は最大で、\(\frac{n(n-1)}{2}\)であるから、グラフに含まれる辺の数をmとすると、密度は次のように定義されます。
\begin{eqnarray}
\mathrm{density} = \frac{m}{n(n-1)/2} = \frac{2m}{n(n-1)}
\end{eqnarray}
5つの頂点、6つの無向辺からなるグラフの密度は
\begin{eqnarray}
\mathrm{density} &=& \frac{m}{n(n-1)/2} = \frac{2 \times 6}{5\times 4}
&=&0.6
\end{eqnarray}
となります。
有効グラフの場合、辺の向きも考慮するため、辺のパターンが無向グラフの2倍となり、
\begin{eqnarray}
\mathrm{density} = \frac{m}{n(n-1)}
\end{eqnarray}
となります。
Rを用いて密度を計算しよう!
といってもsnaパッケージにあるgden()コマンドを用いるだけです。
1 2 3 |
> gden(coleman) Fall Spring 0.04623288 0.05003805 |
密度が1958年の春の方が大きい、すなわちグラフが密になっているので、高校生のネットワークが増えているということでしょう。
時間が経てば、同コミュニティ内のネットワークが深まるのは経験則と照らし合わせても、異論はないと思います。
ネットワーク分析における指標は他にもあるので、次回以降それらについても述べていこうと思います。
スポンサードリンク