Learn R Programming

backbone (version 3.0.2)

backbone_from_unweighted: Extract the backbone from an unweighted, undirected network

Description

backbone_from_unweighted() extracts the unweighted backbone from an unweighted, undirected network

Usage

backbone_from_unweighted(
  U,
  model = "lspar",
  parameter = 0.5,
  escore,
  normalize,
  filter,
  umst,
  narrative = FALSE,
  backbone_only = TRUE
)

Value

A backbone in the same class as U, or if backbone_only = FALSE, then a backbone object.

Arguments

U

An unweighted, undirected network as an adjacency matrix or Matrix, or an unweighted unipartite igraph object

model

string: backbone model

parameter

real: filtering parameter

escore

string: Method for scoring edges' importance

normalize

string: Method for normalizing edge scores

filter

string: Type of filter to apply

umst

logical: TRUE if the backbone should include the union of maximum spanning trees, to ensure connectivity

narrative

logical: display suggested text & citations

backbone_only

logical: return just the backbone (default), or a detailed backbone object

Details

The backbone_from_unweighted function extracts the backbone from an unweighted unipartite network. The backbone is an unweighted unipartite network that contains only edges preserved by a backbone model.

The following backbone models are available using the model parameter:

  • skeleton - Skeleton backbone (Karger, 1999)

  • gspar - Global Sparsification (Satuluri et al., 2011)

  • lspar - Local Sparsification (Satuluri et al., 2011)

  • simmelian - Simmelian backbone (Nick et al., 2013)

  • jaccard - Jaccard backbone (Goldberg and Roth, 2003)

  • meetmin - MeetMin backbone (Goldberg and Roth, 2003)

  • geometric - Geometric backbone (Goldberg and Roth, 2003)

  • hyper - Hypergeometric backbone, (Goldberg and Roth, 2003)

  • degree - Local Degree backbone (Hamann et al, 2016)

  • quadrilateral - Quadrilateral Simmelian backbone (Nocaj et al, 2015)

  • custom - A custom backbone model specified by escore, normalize, filter, and umst

The escore parameter determines how an unweighted edge's importance is calculated.

  • random: a random number drawn from a uniform distribution

  • betweenness: edge betweenness

  • triangles: number of triangles that include the edge

  • jaccard: jaccard similarity coefficient of the neighborhoods of an edge's endpoints, or alternatively, triangles normalized by the size of the union of the endpoints neighborhoods

  • dice: dice similarity coefficient of the neighborhoods of an edge's endpoints

  • quadrangles: number of quadrangles that include the edge

  • quadrilateral: geometric mean normalization of quadrangles

  • degree: degree of neighbor to which an edge is adjacent (asymmetric)

  • meetmin: triangles normalized by the smaller of the endpoints' neighborhoods' sizes

  • geometric: triangles normalized by the product of the endpoints' neighborhoods' sizes

  • hypergeometric: probability of the edge being included at least as many triangles if edges were random, given the size of the endpoints' neighborhoods (inverted, so that larger is more important)

The normalize parameter determines whether edge scores are normalized.

  • none: no normalization is performed

  • rank: scores are normalized by neighborhood rank, such that the strongest edge in a node's neighborhood is ranked 1 (requires that filter = degree)

  • embeddedness: scores are normalized using the maximum Jaccard coefficient of the top k-ranked neighbors of each endpoint, for all k

The filter parameter determines how edges are filtered based on their (normalized) edge scores.

  • threshold: Edges with scores > parameter are retained in the backbone

  • proportion: Specifies the approximate proportion of edges to retain in the backbone

  • degree: Retains each node's d^parameter most important edges, where d is the node's degree (requires that normalize = "rank")

  • disparity: Applies the disparity filter using backbone_from_weighted()

  • lans: Applies locally adaptive network sparsification using backbone_from_weighted()

  • mlf: Applies the marginal likelihood filter using backbone_from_weighted()

References

package: Neal, Z. P. (2025). backbone: An R Package to Extract Network Backbones. CRAN. tools:::Rd_expr_doi("10.32614/CRAN.package.backbone")

skeleton: Karger, D. R. (1999). Random sampling in cut, flow, and network design problems. Mathematics of Operations Research, 24, 383-413. tools:::Rd_expr_doi("10.1287/moor.24.2.383")

gspar and lspar: Satuluri, V., Parthasarathy, S., & Ruan, Y. (2011, June). Local graph sparsification for scalable clustering. In Proceedings of the 2011 ACM SIGMOD International Conference on Management of data (pp. 721-732). tools:::Rd_expr_doi("10.1145/1989323.1989399")

simmelian: Nick, B., Lee, C., Cunningham, P., & Brandes, U. (2013, August). Simmelian backbones: Amplifying hidden homophily in facebook networks. In Proceedings of the 2013 IEEE/ACM international conference on advances in social networks analysis and mining (pp. 525-532). tools:::Rd_expr_doi("10.1145/2492517.2492569")

jaccard, meetmin, geometric, hyper: Goldberg, D. S., & Roth, F. P. (2003). Assessing experimentally derived interactions in a small world. Proceedings of the National Academy of Sciences, 100, 4372-4376. tools:::Rd_expr_doi("10.1073/pnas.0735871100")

degree: Hamann, M., Lindner, G., Meyerhenke, H., Staudt, C. L., & Wagner, D. (2016). Structure-preserving sparsification methods for social networks. Social Network Analysis and Mining, 6, 22. tools:::Rd_expr_doi("10.1007/s13278-016-0332-2")

quadrilateral: Nocaj, A., Ortmann, M., & Brandes, U. (2015). Untangling the hairballs of multi-centered, small-world online social media networks. Journal of Graph Algorithms and Applications, 19, 595-618. tools:::Rd_expr_doi("10.7155/jgaa.00370")

Examples

Run this code
#A dense, unweighted network with three embedded communities
U <- igraph::sample_sbm(60, matrix(c(.75,.25,.25,.25,.75,.25,.25,.25,.75),3,3), c(20,20,20))
plot(U)  #Communities are not obvious

#Extract backbone using the built-in "Local Sparsification" model
bb <- backbone_from_unweighted(U, model = "lspar", parameter = 0.5)
plot(bb)  #Communities are clearly visible

#Extract backbone using local sparification, but explicitly specifying the model steps
bb <- backbone_from_unweighted(U, model = "custom", escore = "jaccard",
                               normalize = "rank", filter = "degree",
                               umst = FALSE, parameter = 0.5)
plot(bb)  #Communities are clearly visible

Run the code above in your browser using DataLab