Initializes blocks for a given level of network. When n_blocks = -1 (the default) this will simply give every node its own block. Otherwise it will randomly draw each nodes block from num_block possible parent nodes for each node type. E.g. if network is bipartite and n_blocks == 3 a total of 3*2 = 6 blocks will be added and assigned randomly to nodes. Because of random assignment of parents there may sometimes be less blocks than n_blocks * <num_types> due to some block nodes never being assigned to a child node.

initialize_blocks(sbm, n_blocks = NULL)

Arguments

sbm

sbm_network object as created by new_sbm_network.

n_blocks

Total number of blocks to initialize for each unique node type. If set to -1, then a single block is made for every node.

Value

An S3 object of class sbm_network. For details see new_sbm_network section "Class structure."

See also

Examples

# Small edge list to build network edges <- dplyr::tribble( ~from, ~to, "a1" , "b1" , "a1" , "b2" , "a1" , "b3" , "a2" , "b1" , "a2" , "b4" , "a3" , "b1" ) # A small simulated network net <- new_sbm_network(edges) # Default values of function will give every node its own block net %>% initialize_blocks() %>% n_blocks()
#> [1] 7
# You can also decide to have a given number of blocks randomly assigned Here # four blocks result because two random blocks are made for each of the two # types net %>% initialize_blocks(n_blocks = 2) %>% n_blocks()
#> [1] 7
# If you have a polypartite network each set of node types will get their own # set of `n_blocks` randomly assigned new_sbm_network(edges, bipartite_edges = TRUE) %>% initialize_blocks(n_blocks = 2) %>% n_blocks()
#> [1] 4