tests/testthat/test-consistency-on-fully-observed-network.R

context("test-consistency-on-fully-observed-network")

library(igraph)

test_that("SimpleSBM_fit_missSBM and missSBMfit are coherent", {
  data("war")

  ## adjacency matrix without missing values
  A <- war$belligerent %>%  igraph::as_adj()

  ## coherence of partlyObservedNetwork object
  partlyObservedNet <- missSBM:::partlyObservedNetwork$new(A)
  expect_equal(ncol(A), partlyObservedNet$nbNodes)
  expect_equal(ncol(A) * (ncol(A) - 1)/2, partlyObservedNet$nbDyads)
  expect_equal(rep(TRUE, ncol(A)), partlyObservedNet$observedNodes)

  ## initial clustering
  Q <- 3
  cl0   <- partlyObservedNet$clustering(Q)[[1]]

  control <- list(threshold = 1e-4, maxIter = 200, fixPointIter = 5, trace = 1)

  ## using SBM_fit class
  my_SBM <- missSBM:::SimpleSBM_fit_noCov$new(partlyObservedNet, clusterInit = cl0)
  my_SBM$doVEM(control$threshold, control$maxIter, control$fixPointIter, control$trace)
  my_SBM$ICL

  ## using missSBM_fit class
  my_missSBM <- missSBM:::missSBM_fit$new(partlyObservedNet, netSampling = "node", clusterInit = cl0)
  my_missSBM$doVEM(control)
  my_missSBM$fittedSBM$ICL

  ## using missSBM_collection class
  my_collection <- missSBM_collection$new(
      partlyObservedNet  = partlyObservedNet,
      sampling    = "node",
      clusterInit = list(cl0),
      control = list(trace = TRUE, useCov = TRUE)
  )
  my_collection$estimate(control)

  expect_lt(my_SBM$ICL, my_collection$ICL) ## different due an addition df for sampling
})

Try the missSBM package in your browser

Any scripts or data that you put into this service are public.

missSBM documentation built on Oct. 24, 2023, 5:08 p.m.