Dear all,
Just as a test, I was trying to fit a degree-corrected SBM to the famous
"karate-club" network. Almost everybody has "shown" that the network
contains two communities. However, when I tried using in-built graph-tool
algorithms, I can see only one:
In [2]: G = gt.collection.data["karate"]
In [3]: state = gt.minimize_blockmodel_dl(G, deg_corr=True)
In [4]: state
Out[4]: <BlockState object with 1 blocks (1 nonempty), degree-corrected,
for graph <Graph object, undirected, with 34 vertices and 78 edges at
0xa288858c>, at 0xa288b9cc>
I tried this repeatedly, but I always get only one group. Then I tried
manually specifying 2 groups:
In [11]: state = gt.minimize_blockmodel_dl(G, deg_corr=True, B_min=2)
However, in this case, I get a strange partition as shown in the following
figure:
This is not even close to what many papers show. I appreciate that many
algorithms consider noise as the real structure. However, even the famous
paper by Karrer and Newman (Karrer, Brian, and Mark EJ Newman. "Stochastic
blockmodels and community structure in networks." *Physical Review E* 83.1
(2011): 016107.) describes a very different division of the network. Am I
missing something very fundamental here?
Thank you
Snehal Shekatkar
--
Snehal M. Shekatkar
Pune
India