統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

ネットワーク図を R で書く方法

R におけるネットワーク分析のパッケージ network の簡単な使い方。

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

network パッケージのインストール

まず統計ソフトRにパッケージをインストールして呼び出す。

install.packages("network")
library(network)

準備するデータ

ネットワークのつながりありなしの行列を準備する。

network パッケージに付属している flo を例として用いる。

data('flow")

flow の内容は以下のようなものだ。

行と列に同じ要素(vertex)が並び、つながり(edge)があるもの同士が1である。

つながりがないもの同士は0である。

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

ネットワーク分析の実行

network パッケージの network() 関数を適用する。

nflo <- network(flo)
summary(nflo)

以下のようにサマリーが出力される。

vertices が頂点の数。

これがネットワークを構成する要素である。

directed = TRUEであるのは、方向性を加味しているという意味。

total edges = 40 で、つながりが40あるという意味である。

双方向を2つと数えている。

network density は、0.1666667と計算されている。

最後に Network edgelist matrix が出力されている。

どの頂点同士がつながっているかのリストだ。

ネットワークの描画

plot() で、図を描画すると以下のようになる。

plot(nflo)

頂点に名前を入れたい場合は、displaylabels = TRUE とする。

plot(nflo, displaylabels=TRUE)

すると、頂点に名前が付く。

方向性がないつながりの場合

つながりには、方向性がなく、相関ということであれば、directed = FALSE を指定する。

nflo1 <- network(flo, directed=FALSE)
summary(nflo1)
plot(nflo1, displaylabels=TRUE)

すると total edges = 20に減少する。

図は以下の通りになり、つながりの両端の矢印頭がなくなる。

まとめ

R のパッケージ network を用いて、ネットワーク図の描画をやってみた。

つながりを示す行列のデータがあれば、簡単にネットワーク図は描画できる。

参考文献

network: A Package for Managing Relational Data in R | Journal of Statistical Software