Ordered community structure nested within assortative community structure

Hello!

I would like to estimate an SBM-type model that has the following features:

  • A top layer that is assortative, i.e. blocks that are relatively self-contained
  • A bottom layer that is ordered within the top-level blocks, thus defining hierarchy levels within each top-level block.

In other words, my desired end-result is an assignment of each node to a top-level block and to a hierarchy level within this top-level block.

Is something like this currently possible using this package?

Any help would be much appreciated.

Yes, take a look at the nested SBM: Inferring modular network structure — graph-tool 2.97 documentation

Thanks for your reply. I had already experimented with the nested SBM, as described in the section “Ordered community structure”. However, I think this still tries to construct a global ranking of blocks. In my application, I want to detect rankings that only exist within larger communities, so that flows within larger communities are mostly upstream, but are unrestricted across these larger communities.

You’re confusing ranking with hierarchical structure, but these are different things. Ignore the ordered SBM and focus on the nested SBM, described in the link I sent.

Respectfully, I think you have misread or misunderstood what I am trying to do, probably because I have used unclear terminology. Let me re-phrase it. I want to estimate a model where each node belongs to

  • one of M different rankings
  • one of L_m levels within its ranking m

where a ranking is defined as in the ordered SBM (i.e., more upstream flows than downstream). In your hiring-network example, imagine that I wanted to estimate (different) rankings for both computer science and biology, but I didn’t observe ex-ante which position belonged into which of the two markets. Therefore, I would need to assign both a market (CompSci or Biology) and a level within that market to each node (position).

If this structure is present in the data, the algorithm will find it for you. But if you are looking for a bespoke constraint that enforces this specific structure in the inferred model, then this it is not implemented.