グラフ内の各頂点のクラスタリングを計算しようとしています。クラスタリングは頂点レベルで実際に形成される可能性のある隣接間リンクの割合として定義されています頂点iには4つの近傍があり、近傍には6つの可能なリンクが存在する)。頂点レベルのクラスタリングを計算するための適切なアプローチ
私はちょうどネットワークについてより正式なことを学び始めていますが、これはネットワークの「緊密さ」のかなり一般的な操作/尺度であるようです。
しかし、私はigraph
でこれを計算するための缶詰め関数を見つけることができませんでした。 clusters
とcluster.distribution
の両方の機能は、私が「コンポーネント」と呼ぶものを扱っているように見えます。そして、私が言うことができるのは、それぞれcomponents
とcomponent.distribution
の単純なエイリアスです。例えば
は、g = make_graph("Bull")
のために、頂点によってクラスタリングは次のとおりです。
v | c
-------
1 | 1
2 | 1/3
3 | 1/3
4 | 0 [by convention]
5 | 0 [by convention]
私は、次の
library(igraph)
g = make_graph("Bull")
sapply(adjacent_vertices(g, seq_len(vcount(g))),
function(x) {
neigh = as.vector(x)
if (length(neigh) <= 1L) return(0)
sum(g[neigh, neigh])/
(length(neigh)^2 - length(neigh))})
# [1] 1.0000000 0.3333333 0.3333333 0.0000000 0.0000000
でこれを得ることができる。しかし、これは冗長、おそらく非効率です。
igraph
でもっと標準的な方法がありますか?