mia-rapport-2024/Rcodes/simulation/lbmpop-simulation-poisson.R
2024-06-28 10:49:49 +02:00

80 lines
1.8 KiB
R

# Sourcing all necessary files
require("sbm", quietly = T)
require("dplyr", quietly = T)
require("tictoc", quietly = T)
require("ggplot2", quietly = T)
devtools::load_all(path = "R/")
set.seed(1234)
verbose <- TRUE
test_alea <- TRUE
eps <- 0.05
M <- 3
nr <- 100
nc <- 250
pic <- c(0.1, 0.2, 0.3, 0.4)
pir <- c(0.1, 0.2, 0.7)
Q <- c(length(pir), length(pic))
alpha <- matrix(
c(
1, 0, 0, 5,
4, 100, 25, 45,
0, 55, 0, 60
),
nrow = Q[1], ncol = Q[2], byrow = TRUE
)
bipartite_collection <- generate_bipartite_collection(nr, nc, pir, pic, alpha, M, distribution = "poisson", return_memberships = TRUE)
# This is a list of the M incidence matrices
bipartite_collection_incidence <- lapply(seq.int(M), function(m) {
bipartite_collection[[m]]$incidence_matrix
})
bipartite_collection_incidence_binary <- lapply(seq_along(bipartite_collection_incidence), function(m) {
1 * (bipartite_collection_incidence[[m]] > 0)
})
## Init given with exact membership
Z <- lapply(seq.int(M), function(m) {
list(bipartite_collection[[m]]$row_clustering, bipartite_collection[[m]]$col_clustering)
})
tic()
mybisbmpop <- estimate_colBiSBM(
netlist = bipartite_collection_incidence_binary, colsbm_model = "iid",
nb_run = 3,
distribution = "poisson",
global_opts = list(
parallelization_vector = c(T, T),
nb_cores = 6, verbosity = 4
)
)
toc()
# choosed_bisbmpop <- estimate_colBiSBM(
# netlist = bipartite_collection_incidence,
# colsbm_model = "iid",
# global_opts = list(nb_cores = 3)
# )
ari_sums <- sapply(
seq_along(mybisbmpop$best_fit$Z),
function(m) {
sum(c(
aricode::ARI(
Z[[m]][[1]],
mybisbmpop$best_fit$Z[[m]][[1]]
),
aricode::ARI(
Z[[m]][[2]],
mybisbmpop$best_fit$Z[[m]][[2]]
)
))
}
)