An R6 class to represent a collection of SBM fits with missing data
Source:R/R6Class-missSBM_collection.R
missSBM_collection.RdThe function estimateMissSBM() fits a collection of SBM with missing data for
a varying number of block. These models with class missSBM_fit are stored in an instance
of an object with class missSBM_collection, described here.
Fields are accessed via active binding and cannot be changed by the user.
This class comes with a set of R6 methods, some of them being useful for the user and exported
as S3 methods. See the documentation for show() and print()
Active bindings
modelsa list of models
ICLthe vector of Integrated Classification Criterion (ICL) associated to the models in the collection (the smaller, the better)
bestModelthe best model according to the ICL, restricted to models without collapsed classes when at least one such model is available (see
$degenerate)vBlocksa vector with the number of blocks
occupiedBlocksa vector with the number of classes actually occupied in each model (see missSBM_fit's
occupiedBlocks)degeneratelogical vector,
TRUEfor models with collapsed classes (occupiedBlocks < vBlocks, see missSBM_fit'srepair())optimizationSettingsthe control list used by estimate()/polish()/explore() when not overridden per call (set at construction by
estimateMissSBM())optimizationStatusa data.frame summarizing the optimization process for all models
Methods
missSBM_collection$new()
constructor for networkSampling
Usage
missSBM_collection$new(partlyObservedNet, sampling, clusterInit, control)Arguments
partlyObservedNetAn object with class
partlyObservedNetwork.samplingThe sampling design for the modelling of missing data: MAR designs ("dyad", "node") and MNAR designs ("double-standard", "block-dyad", "block-node" ,"degree")
clusterInitInitial clustering: a list of vectors, each with size
ncol(adjacencyMatrix).controla list of parameters controlling advanced features. Only 'trace' and 'useCov' are relevant here. See
estimateMissSBM()for details.
missSBM_collection$estimate()
method to launch the estimation of the collection of models
Arguments
controloptional list of parameters overriding the collection's stored control (set at construction by
estimateMissSBM(), see its details for the full list). DefaultNULLuses the stored control as-is.
missSBM_collection$estimate_chain()
alternative to estimate(): fits each model in increasing order of
number of blocks, initializing vBlocks[k] by splitting (see missSBM_fit's
split()/candidates_split()) the already-converged model at
vBlocks[k-1] instead of an independent, cold spectral clustering. Meant to reduce
VEM component collapse at higher numbers of blocks (see $degenerate), at the cost
of being sequential in the number of blocks (unlike estimate(), which fits every
model in parallel) – can be slower in wall-clock time with many workers available.
Falls back to this slot's own cold-started clustering (built at construction, same as
estimate() would use) whenever nothing is splittable along the chain.
Arguments
controloptional list of parameters overriding the collection's stored control (set at construction by
estimateMissSBM(), see its details for the full list). DefaultNULLuses the stored control as-is.
missSBM_collection$polish()
method to node-swap-polish every model in the collection (see
missSBM_fit's polish()); fixes individually misclassified nodes at each
model's own number of blocks, unlike explore() which searches across blocks.
Arguments
controloptional list of parameters overriding the collection's stored control (set at construction by
estimateMissSBM(), see its details for the full list). DefaultNULLuses the stored control as-is.
missSBM_collection$explore()
method for performing exploration of the ICL (split/merge search across
numbers of blocks, see missSBM_fit's candidates_split()/candidates_merge()).
Uses the collection's stored control by default; iterates lets the caller override
it for this call only, without altering the stored control – handy to alternate
explore()/polish() calls without having to reconstruct a full control list
each time. iterates <= 0 is a no-op.
Arguments
controloptional list of parameters overriding the collection's stored control (set at construction by
estimateMissSBM(), see its details for the full list). DefaultNULLuses the stored control as-is.iteratesoptional integer overriding
control$iteratesfor this call only.directioncharacter ("forward", "backward", "both" or "none") controlling which directions are searched. Default "both".
missSBM_collection$plot()
plot method for missSBM_collection
Usage
missSBM_collection$plot(type = c("icl", "elbo", "monitoring"))Examples
## Uncomment to set parallel computing with future
## future::plan("multicore", workers = 2)
## Sample 75% of dyads in French political Blogosphere's network data
adjacencyMatrix <- missSBM::frenchblog2007 %>%
igraph::delete.vertices(1:100) %>%
igraph::as_adjacency_matrix() %>%
missSBM::observeNetwork(sampling = "dyad", parameters = 0.75)
#> Warning: `delete.vertices()` was deprecated in igraph 2.0.0.
#> ℹ Please use `delete_vertices()` instead.
collection <- estimateMissSBM(adjacencyMatrix, 1:5, sampling = "dyad")
#>
#>
#> Adjusting Variational EM for Stochastic Block Model
#>
#> Imputation assumes a 'dyad' network-sampling process
#>
#> Initialization of 5 model(s).
#> Performing VEM inference
#> Model with 2 blocks.
Model with 1 blocks.
Model with 5 blocks.
Model with 4 blocks.
Model with 3 blocks.
Polishing (node-swap)
#>
#> Looking for better solutions
#> Pass 1 Going forward ++++
Pass 1 Going backward ++++
class(collection)
#> [1] "missSBM_collection" "R6"