These function provide different measures of the degree to which nodes fill structural holes, as outlined in Burt (1992):

  • node_by_bridges() measures the sum of bridges to which each node is adjacent.

  • node_by_redundancy() measures the redundancy of each nodes' contacts.

  • node_by_effsize() measures nodes' effective size.

  • node_by_efficiency() measures nodes' efficiency.

  • node_by_constraint() measures nodes' constraint scores for one-mode networks according to Burt (1992) and for two-mode networks according to Hollway et al (2020).

  • node_by_hierarchy() measures nodes' exposure to hierarchy, where only one or two contacts are the source of closure.

  • node_by_neighbours_degree() measures nodes' average nearest neighbors degree, or \(knn\), a measure of the type of local environment a node finds itself in

Burt's theory holds that while those nodes embedded in dense clusters of close connections are likely exposed to the same or similar ideas and information, those who fill structural holes between two otherwise disconnected groups can gain some comparative advantage from that position.

node_by_bridges(.data)

node_by_redundancy(.data)

node_by_effsize(.data)

node_by_efficiency(.data)

node_by_constraint(.data)

node_by_hierarchy(.data)

node_by_neighbours_degree(.data)

Arguments

.data

A network object of class stocnet, igraph, tbl_graph, network, or similar. Internally any of these will be coerced to an efficient implementation. For more information on possible coercions, see e.g. manynet::as_stocnet().

Value

A node_measure numeric vector the length of the nodes in the network, providing the scores for each node. If the network is labelled, then the scores will be labelled with the nodes' names.

The object also carries the measure it computed, the range its values can fall within, and whether and how those values were normalized. These are shown as a one-line header when the object is printed. Where a measure offers a choice between several ways of counting the same thing, it also carries the variant it used. All can be retrieved with attr().

Details

A number of different ways of measuring these structural holes are available. Note that we use Borgatti's reformulation for unweighted networks in node_redundancy() and node_effsize(). Redundancy is thus \(\frac{2t}{n}\), where \(t\) is the sum of ties and \(n\) the sum of nodes in each node's neighbourhood, and effective size is calculated as \(n - \frac{2t}{n}\). Node efficiency is the node's effective size divided by its degree.

Constraint

Constraint has a natural floor at 0, for a node whose contacts are wholly unconnected to one another, but no clean ceiling: the standard result is that it can reach around 1.125 for one-mode networks, and the two-mode form is a different summation again. Its declared range is therefore left open above rather than asserting a bound the measure can exceed.

References

On structural holes

Burt, Ronald S. 1992. Structural Holes: The Social Structure of Competition. Cambridge, MA: Harvard University Press.

Borgatti, Steven. 1997. “Structural Holes: Unpacking Burt’s Redundancy MeasuresConnections 20(1):35-38.

Burchard, Jake, and Benjamin Cornwell. 2018. “Structural Holes and Bridging in Two-Mode Networks.” Social Networks 55:11–20. doi:10.1016/j.socnet.2018.04.001

Hollway, James, Jean-Frédéric Morin, and Joost Pauwelyn. 2020. "Structural conditions for novelty: The introduction of new environmental clauses to the trade regime complex." International Environmental Agreements: Politics, Law and Economics 20 (1): 61–83. doi:10.1007/s10784-019-09464-5

On neighbours average degree

Barrat, Alain, Marc Barthelemy, Romualdo Pastor-Satorras, and Alessandro Vespignani. 2004. "The architecture of complex weighted networks", Proc. Natl. Acad. Sci. 101: 3747.

Examples

node_by_bridges(ison_adolescents)
#> # Bridges [0, Inf)
#> ▃▄▁▁ 
#>   Betty   Sue Alice  Jane  Dale   Pam Carol  Tina
#> 1     1     1     0     0     0     1     2     1
node_by_bridges(ison_southern_women)
#> # Bridges [0, Inf)
#>
#>   Evelyn Laura Theresa Brenda Charlotte Frances Eleanor Pearl  Ruth Verne  Myra
#> 1      0     0       0      0         0       0       0     0     0     0     0
#> # ... and 7 more values from this nodeset. Use `print_all(...)` to print all values.
#>      E1    E2    E3    E4    E5    E6    E7    E8    E9   E10   E11   E12   E13
#> 1     0     0     0     0     0     0     0     0     0     0     0     0     0
#> # ... and 1 more values from this nodeset. Use `print_all(...)` to print all values.
node_by_redundancy(ison_adolescents)
#> # Redundancy [0, Inf)
#> ▃▃▂ 
#>   Betty   Sue Alice  Jane  Dale   Pam Carol  Tina
#> 1     0     1   1.5     1  1.33 0.667     0     0
node_by_redundancy(ison_southern_women)
#> # Redundancy [0, Inf)
#> ▃▁▁▁▁▁▁▃▁ 
#>   Evelyn Laura Theresa Brenda Charlotte Frances Eleanor Pearl  Ruth Verne  Myra
#> 1   14.5  13.6    14.5   13.5        10    13.6    13.6  14.2  14.7  14.9  14.5
#> # ... and 7 more values from this nodeset. Use `print_all(...)` to print all values.
#>      E1    E2    E3    E4    E5    E6    E7    E8    E9   E10   E11   E12   E13
#> 1     7     7     7     7     7  8.95  8.88  9.03  8.96     7     7     7     7
#> # ... and 1 more values from this nodeset. Use `print_all(...)` to print all values.
node_by_effsize(ison_adolescents)
#> # Effective size [0, Inf)
#> ▃▂▂▁ 
#>   Betty   Sue Alice  Jane  Dale   Pam Carol  Tina
#> 1     1     3   2.5     1  1.67  2.33     2     1
node_by_effsize(ison_southern_women)
#> # Effective size [0, Inf)
#> ▅▁▂▁▁▁▁ 
#>   Evelyn Laura Theresa Brenda Charlotte Frances Eleanor Pearl  Ruth Verne  Myra
#> 1    2.5  1.38    2.46   1.46         1    1.41    1.36  1.77   2.3  2.05  1.48
#> # ... and 7 more values from this nodeset. Use `print_all(...)` to print all values.
#>      E1    E2    E3    E4    E5    E6    E7    E8    E9   E10   E11   E12   E13
#> 1     1     1     1     1     1  4.05  4.12  3.97  4.04     1     1     1     1
#> # ... and 1 more values from this nodeset. Use `print_all(...)` to print all values.
node_by_efficiency(ison_adolescents)
#> # Efficiency, normalized [0, 1]
#> ▂▁▂▁▃ 
#>   Betty   Sue Alice  Jane  Dale   Pam Carol  Tina
#> 1     1  0.75 0.625   0.5 0.556 0.778     1     1
node_by_efficiency(ison_southern_women)
#> # Efficiency, normalized [0, 1]
#> ▂▂▃▁▁▁▁▁ 
#>   Evelyn Laura Theresa Brenda Charlotte Frances Eleanor Pearl  Ruth Verne  Myra
#> 1  0.312 0.197   0.307  0.208      0.25   0.352    0.34 0.591 0.575 0.513 0.371
#> # ... and 7 more values from this nodeset. Use `print_all(...)` to print all values.
#>      E1    E2    E3    E4    E5    E6    E7    E8    E9   E10   E11   E12   E13
#> 1 0.333 0.333 0.167  0.25 0.125 0.506 0.412 0.283 0.337   0.2  0.25 0.167 0.333
#> # ... and 1 more values from this nodeset. Use `print_all(...)` to print all values.
node_by_constraint(ison_southern_women)
#> # Constraint [0, Inf)
#> ▁▂▃▂▁▁ 
#>   Evelyn Laura Theresa Brenda Charlotte Frances Eleanor Pearl  Ruth Verne  Myra
#> 1  0.278 0.307   0.297  0.317     0.384   0.412   0.417 0.472 0.406 0.409 0.414
#> # ... and 7 more values from this nodeset. Use `print_all(...)` to print all values.
#>      E1    E2    E3    E4    E5    E6    E7    E8    E9   E10   E11   E12   E13
#> 1 0.476 0.476 0.338 0.394 0.275 0.241 0.191 0.165 0.158  0.36 0.295 0.314 0.515
#> # ... and 1 more values from this nodeset. Use `print_all(...)` to print all values.
node_by_hierarchy(ison_adolescents)
#> # Hierarchy, normalized [0, 1]
#> ▄▃▁▁▁▁ 
#>   Betty   Sue Alice  Jane  Dale   Pam Carol  Tina
#> 1     0 0.031 0.027 0.006 0.033 0.006 0.102     0
node_by_hierarchy(ison_southern_women)
#> # Hierarchy, normalized [0, 1]
#> ▃▂▁▂▁▁▁ 
#>   Evelyn Laura Theresa Brenda Charlotte Frances Eleanor Pearl  Ruth Verne  Myra
#> 1  0.035 0.037   0.035  0.031     0.024   0.022   0.014 0.017 0.019 0.031 0.047
#> # ... and 7 more values from this nodeset. Use `print_all(...)` to print all values.
#>      E1    E2    E3    E4    E5    E6    E7    E8    E9   E10   E11   E12   E13
#> 1 0.001 0.001 0.006 0.005 0.006 0.011 0.006  0.01  0.02 0.009 0.053 0.009 0.006
#> # ... and 1 more values from this nodeset. Use `print_all(...)` to print all values.