Skip to contents

Identifies core-periphery structure in a network with a continuous (Borgatti-Everett) or a discrete method. Core nodes are densely interconnected, and periphery nodes connect mainly to the core. Edge weights are ignored; the analysis uses the binary adjacency matrix.

Usage

core_periphery(
  x,
  method = c("continuous", "discrete"),
  directed = NULL,
  iter = 100,
  digits = NULL,
  ...
)

Arguments

x

Network input: matrix, igraph, network, cograph_network, or tna object

method

Character string; either "continuous" (default, Borgatti-Everett model) or "discrete" (binary core/periphery assignment).

directed

Logical or NULL. If NULL (default), auto-detect from matrix symmetry. Set TRUE to force directed, FALSE to force undirected.

iter

Integer; maximum number of power iterations. Must be at least

  1. Default 100.

digits

Integer or NULL. Number of decimal places for the coreness scores, the fitness and the densities. Default NULL (no rounding).

...

Passed to to_igraph, which accepts no further arguments. Any argument supplied here raises an error.

Value

A data frame with class "cograph_core_periphery", one row per node, and columns:

node

Node label.

role

Character: "core" or "periphery". For the continuous method a node is core when its coreness is at or above the median coreness.

coreness

Numeric continuous coreness score, rescaled to \([0, 1]\). Reported for both methods.

The attributes "fitness", "core_density" and "periphery_density" hold the fit and the block densities, and "network" holds the original input.

Details

Continuous method

The Borgatti-Everett model compares the adjacency matrix with the rank-1 pattern matrix outer(c, c) of a coreness vector c. Here c is estimated from the dominant eigenvector of the adjacency matrix, refined by power iteration with rescaling to \([0, 1]\). The iteration stops when the largest change falls below \(10^{-6}\) or after iter steps. The vector is not optimized for the correlation. The "fitness" attribute is the correlation between the off-diagonal entries of the adjacency matrix and those of the pattern matrix (the lower triangle for a symmetric matrix), and it is 0 when the correlation is undefined.

Discrete method

The discrete method starts from the continuous solution split at the median and repeatedly flips the single node assignment that most increases density(core) - density(periphery). It stops when no flip increases this quantity. The "fitness" attribute is the correlation between the adjacency matrix and the ideal block pattern of the final assignment.

Printing and plotting

Printing the result shows the core and periphery sizes, the fitness and the two block densities, followed by the node table. The result is a data frame and serves as the tidy table directly. plot() on the result is documented in plot-results.

References

Borgatti, S.P. & Everett, M.G. (2000). Models of core/periphery structures. Social Networks, 21(4), 375-395. doi:10.1016/S0378-8733(99)00019-2

Examples

core_periphery(regulation_net)
#> Core-Periphery | Core: 5  Periphery: 5  Fitness: 0.030
#> Core density: 0.350 | Periphery density: 0.350
#> 
#>        node      role   coreness
#>     Explore periphery 0.07985633
#>        Plan      core 1.00000000
#>     Monitor periphery 0.00000000
#>       Adapt      core 0.44368868
#>     Reflect periphery 0.17972217
#>     Discuss periphery 0.05077436
#>  Synthesize      core 0.39000808
#>    Evaluate periphery 0.12894782
#>      Create      core 0.72952631
#>       Share      core 0.51706359