the number of communities over time

Hi, all,

I am working on time-series networks. I have one network in each year, and
I totally have 5 networks in 1970, 1980,1990,2000, 2010. Then I use the
layered model to generate communities.

state_G_layers=graph_tool.all.minimize_blockmodel_dl(G_layers,layers=True,
deg_corr=True,
                                     
state_args=dict(ec=G_layers.ep.layer,recs=[G_layers.ep.weight],rec_types=["real-exponential"],layers=True))

Then I got 10 communities. My questions:

1. Does it mean that in each year there are 10 communities , i.e., the
number of communities remains constant over time ?

2. If so, how can we detect the change in the number of communities as the
time goes by? As time goes by, some communities may disappear or merge with
other communities, or the whole network becomes more homophily and forms one
community.

It will be appreciated if you can help me.

Best regards,
Jianjian

Hi Jianjian,

The multilayer model as you've used works by fitting an independent SBM to
each layer, finding the best partition /across all layers/ to minimize the
sum of their description lengths.

To allow membership to vary across layers, you need to use the overlapping
model, then look at the membership of each layer in turn (e.g. by getting
the edge block labels using state.get_edge_blocks(), or perhaps passing the
overlapping partition to a new OverlapBlockState on a GraphView object
limiting the graph to the desired layer, then using get_majority_blocks(),
although I haven't tried this).

Best,
John

Thank you for your help. I will try the overlapping model.

Best regards,
Jianjian