context("Network model with param updater")
test_that("netsim with param updater", {
# Create the list.param.updaters
list.param.updaters <- list(
# this is one updater
list(
at = 10,
verbose = TRUE,
param = list(
inf.prob = 0.3,
act.rate = 0.3
)
),
# this is another updater
list(
at = 20,
verbose = TRUE,
param = list(
# inf.prob = function(x) plogis(qlogis(x) - log(10)),
# act.rate = function(x) plogis(qlogis(x) - log(10))
inf.prob = 0.01
)
)
)
# Create the list.control.updaters
list.control.updaters <- list(
# this is one updater
list(
at = 30,
verbose = TRUE,
control = list(
resimulate.network = FALSE
)
)
)
# Do not forget to add it to `param`
param <- param.net(
inf.prob = 0.1,
act.rate = 0.1,
.param.updater.list = list.param.updaters
)
# Enable the module in `control`
control <- control.net(
type = NULL, # must be NULL as we use a custom module
nsims = 1,
nsteps = 50,
verbose = FALSE,
infection.FUN = infection.net,
.control.updater.list = list.control.updaters,
resimulate.network = TRUE
)
nw <- network_initialize(n = 50)
nw <- set_vertex_attribute(nw, "race", rbinom(50, 1, 0.5))
est <- netest(
nw,
formation = ~edges,
target.stats = 25,
coef.diss = dissolution_coefs(~offset(edges), 10, 0),
verbose = FALSE
)
init <- init.net(i.num = 10)
expect_message(mod <- netsim(est, param, init, control))
# `resimulate.network` is turned of at step 30. We check that the number of
# observations in the "networkDynamic" object is < than 31 and not 50 (the
# number of timestep in the simulation)
n_obs <- length(
get.network.attribute(mod$network[[1]][[1]], 'net.obs.period')$observations
)
expect_lt(n_obs, 31)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.