multinethist: Network histogram estimation

View source: R/multinethist.R

multinethistR Documentation

Network histogram estimation

Description

Estimating network histogram for multiplex networks and returning the indices of partitions.

Usage

multinethist(A, h = NA, common_f = FALSE, method = "PLL",
  control = nethist_control(), ...)

Arguments

A

Adjacency data for one or more network layers. Accepted formats:

  • Single-layer: a matrix, igraph object, or network object.

  • Multilayer: a 3D array of dimension n \times n \times L; a list of igraph or network objects (all sharing a common vertex set); or a combined_networks object from ergm.multi::Networks().

Plain matrix or sparse Matrix elements inside a list are not accepted because vertex ordering across layers cannot be verified. Use a 3D array instead.

When a list of igraph or network objects is supplied, vertex names are used to align layers if present (via igraph::vertex_attr(g, "name") or network::network.vertex.names()). If vertex names are absent, positional correspondence is assumed: vertex i in each layer is treated as the same vertex. All layers must have the same number of vertices, and when names are present they must form the same set.

h

A bandwidth parameter. If NA, the bandwidth is selected by Olhede and Wolfe (2014). If specified, the user-supplied value is used.

common_f

A logical; if TRUE, assumes a common network histogram function for all layers.

method

Type of loss function for network histogram. Must be one of PLL (default) or LSE. LSE is implemented only for single-layer networks. See Details.

control

A control object from nethist_control. Governs max_itr, greedy_swap_rule, greedy_stop_threshold, and verbose.

...

Currently unused.

Details

The lth layer's multi-network histogram is defined by thetahat/rho_hat. The multinetwork histogram can be plotted using plot() and plot3d().

If the number of layers is 1, multinethist() fits a single-layer network histogram, equivalent to nethist().

method = "PLL" is for Olhede and Wolfe (2014), and method = "LSE" is for Gao et al. (2015). method = "LSE" is implemented only for single-layer networks, and an error is raised for multilayer input.

Note that cluster only shows a partition of vertices, and the index labels are not ordered. For example, vertices in cluster 1 do not have to be more similar to vertices in cluster 2 than to vertices in cluster 10. Hence, users may specify a custom order in plot.multinethist().

The greedy search is stochastic. At each iteration it draws a pair of vertices uniformly at random and swaps their block labels if the objective improves, so it converges to a local optimum that depends on the state of the random number stream. Call set.seed() immediately before the fit to make results reproducible, and expect different seeds to give somewhat different partitions.

Value

If the number of layers is greater than 1, it returns an object of class c("multinethist", "network_histogram") (see network_histogram-class):

  • cluster a vector of partition indices.

  • thetahat a probability array from multinetwork histogram ordered by group labels.

  • rho_hat a vector of estimated sparsity parameters.

  • normalized_LL a normalized likelihood from the algorithm.

  • method loss function used. Always "PLL" for multilayer fits.

  • homogeneous a logical variable indicating homogeneous multinetwork histogram.

  • h bandwidth used for estimation.

References

Song, Y. & Olhede, S. C. (2026). Joint Estimation of Sparse Multilayer Networks via Graph Limits. doi:10.1093/comnet/cnag042

Olhede, S. C. & Wolfe, P. J. (2014). Network Histograms and Universality of Blockmodel Approximation. Proceedings of the National Academy of Sciences, 111(41), 14722-14727. doi:10.1073/pnas.1400374111

Gao, C., Lu, Y., & Zhou, H. H. (2015). Rate-Optimal Graphon Estimation. The Annals of Statistics, 43(6), 2624-2652. doi:10.1214/15-AOS1354

See Also

plot.multinethist(), plot.nethist(), nethist_control()

Examples


   #single-layer network histogram
   set.seed(42)
   data(polblog)
   nethist(polblog)
   nethist_polblog <- nethist(polblog)
   nethist_polblog_with_h <- nethist(polblog, h = 72)

   #multi-network histogram
   set.seed(42)
   data(IndianVil)
   IndianVil
   mnethist_Ind_Vil <- multinethist(IndianVil)


nethist documentation built on Oct. 25, 2026, 5:07 p.m.