Hello Tiago and community,
I have a network that I'd like to infer a hierarchical SBM from, but it has weighted edges.
After reading the weighted SBM paper [1] and looking at the graph-tool docs, I think I might be able to use `*minimize_nested_blockmodel_dl*` and pass the `*BlockState*` `*eweight*` argument via `*state_args*`. The weights are discrete and non-negative, so maybe I also need to specify " discrete-geometric" via `*rec_types`*. The edge weights could also be seen as multiple edges in a multigraph.
1]: https://arxiv.org/pdf/1708.01432.pdf
After searching through old mailing list posts, here is my current attempt for the weighted case:
``` g = Graph()
# Add vertices here
# Add edges here
edge_weights = g.new_edge_property('int')
# Specify edge weights here
state = minimize_nested_blockmodel_dl(g, state_args=dict(eweight=edge_weights,
rec_types=['discrete-geometric']) )
```
Am I on the right track? And would it be better to specify the edge weights via the `*BlockState*` `*recs*` parameter instead of using ` *eweight*`?
Thank you,
Alexander
Alexander T. J. Barron https://cogentmentat.github.io/academic/
Am 11.04.22 um 16:09 schrieb Alexander Barron:
Am I on the right track?
Yes, the command seems right to me, assuming your edge weights are non-negative integers.
And would it be better to specify the edge weights via the `*BlockState*` `*recs*` parameter instead of using `*eweight*`?
No, the “eweight” parameter refers to edge multiplicities, not the covariates.