igraphパッケージのインストールを行うところです。ソフトウェアのインストールと同じで、最初の1回のみでよいです。eval=FALSE
は、Rチャンク内のコードを評価するかしないかというオプションで、FALSEを指定していることになります。つまりこの場合は、「install.packages関数を評価しない」と宣言していることと同義です。理由は、最初の1回のみ意識して実行するだけでよく、2回目以降は実行されたくないからです。
install.packages("igraph")
include=FALSE
は、HTMLレポート生成時(Knitボタンを押してレンダリングする作業と同義)に、レポートに含めないという宣言に相当します。パッケージのロード時のメッセージがレポートに含まれていてもしょうがないし、ロードでミスっていたらそもそも以降のコードが実行されないだけなので、このチャンクがレポートに含まれている必要ないよね、という思想です。
Erdos-Renyiモデルに従うネットワークを生成するためのerdos.renyi.game
関数を用いて、ノード数25
(n=25
)、密度0.2
(p.or.m=0.2
)のグラフを作成した結果をer
という名前で格納し、er
の中身をplot
関数を用いて描画しています。ここでの密度というのは、任意の2つの頂点(vertices)間に辺(edge)を引く確率に相当します。計4種類のパラメータを変えたネットワーク図を描画しており、plot(er)
がデフォルトです。vertex.size
は頂点サイズに相当します。layout
は、ネットワークのレイアウトを指定するオプションであり、ここではlayout=layout_in_circle
としてサークルになるようにしています。得られた計4つのグラフを見比べることで、vertex.size
のデフォルトはおそらく15であろうと判断できます。
er <- erdos.renyi.game(n=25, p.or.m=0.2)
plot(er)
plot(er, vertex.size=10)
plot(er, vertex.size=20)
plot(er, vertex.size=15, layout=layout_in_circle)
Watts-Strogatz
small-worldモデルに従うネットワークを生成するためのsample_smallworld
関数を用いて、ノード数(頂点数)が5×5
=
25を表現しているのがdim=2
とsize=5
です。nei=1
とp=0.1
は、1個となりの頂点とリンクした格子を、確率0.1
でランダムに置き換えるという意味です。このような条件下で生成した結果をsw
という名前で格納し、sw
の中身をplot
関数を用いて描画しています。描画時にvertex.size=15
として頂点サイズを15
に指定しています。また、図のレイアウトをサークルにすべく、layout=layout_in_circle
としています。
sw <- sample_smallworld(dim=2, size=5, nei=1, p=0.1)
plot(sw, vertex.size=15, layout=layout_in_circle)
Barabasi-Albert
scale-freeネットワークを生成するためのsample_pa
関数を用いて、頂点を追加するたび、既にある頂点の次数の2乗(power=2
)に比例する割合で辺を3本(m=3
)ずつ足していく頂点数25(n=25
)のネットワークを描こうとしています。ちなみにdirected=F
は無向グラフにせよという指令です。有効グラフにしたい場合はdirected=T
にします。
sf <- sample_pa(n=25, power=2, m=3, directed=F)
plot(sf, vertex.size=15)
plot(sf, vertex.size=15, layout=layout_in_circle)
上記で作成したErdos-Renyiモデルに従うランダムネットワーク生成結果オブジェクトer
を入力として利用しています。
er.deg <- degree(er)
er.deg
## [1] 5 3 2 8 2 6 4 7 2 10 3 5 6 4 4 9 4 4 7 7 5 3 3 7 2
plot(er, vertex.size = er.deg)
plot(er, vertex.size = er.deg * 2)
er.cls <- closeness(er)
er.cls
## [1] 0.02000000 0.01694915 0.01694915 0.02272727 0.01785714 0.02127660
## [7] 0.02000000 0.02272727 0.01694915 0.02380952 0.01886792 0.02000000
## [13] 0.02127660 0.02083333 0.02040816 0.02500000 0.01960784 0.02040816
## [19] 0.02380952 0.02173913 0.01724138 0.01754386 0.01666667 0.02272727
## [25] 0.01666667
er.cls * 1000
## [1] 20.00000 16.94915 16.94915 22.72727 17.85714 21.27660 20.00000 22.72727
## [9] 16.94915 23.80952 18.86792 20.00000 21.27660 20.83333 20.40816 25.00000
## [17] 19.60784 20.40816 23.80952 21.73913 17.24138 17.54386 16.66667 22.72727
## [25] 16.66667
plot(er, vertex.size = er.cls * 1000)
er.btw <- betweenness(er)
er.btw
## [1] 9.144048 3.219780 3.641667 30.959951 0.000000 21.113706 10.386447
## [8] 31.347772 1.916667 45.630403 2.197558 5.191484 17.253571 4.305891
## [15] 2.340415 33.963248 7.978571 4.165415 32.140354 19.325000 10.242857
## [22] 2.225000 3.708333 29.101862 0.500000
plot(er, vertex.size = er.btw)
Watts-Strogatz
small-worldモデルに従うネットワーク生成結果オブジェクトsw
を入力として利用しています。
sw.deg <- degree(sw)
sw.deg
## [1] 3 3 3 4 4 4 5 3 3 5 6 5 4 4 4 4 3 4 6 4 4 4 3 4 4
which.max(sw.deg)
## [1] 11
plot(sw, vertex.size = sw.deg * 3)
sw.cls <- closeness(sw)
sw.cls
## [1] 0.01639344 0.01694915 0.01694915 0.01666667 0.01724138 0.01886792
## [7] 0.01818182 0.01694915 0.01562500 0.01851852 0.02083333 0.01960784
## [13] 0.01694915 0.01851852 0.01851852 0.01818182 0.01562500 0.01724138
## [19] 0.02040816 0.01851852 0.01886792 0.01754386 0.01694915 0.01886792
## [25] 0.01724138
which.max(sw.cls)
## [1] 11
plot(sw, vertex.size = sw.cls * 800)
sw.btw <- betweenness(sw)
sw.btw
## [1] 8.994444 8.703968 12.263889 11.125000 18.583333 17.335354 20.362771
## [8] 9.040115 4.998485 20.983333 44.853391 24.437013 13.679509 19.598954
## [15] 10.915584 14.075433 4.024675 12.440079 41.109235 13.902814 13.421429
## [22] 12.914683 7.559524 22.410317 16.266667
which.max(sw.btw)
## [1] 11
plot(sw, vertex.size = sw.btw)
Barabasi-Albert
scale-freeモデルに従うネットワーク生成結果オブジェクトsf
を入力として利用しています。
#### 次数中心
sf.deg <- degree(sf)
sf.deg
## [1] 7 10 18 18 11 8 6 4 5 3 3 3 3 3 3 3 3 3 5 3 4 3 3 3 3
which.max(sf.deg)
## [1] 3
plot(sf, vertex.size = sf.deg)
sf.cls <- closeness(sf)
sf.cls
## [1] 0.02439024 0.02631579 0.03333333 0.03333333 0.02564103 0.02500000
## [7] 0.02325581 0.02272727 0.02222222 0.02222222 0.02083333 0.02222222
## [13] 0.02222222 0.02222222 0.02127660 0.02222222 0.02222222 0.02000000
## [19] 0.02173913 0.02222222 0.02222222 0.02173913 0.02222222 0.02040816
## [25] 0.02040816
which.max(sf.cls)
## [1] 3
plot(sf, vertex.size = sf.cls * 600)
sf.btw <- betweenness(sf)
sf.btw
## [1] 3.6349206 17.0838384 79.8485570 88.1779221 23.2318182 11.7786797
## [7] 4.8825758 1.6345238 2.2000000 0.2539683 0.9539683 0.3000000
## [13] 0.0000000 0.0000000 0.0000000 0.2539683 0.2539683 0.2500000
## [19] 3.7619048 0.0000000 3.0158730 0.9873016 0.5909091 0.7651515
## [25] 1.1401515
which.max(sf.btw)
## [1] 4
plot(sf, vertex.size = sf.btw / 4)