Core-periphery model of Borgatti and Everett (2000): a group of nodes that are connected among themselves and with the rest, and a periphery of nodes that are connected with the core but not with each other.
Usage
core_periphery(
A,
method = c("discrete", "continuous"),
digraph = FALSE,
rep = 50
)Details
The discrete model looks for the partition of the nodes into a core and a periphery
that maximises the correlation between the observed matrix and the ideal pattern, where a
tie is expected when at least one of the two nodes belongs to the core. The search starts
from the nodes sorted by degree, and from rep random partitions, and then moves one
node at a time while the correlation improves. As the search can end in a local optimum, the
result of the random starts depends on the seed.
The continuous model gives each node a coreness score instead of a class. The scores
maximise the correlation between the observed matrix and the products of the scores of each
pair, and are given by the leading eigenvector of the matrix.
References
Borgatti, S. P. and Everett, M. G. (2000). Models of core/periphery structures. Social Networks, 21(4), 375–395. doi:10.1016/S0378-8733(99)00019-2
Examples
A <- matrix(c(
0, 1, 1, 1, 1, 0,
1, 0, 1, 1, 0, 1,
1, 1, 0, 1, 0, 0,
1, 1, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0
), byrow = TRUE, ncol = 6)
rownames(A) <- letters[1:nrow(A)]
colnames(A) <- rownames(A)
core_periphery(A)
#> $fit
#> [1] 0.6000992
#>
#> $core
#> [1] "a" "b"
#>
#> $periphery
#> [1] "c" "d" "e" "f"
#>
#> $class
#> [1] "core" "core" "periphery" "periphery" "periphery" "periphery"
#>
core_periphery(A, method = "continuous")
#> $fit
#> [1] 0.7804686
#>
#> $coreness
#> a b c d e f
#> 0.5058703 0.5058703 0.4674790 0.4674790 0.1598706 0.1598706
#>
