rapport-CEI-MIA-2023/Rcodes/simulation/play_lbmpop.R

131 lines
3.4 KiB
R

# Sourcing all necessary files
require("sbm", quietly = T)
require("dplyr", quietly = T)
require("tictoc", quietly = T)
require("ggplot2", quietly = T)
source("R/utils.R")
source("R/R6class-fitBipartiteSBMPop.R")
source("R/R6class-lbmpop.R")
set.seed(1234)
eps <- 0.05
M <- 3
# Cas hote parasite
# Modulaire : avec les diagonaux qui sont x3 et x4 des petites probas non diag
nr_modular <- 200
nr_modular <- c(1 / 10 * nr_modular, 1 / 5 * nr_modular, nr_modular)
nc_modular <- 500
nc_modular <- c(1 / 10 * nc_modular, 1 / 5 * nc_modular, nc_modular)
pir_modular <- c(0.6,0.4)
pic_modular <- c(0.6,0.4)
Q_modular <- c(length(pir_modular), length(pic_modular))
alpha_modular <- matrix(
c(
15*eps, eps,
eps, 10*eps
),
nrow = Q_modular[1], ncol = Q_modular[2], byrow = TRUE
)
modular_bipartite_collection <- generate_bipartite_collection(nr_modular, nc_modular, pir_modular, pic_modular, alpha_modular, M)
modular_bipartite_collection_incidence <- lapply(seq.int(M), function(m) {
modular_bipartite_collection[[m]]$incidence_matrix
})
### Cas plante-pollinisateurs double emboitements avec (1,3) partagé entre les emboîtements
nr_nested <- 200
nr_nested <- c(1/10*nr_nested, 1/5*nr_nested, nr_nested)
nc_nested <- 500
nc_nested <- c(1/10*nc_nested, 1/5*nc_nested, nc_nested)
pir_nested <- c(1)
pic_nested <- c(1)
Q_nested <- c(length(pir_nested), length(pic_nested))
alpha_nested <- matrix(
c(
0.25
),
nrow = Q_nested[1], ncol = Q_nested[2], byrow = TRUE
)
nested_bipartite_collection <- generate_bipartite_collection(nr_nested, nc_nested, pir_nested, pic_nested, alpha_nested, M)
nested_bipartite_collection_incidence <- lapply(seq.int(M), function(m) {
nested_bipartite_collection[[m]]$incidence_matrix
})
# La fusion des deux précédents
bipartite_collection <- append(modular_bipartite_collection, nested_bipartite_collection)
# This is a list of the M incidence matrices
bipartite_collection_incidence <- lapply(seq_along(bipartite_collection), function(m) {
bipartite_collection[[m]]$incidence_matrix
})
## Init given with exact membership
# Z <- lapply(seq_along(bipartite_collection), function(m) {
# list(
# bipartite_collection[[m]]$row_clustering,
# bipartite_collection[[m]]$col_clustering
# )
# })
# # mylbmpop$burn_in()
# # mylbmpop$moving_window(mylbmpop$best_fit$Q)
# # mylbmpop$compute_sep_LBM_ICL()
# mylbmpop$optimize()
# colLBM models
cat("\n Hote-Parasite (Modulaire) :\n")
modular_lbmpop <- lbmpop$new(
netlist = modular_bipartite_collection_incidence,
free_density = FALSE,
free_mixture = FALSE,
global_opts = list(verbosity = 4, plot_details = 1, nb_cores = 2)
)
modular_lbmpop$optimize()
cat("\n Plantes-Pollinisateurs (Double emboîté) :\n")
nested_lbmpop <- lbmpop$new(
netlist = nested_bipartite_collection_incidence,
free_density = FALSE,
free_mixture = FALSE,
global_opts = list(verbosity = 4, plot_details = 1)
)
nested_lbmpop$optimize()
cat("\n La collection associant les deux précédentes:\n")
bad_lbmpop <- lbmpop$new(
netlist = bipartite_collection_incidence,
free_density = FALSE,
free_mixture = FALSE,
global_opts = list(
verbosity = 4,
plot_details = 1,
Q1_max = 10,
Q2_max = 10
)
)
bad_lbmpop$optimize()
modular <- estimateBipartiteSBM(bipartite_collection_incidence[[1]])
nested <- estimateBipartiteSBM(bipartite_collection_incidence[[2]])
beepr::beep(5)