Finds blocks of nodes with specified inter/intra group ties
Details
The function minimizes P(C)=\(\alpha\)N+(1-\(\alpha\))P, where N is the total number of negative ties within plus-sets and P be the total number of positive ties between plus-sets. This function implements the generalized model. For the structural balance version see signed_blockmodel.
References
Doreian, Patrick and Andrej Mrvar (2009). Partitioning signed social networks. Social Networks 31(1) 1-11
Examples
library(igraph)
# create a signed network with three groups and different inter/intra group ties
g1 <- g2 <- g3 <- graph.full(5)
V(g1)$name <- as.character(1:5)
V(g2)$name <- as.character(6:10)
V(g3)$name <- as.character(11:15)
g <- Reduce("%u%", list(g1, g2, g3))
E(g)$sign <- 1
E(g)$sign[1:10] <- -1
g <- add.edges(g, c(rbind(1:5, 6:10)), attr = list(sign = -1))
#> Warning: `add.edges()` was deprecated in igraph 2.0.0.
#> ℹ Please use `add_edges()` instead.
g <- add.edges(g, c(rbind(1:5, 11:15)), attr = list(sign = -1))
g <- add.edges(g, c(rbind(11:15, 6:10)), attr = list(sign = 1))
# specify the link patterns between groups
blockmat <- matrix(c(1, -1, -1, -1, 1, 1, -1, 1, -1), 3, 3, byrow = TRUE)
signed_blockmodel_general(g, blockmat, 0.5)
#> $membership
#> [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
#>
#> $criterion
#> [1] 0
#>