library(BDAepimodel)
context("Constructing the vector of subject-level initial state probabilities")
test_that("The vector of subject-level initial state probabilities is correct",{
set.seed(52787)
popsize <- 5
r_meas_process <- function(state, meas_vars, params){
rbinom(n = nrow(state), size = state[,meas_vars], prob = params["rho"])
}
d_meas_process <- function(state, meas_vars, params, log = TRUE) {
dbinom(x = state[, paste(meas_vars, "_observed", sep="")], size = state[, paste(meas_vars, "_augmented", sep = "")], prob = params["rho"], log = log)
}
# R0 = 4, mu = 1, rho = 0.5, p0 = 0.05
epimodel <- init_epimodel(obstimes = seq(0, 10, by = 0.5),
popsize = popsize,
states = c("S", "I", "R"),
params = c(beta = rnorm(1, 0.5, 1e-6), mu = rnorm(1, 1, 1e-6), rho = 0.5, S0 = 0.7, I0 = 0.2, R0 = 0.1),
rates = c("beta * I", "mu"),
flow = matrix(c(-1, 1, 0, 0, -1, 1), ncol = 3, byrow = T),
meas_vars = "I",
r_meas_process = r_meas_process,
d_meas_process = d_meas_process)
epimodel <- simulate_epimodel(epimodel = epimodel, lump = TRUE, trim = TRUE)
.epimodel <- list2env(epimodel, parent = emptyenv(), hash = TRUE)
.epimodel$unmeasured_vars <- setdiff(.epimodel$states, .epimodel$meas_vars)
.epimodel$num_unmeasured <- length(.epimodel$unmeasured_vars)
.epimodel$num_measured <- length(.epimodel$meas_vars)
.epimodel$num_states <- length(.epimodel$states)
expect_equal(unname(build_initdist(.epimodel)), c(0.7, 0.2, 0.1))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.