グラフの平均クラスタリング係数を計算したい(igraph
パッケージから)。ただし、どのアプローチに従うべきかわかりません。
library(igraph)
graph <- erdos.renyi.game(10000, 10000, type = "gnm")
# Global clustering coefficient
transitivity(graph)
# Average clustering coefficient
transitivity(graph, type = "average")
# The same as above
mean(transitivity(graph, type = "local"), na.rm = TRUE)
いくつかのご指導をいただければ幸いです。
transitivity(graph)
を使用すると、グローバルクラスタリング係数(推移性)が計算されます。
これは、単にグラフ内の三角形と接続されたトリプルの比率です。有向グラフの場合、エッジの方向は無視されます。
一方、transitivity(graph, type = "average")
の平均であるtransitivity(graph, type = "local")
は、最初にローカルクラスタリング係数を計算し、次にそれらを平均します。
無向グラフのローカル推移性。これは、vids引数で指定された各頂点に対して計算されます。頂点の局所的な推移性は、頂点に接続されている三角形と、頂点を中心とするトリプルの比率です。有向グラフの場合、エッジの方向は無視されます。
たとえば、?transitivity
および クラスタリング係数 を参照してください。
したがって、最初に両方とも有効な手段であり、選択は目的によって異なります。それらの違いは非常に明確です(ウィキペディアのページを参照):
このメトリックは低次ノードにより多くの重みを置き、推移性比は高次ノードにより多くの重みを置くことに注意する価値があります。実際、各ローカルクラスタリングスコアがk_i(k_i-1)によって重み付けされている加重平均は、グローバルクラスタリング係数と同じです。
ここで、k_iは、隣接する頂点iの数です。したがって、おそらく両方を使用することもかなり公平でしょう。