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
-- Sent from: https://nabble.skewed.de/
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
-- Sent from: https://nabble.skewed.de/
Thank you for your help. I will try the overlapping model.
Best regards, Jianjian
-- Sent from: https://nabble.skewed.de/