グラフの密度

snaでグラフの密度(濃度・density)を算出するには、gden関数を使う。

ここでいうグラフの密度とは、存在するタイに与えられた値の総計を、最大可能な辺の数(つまり全ての頂点の間に辺がある場合)で割ったものである。それゆえ、重み付きグラフ(タイの値が0か1だけでなく、それ以外の実数を含む)の場合、得られる値はタイの値の平均値となる。

最大可能な辺の数というのは、頂点の数をnとすると、対角を含まない有向グラフの場合、n(n-1)、無向グラフの場合はn(n-1)/2であり、対角を含む有向グラフの場合はnの2乗、無向グラフの場合n(n+1)/2である。

密度に関するパラメータ

g
密度の算出対象となるグラフを示す値。複数のグラフを対象とする場合はベクトルでもよい。g = NULL(デフォルト)の場合、ネットワーク・データに含まれる全てのグラフについて密度が算出される。

diag
隣接行列の対角を有効なデータとして扱うかどうかを示すブール型変数。データがループを含むときにのみTRUEにする。デフォルトはFALSE。

mode
グラフのタイプ。"digraph"(デフォルト)または"graph"。



> #完全グラフと空グラフからなるネットワーク・データの作成
> dat <- array(, dim=c(2,3,3))
> dat[1,,] <- matrix(c(0,1,1,1,0,1,1,1,0), 3, byrow = TRUE)
> dat[2,,] <- matrix(c(0,0,0,0,0,0,0,0,0), 3, byrow = TRUE)
> #1番目のグラフの密度を算出
> gden(dat, g = 1)

[1] 1

> #2番目のグラフの密度を算出
> gden(dat, g = 2)

[1] 0

> #データに含まれる全てのグラフの密度を算出
> gden(dat)

[1] 1 0


> #無向の重み付きグラフの作成
> dat <- matrix(c(0,1,2,1,0,3,2,3,0), 3, byrow =TRUE)
> dat

   [,1] [,2] [,3]
[1,]  0  1  2
[2,]  1  0  3
[3,]  2  3  0

> #タイの値の平均値の算出
> gden(dat, mode = "graph")

[1] 2