tests/testthat/test-SAMPLING-fit-with-covariates.R

context("test network sampling fit (Class networkSampling_fit and chidren)")

N_cov <- 300
M <- 4
source("utils_test.R", local = TRUE)

test_that("Parameter estimation in dyad-centered sampling with covariates", {

  sampler_undirected_cov$rNetwork(store = TRUE)

  ### Draw a SBM model (Bernoulli, undirected) with covariates
  intercept  <- .5

  adjMatrix  <- missSBM::observeNetwork(sampler_undirected_cov$networkData, "covar-dyad", covarParam, covariates = covarList_undirected, intercept = intercept)
  net <- missSBM:::partlyObservedNetwork$new(adjMatrix, covarList_undirected)

  fittedSampling <- missSBM:::covarDyadSampling_fit$new(net)
  expect_is(fittedSampling, "covarDyadSampling_fit")

  tolerance <- .1
  expect_equal(fittedSampling$df, 1 + length(covarParam))
  expect_equal(fittedSampling$penalty, log(net$nbDyads) * (1 + length(covarParam)) )
  expect_lt(fittedSampling$vExpec, 0)
})

test_that("Parameter estimation in dyad-centered sampling with covariates but ignoring them", {

  psi <- 0.8
  adjMatrix  <- missSBM::observeNetwork(sampler_undirected_cov$networkData, "dyad", psi, covariates = covarList_undirected)
  net <- missSBM:::partlyObservedNetwork$new(adjMatrix, covarList_undirected)

  fittedSampling <- missSBM:::dyadSampling_fit$new(net)
  expect_is(fittedSampling, "dyadSampling_fit")

  tolerance <- .1
  expect_lt(error(fittedSampling$parameters, psi), tolerance)
  expect_equal(fittedSampling$df, 1)
  expect_equal(fittedSampling$penalty, log(net$nbDyads))
  expect_lt(fittedSampling$vExpec, 0)
})

test_that("Parameter estimation in node-centered sampling with covariates", {

  sampler_undirected_cov_node$rNetwork(store = TRUE)

  ### Draw a SBM model (Bernoulli, undirected) with covariates
  intercept  <- .5

  adjMatrix <- missSBM::observeNetwork(sampler_undirected_cov_node$networkData, "covar-node", covarParam, covariates = covarList_node, intercept = intercept, similarity = l1_similarity)
  partlyObservedNet <- missSBM:::partlyObservedNetwork$new(adjMatrix, covarList_node, l1_similarity)

  fittedSampling <- missSBM:::covarNodeSampling_fit$new(partlyObservedNet)
  expect_is(fittedSampling, "covarNodeSampling_fit")

  tolerance <- .3
  expect_equal(fittedSampling$df, 1 + length(covarParam))
  expect_equal(fittedSampling$penalty, log(N_cov) * (1 + length(covarParam)))
  expect_lt(fittedSampling$vExpec, 0)
})

test_that("Parameter estimation in node-centered sampling with covariates but ignoring them", {

  psi <- 0.9
  adjMatrix <- missSBM::observeNetwork(sampler_undirected_cov_node$networkData, "node", psi)
  partlyObservedNet <- missSBM:::partlyObservedNetwork$new(adjMatrix, covarList_node, l1_similarity)

  fittedSampling <- missSBM:::nodeSampling_fit$new(partlyObservedNet)
  expect_is(fittedSampling, "nodeSampling_fit")

  tolerance <- .1
  expect_lt(error(fittedSampling$parameters, psi), tolerance)
  expect_equal(fittedSampling$df, 1)
  expect_equal(fittedSampling$penalty, log(N_cov))
  expect_lt(fittedSampling$vExpec, 0)
})
jchiquet/missSBM documentation built on Oct. 25, 2023, 5:30 a.m.