Calculates bridge centrality metrics (bridge strength, bridge betweenness, bridge closeness, and bridge expected influence) given a network and a prespecified set of communities.
bridge(network, communities = NULL, useCommunities = "all",
directed = NULL, nodes = NULL)
a network of class "igraph", "qgraph", or an adjacency matrix representing a network
an object of class "communities" (igraph) OR a characcter vector of community assignments for each node (e.g., c("Comm1", "Comm1", "Comm2", "Comm2)). The ordering of this vector should correspond to the vector from argument "nodes"
character vector specifying which communities should be included. Default set to "all"
logical. Directedness is automatically detected if set to "NULL" (the default). Symmetric adjacency matrices will be undirected, unsymmetric matrices will be directed
a vector containing the names of the nodes. If set to "NULL", this vector will be automatically detected in the order extracted
bridge
returns a list of class "bridge
" which contains:
See global.impact
, structure.impact
, and edge.impact
for
details on each list
To plot the results, first save as an object, and then use plot() (see ?plot.bridge)
Centrality metrics (strength, betweenness, etc.) illuminate how nodes are interconnected among the entire network. However, sometimes we are interested in the connectivity between specific communities in a larger network. Nodes that are important in communication between communities can be conceptualized as bridge nodes.
Bridge centrality statistics aim to identify bridge nodes. Bridge centralities
can be calculated across all communities, or between a specific subset of coumminities (as
identified by the useCommunities
argument)
The bridge() function currently returns 5 centrality metrics: 1) bridge strength, 2) bridge betweenness, 3) bridge closeness, 4) bridge expected influence (1-step), and 5) bridge expected influence (2-step)
Bridge strength is defined as the sum of the absolute value of all edges that exist between a node A and all nodes that are not in the same community as node A. In a directed network, bridge strength can be separated into bridge in-degree and bridge out-degree.
Bridge betweenness is defined as the number of times a node B lies on the shortest path between nodes A and C, where nodes A and C come from different communities.
Bridge closeness is defined as the average length of the path from a node A to all nodes that are not in the same community as node A
Bridge expected influence (1-step) is defined as the sum of the value (+ or -) of all edges that exist between a node A and all nodes that are not in the same community as node A. In a directed network, expected influence only considers edges extending from the given node (e.g., out-degree)
Bridge expected influence (2-step) is similar to 1-step, but also considers the indirect effect that a node A may have through other nodes (e.g, an indirect effect on node C as in A -> B -> C). Indirect effects are weighted by the first edge weight (e.g., A -> B), and then added to the 1-step expected influence
If negative edges exist, bridge expected influence should be used. Any negative edges are currently ignored in the algorithms to compute bridge betweenness and bridge closeness.
# NOT RUN {
graph1 <- qgraph::EBICglasso(cor(depression), n=dim(depression)[1])
graph2 <- IsingFit::IsingFit(social)$weiadj
b <- bridge(graph1, communities=c('1','1','2','2','2','2','1','2','1'))
b
b2 <- bridge(graph2, communities=c(rep('1',8), rep('2',8)))
b2
plot(b)
plot(b2, order="value", zscore=TRUE, include=c("Bridge Strength", "Bridge Betweenness"))
# }
Run the code above in your browser using DataLab