Major changes

  • missSBM_fit now exposes split(), merge(), candidates_split() and candidates_merge() as instance methods, previously inlined in missSBM_collection’s exploration logic; same search algorithm, now independently testable. RNG draws during exploration differ negligibly from before as a result (verified: same or marginally better ICL)
  • replace the NLopt/CCSAQ optimizer for the covariate connectivity parameters with a builtin Newton-Raphson solver (the M-step objective is concave, so it converges reliably in a handful of iterations); nloptr is no longer a dependency
  • profiled estimateMissSBM() and fixed several hot-path inefficiencies: avoidable dense * sparse promotion overhead, a redundant recomputation of the dense imputed-network matrix, and an ifelse() evaluating both of its branches unconditionally. Roughly 3x faster on our benchmark, bit-identical results
  • fix partlyObservedNetwork$imputation(): the fill value for missing dyads was biased low by including not-yet-imputed entries in its own computation. Known side effect: doubleStandardSampling_fit’s initial psi bootstrap can degenerate when the fill value exactly matches the empirical observed edge rate (refined away by the VEM loop that follows)

Minor changes

  • cap the number of merge candidates tried during backward exploration (control$maxMergeCandidates, default 30) instead of always trying every pair
  • fix a crash and a closed-form algebra bug in the “degree” sampling design; parameter recovery for this design can still be biased under heavy missingness (known limitation)
  • fix a consistency bug in missSBM_fit$doVEM()’s step-back: only the SBM was restored, not the sampling model or the current imputation
  • speed up getCovarArray() and kmeans_missSBM()’s seeding
  • remove unused src/utils.h
  • minor fix to comply with nlopt version 2.9.1 (NOCEDAL)
  • Tiny adaptation due to new Matrix version 1.4-2
  • fix for HTML5 in documentation, plus various typos
  • Fix linking problem with new version of nloptR (2.0.0)
  • Reference the JSS paper
  • less conservative tests to avoid random failure in CRAN checks
  • tiny improvements in partlyObservedNetwork (less storage)
  • now rely on future_lapply for parallel computing (plan to be set by the user)
  • faster model exploration (used to be called ‘smoothing’), now integrated by default in estimateMissSBM
  • Use sparse Matrices to encode 0 and NAs
  • complete rewriting of optimization routines (E and M steps) with C++ armadillo routines
  • Better initialization and embedded C++ kmeans implementation
  • important bug fix in MAR case
  • bug fix in inference on covariates
  • bug fixed in blockDyad-sampling
  • missSBM::SimpleSBM_fit_missSBM now inherits from from sbm::SimpleSBM rather than sbm::SimpleSBM_fit
  • change field ‘netMatrixtonetMatrix' to 'networkData’ to comply with new interface in sbm
  • defunct functions estimate, sample and simulate are no longer supported
  • changing interface after suggestion from JSS reviewers
  • updated documentation
  • interfacing with package sbm
    • change estimate to estimateMissSBM
    • change sample to observedNetwork
    • use sbm::sampleSimpleSBM instead of missSBM::simulate
    • export less R6 classes for simplification (internal use only)
  • some bug fixes
  • updated maintainer ( -> )
  • unexporting sampledNetwork, only use internally
  • merging prepare_data with estimate
  • enhanced documentation
  • moving ownership to großBM
  • added S3 methods for missSBM_fit, SBM_fit

significant changes:

  • decent vignette
  • faster tests
  • many bugs corrected
  • Added a NEWS.md file to track changes to the package.