| missSBM_fit | R Documentation |
The function estimateMissSBM() fits a collection of SBM for varying number of block.
Each fitted SBM is an instance of an R6 object with class missSBM_fit, 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(), print(), fitted(), predict(), plot().
fittedSBMthe fitted SBM with class SimpleSBM_fit_noCov, SimpleSBM_fit_withCov or
SimpleSBM_fit_MNAR inheriting from class sbm::SimpleSBM_fit
fittedSamplingthe fitted sampling, inheriting from class networkSampling and corresponding fits
imputedNetworkThe network data as a matrix with NAs values imputed with the current model
monitoringa list carrying information about the optimization process
occupiedBlocksthe number of classes actually occupied by at least one node; can be
less than fittedSBM$nbBlocks for an over-specified fit whose VEM has collapsed one
or more classes (see repair())
degenerateTRUE if occupiedBlocks < fittedSBM$nbBlocks
entropyImputedthe entropy of the distribution of the imputed dyads
entropythe entropy due to the distribution of the imputed dyads and of the clustering
vExpecdouble: variational expectation of the complete log-likelihood
penaltydouble, value of the penalty term in ICL
loglikdouble: approximation of the log-likelihood (variational lower bound) reached
ICLdouble: value of the integrated classification log-likelihood
missSBM_fit$new()constructor for networkSampling
missSBM_fit$new(partlyObservedNet, netSampling, clusterInit, useCov = TRUE)
partlyObservedNetAn object with class partlyObservedNetwork.
netSamplingThe 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 vector with size ncol(adjacencyMatrix), providing a user-defined clustering. The number of blocks is deduced from the number of levels in with clusterInit.
useCovlogical. If covariates are present in partlyObservedNet, should they be used for the inference or of the network sampling design, or just for the SBM inference? default is TRUE.
missSBM_fit$doVEM()a method to perform inference of the current missSBM fit with variational EM
missSBM_fit$doVEM( control = list(threshold = 0.01, maxIter = 100, fixPointIter = 3, trace = TRUE) )
controla list of VEM control parameters (see estimateMissSBM())
missSBM_fit$split()clone of the current fit after splitting cluster index in two, via a
spectral bipartition of the sub-network it induces. Builds but does not fit the
candidate (see candidates_split()).
missSBM_fit$split(index, in_place = FALSE, base_net = NULL)
indexindex (integer) of the cluster to split
in_placereplace self's own fit (TRUE) or return a new object
(FALSE, the default)?
base_netoptional precomputed network to bipartition (as built internally at the
top of this method); lets candidates_split() avoid recomputing it once per
candidate.
a new missSBM_fit with one more block, or NULL if index cannot
be split (its induced sub-network has zero variance)
missSBM_fit$candidates_split()generate and cheaply trial-fit candidates obtained by splitting each
splittable cluster in two (see split()). A cluster is splittable if it has at
least 4 members and non-zero variance in its induced sub-network.
missSBM_fit$candidates_split( control = list(threshold = 0.01, maxIter = 100, fixPointIter = 3, trace = TRUE), trial_niter = 2 )
controla list of VEM control parameters (see estimateMissSBM()); maxIter is overridden by trial_niter
trial_niternumber of VEM iterations used for the trial fits. Default is 2.
a list of trial-fitted missSBM_fit candidates (one per splittable cluster)
missSBM_fit$merge()clone of the current fit after merging clusters indices[1] and
indices[2] into one. Builds but does not fit the candidate (see
candidates_merge()).
missSBM_fit$merge(indices, in_place = FALSE)
indicesindices (couple of integers) of the clusters to merge
in_placereplace self's own fit (TRUE) or return a new object
(FALSE, the default)?
a new missSBM_fit with one fewer block
missSBM_fit$candidates_merge()generate and cheaply trial-fit candidates obtained by merging pairs of
clusters (see merge()). Beyond max_candidates pairs (quadratic in the
number of blocks), only the most similar-connectivity pairs are tried.
missSBM_fit$candidates_merge( control = list(threshold = 0.01, maxIter = 100, fixPointIter = 3, trace = TRUE), max_candidates = 30, trial_niter = 2 )
controla list of VEM control parameters (see estimateMissSBM()); maxIter is overridden by trial_niter
max_candidatescap on the number of pairs tried. Default is 30.
trial_niternumber of VEM iterations used for the trial fits. Default is 2.
a list of trial-fitted missSBM_fit candidates
missSBM_fit$repair()recovers a degenerate fit (fewer occupied classes than its structural
nbBlocks, e.g. after a VEM component collapse) by filling the empty classes (see
repair_empty_classes()) and refitting the full VEM. Mutates self in place;
a no-op if the fit is not degenerate.
missSBM_fit$repair( control = list(threshold = 0.01, maxIter = 100, fixPointIter = 3, trace = TRUE) )
controla list of VEM control parameters (see estimateMissSBM())
invisibly, self
missSBM_fit$polish()discrete node-swap polishing (Kernighan-Lin / greedy-ICL style): after VEM
convergence, tau is near-hard and its fixed point cannot relocate a single
misclassified node (only split()/merge() fix group-level mistakes). Each
sweep computes, for every node, the closed-form complete-data log-likelihood gain of
moving it to its best alternative class (theta/pi held fixed), applies the improving,
non-class-emptying moves, then runs a full VEM to resettle. Stops as soon as a sweep
fails to improve the ICL, mutates self in place, and never leaves the ICL worse
than before the call.
missSBM_fit$polish( control = list(threshold = 0.01, maxIter = 100, fixPointIter = 3, trace = TRUE), max_sweeps = 10 )
controla list of VEM control parameters (see estimateMissSBM())
max_sweepsmaximum number of swap sweeps. Default is 10.
invisibly, self
missSBM_fit$show()show method for missSBM_fit
missSBM_fit$show()
missSBM_fit$print()User friendly print method
missSBM_fit$print()
missSBM_fit$clone()The objects of this class are cloneable with this method.
missSBM_fit$clone(deep = FALSE)
deepWhether to make a deep clone.
## Sample 75% of dyads in French political Blogosphere's network data
adjMatrix <- missSBM::frenchblog2007 %>%
igraph::as_adjacency_matrix(sparse = FALSE) %>%
missSBM::observeNetwork(sampling = "dyad", parameters = 0.75)
collection <- estimateMissSBM(adjMatrix, 3:5, sampling = "dyad")
my_missSBM_fit <- collection$bestModel
class(my_missSBM_fit)
plot(my_missSBM_fit, "imputed")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.