context("deaths")
test_that("one risk group: no deaths occur with zero case fatality ratio;
the number of deaths with a CFR of 1 is equal to
the number of recovereds with a CFR of 0", {
# single country, single age group, single risk group, all people in S
## LIFE HISTORY PARAMETER INPUTS
## R_0, recovery time and latent period
life_history_params <- list(R0=1.8, TR=2.6, LP = 1.5)
## vaccine efficacy and initial vaccinated proportion
# this example roughly brings effective R to 1.2
vax_params <- list(efficacy = 1 - 1.2/1.8, propn_vax0 = 0)
## example parameters for vaccine production (see cum_vax_pool_func_closure)
vax_production_params <- list(dummy = 0)
## example parameters for vaccine allocation
vax_allocation_params <- list(priorities = NULL)
popn_size <- 100000
n_ages <- 1
age_propns <- 1
n_countries <- 1
n_riskgroups <- 1
risk_propns <- diag(1)
risk_factors <- 1
tmp <- setup_populations(popn_size,n_countries,age_propns,
risk_propns, risk_factors)
X <- tmp$X
labels <- tmp$labels
K <- diag(1)
latitudes <- 0
C3 <- diag(1)
user_specified_vax_alloc_func <- function(sum_age_risk_func,
travel_matrix,
vax_allocation_params,
S, E, I, R, vax_pool) {
return(0)
}
user_specified_cum_vax_pool_func <- function(vax_production_params, t) {
return(0)
}
## process the vaccine production function
cum_vax_pool_func <- cum_vax_pool_func_closure(user_specified_cum_vax_pool_func, vax_production_params)
## process the vaccine allocation function
vax_allocation_func <- vaccine_allocation_closure(user_specified_vax_alloc_func, K, vax_allocation_params, labels)
seed_vec <- 10
## gather simulation parameters
sim_params <- list(n_countries=n_countries,
n_ages=n_ages,
n_riskgroups=n_riskgroups,
seed_vec = seed_vec)
simulation_flags <- list(ageMixing=TRUE,
riskGroups=TRUE,
normaliseTravel=TRUE,
spatialCoupling=TRUE,
real_data = FALSE,
country_specific_contact = FALSE,
seasonal = FALSE,
rng_seed = 0)
case_fatality_ratio_vec <- 0
approx_final_size_distribution <- calc_approx_final_size_distribution(life_history_params$R0, popn_size)
set.seed(1)
## run simulation
## run simulation for tmax days
## tdiv timesteps per day
args <- list("simulation_flags" = simulation_flags,
"life_history_params" = life_history_params,
"vax_params" = vax_params,
"sim_params" = sim_params,
"case_fatality_ratio_vec" = case_fatality_ratio_vec,
"X" = X,
"labels" = labels,
"C3" = C3,
"K" = K,
"latitudes" = latitudes,
"cum_vax_pool_func" = cum_vax_pool_func,
"vax_allocation_func" = vax_allocation_func,
"tmax" = 100,
"tdiv" = 24,
"vax_alloc_period" = 24 * 7)
deaths_recovered <- do.call(run_and_get_deaths_recovered, args)
expect_equal(sum(deaths_recovered$deaths), 0)
args$case_fatality_ratio_vec <- 1
set.seed(1)
## run simulation
deaths_recovered2 <- do.call(run_and_get_deaths_recovered, args)
expect_equal(sum(deaths_recovered2$recovered), 0)
expect_equal(deaths_recovered$recovered, deaths_recovered2$deaths)
args$case_fatality_ratio_vec <- .5
n_replicates <- 10
deaths_recovered3 <- parallel_wrapper(seq_len(n_replicates), function(x) do.call(run_and_get_deaths_recovered, args))
z_test_result <- z_test(unlist(deaths_recovered3),
mu = approx_final_size_distribution$mu / 2,
sigma = approx_final_size_distribution$sigma / 2)
print_z_test_result(z_test_result)
})
test_that("two risk groups: no deaths occur with zero case fatality ratio;
the number of deaths with a CFR of 1 is equal to
the number of recovereds with a CFR of 0",{
# single country, single age group, two risk groups, all people in S
## LIFE HISTORY PARAMETER INPUTS
## R_0, recovery time and latent period
life_history_params <- list(R0=1.8, TR=2.6, LP = 1.5)
## vaccine efficacy and initial vaccinated proportion
# this example roughly brings effective R to 1.2
vax_params <- list(efficacy = 1 - 1.2/1.8, propn_vax0 = 0)
## example parameters for vaccine production (see cum_vax_pool_func_closure)
vax_production_params <- list(dummy = 0)
## example parameters for vaccine allocation
vax_allocation_params <- list(priorities = NULL)
popn_size <- 100000
n_ages <- 1
age_propns <- 1
n_countries <- 1
risk_propns <- matrix(c(.3,.7),nrow = n_countries)
n_riskgroups <- length(risk_propns)
risk_factors <- rep(1, n_riskgroups)
age_specific_riskgroup_factors <- matrix(rep(risk_factors,each=n_ages),
ncol=n_riskgroups)
tmp <- setup_populations(popn_size,n_countries,age_propns,
risk_propns, risk_factors)
X <- tmp$X
labels <- tmp$labels
K <- diag(n_countries)
latitudes <- double(n_countries)
C1 <- diag(n_countries)
risk <- c(t(age_specific_riskgroup_factors))
risk_matrix <- t(kronecker(risk,matrix(1,1,n_riskgroups*n_ages)))
C2 <- kronecker(C1, matrix(1,n_riskgroups,n_riskgroups))
C3 <- C2*risk_matrix
user_specified_vax_alloc_func <- function(sum_age_risk_func,
travel_matrix,
vax_allocation_params,
S, E, I, R, vax_pool) {
return(0)
}
user_specified_cum_vax_pool_func <- function(vax_production_params, t) {
return(0)
}
## process the vaccine production function
cum_vax_pool_func <- cum_vax_pool_func_closure(user_specified_cum_vax_pool_func, vax_production_params)
## process the vaccine allocation function
vax_allocation_func <- vaccine_allocation_closure(user_specified_vax_alloc_func, K, vax_allocation_params, labels)
seed_vec <- c(10,0)
## gather simulation parameters
sim_params <- list(n_countries=n_countries,
n_ages=n_ages,
n_riskgroups=n_riskgroups,
seed_vec = seed_vec)
simulation_flags <- list(ageMixing=TRUE,
riskGroups=TRUE,
normaliseTravel=TRUE,
spatialCoupling=TRUE,
real_data = FALSE,
country_specific_contact = FALSE,
seasonal = FALSE,
rng_seed = 0)
case_fatality_ratio_vec <- c(0,0)
args <- list("simulation_flags" = simulation_flags,
"life_history_params" = life_history_params,
"vax_params" = vax_params,
"sim_params" = sim_params,
"case_fatality_ratio_vec" = case_fatality_ratio_vec,
"X" = X,
"labels" = labels,
"C3" = C3,
"K" = K,
"latitudes" = latitudes,
"cum_vax_pool_func" = cum_vax_pool_func,
"vax_allocation_func" = vax_allocation_func,
"tmax" = 100,
"tdiv" = 24,
"vax_alloc_period" = 24 * 7)
set.seed(1)
## run simulation
deaths_recovered <- do.call(run_and_get_deaths_recovered, args)
expect_equal(sum(deaths_recovered$deaths), 0)
args$case_fatality_ratio_vec <- c(1,1)
set.seed(1)
## run simulation
deaths_recovered2 <- do.call(run_and_get_deaths_recovered, args)
expect_equal(sum(deaths_recovered2$recovered), 0)
expect_equal(deaths_recovered$recovered, deaths_recovered2$deaths)
args$case_fatality_ratio_vec <- c(0,1)
deaths_recovered3 <- do.call(run_and_get_deaths_recovered, args)
expect_equal(deaths_recovered3$deaths[1], 0)
expect_equal(deaths_recovered3$recovered[2], 0)
args$case_fatality_ratio_vec <- c(.4,.6)
n_replicates <- 10
deaths_recovered3 <- parallel_wrapper(seq_len(n_replicates), function(x) do.call(run_and_get_deaths_recovered, args))
deaths <- vapply(deaths_recovered3, function(x) x[["deaths"]], double(n_riskgroups))
approx_final_size_distribution <- calc_approx_final_size_distribution(life_history_params$R0, popn_size)
z_test_result <- lapply(seq_len(n_riskgroups), function(x) z_test(deaths[x, ],
approx_final_size_distribution$mu * args$case_fatality_ratio_vec[x] * risk_propns[x],
approx_final_size_distribution$sigma * args$case_fatality_ratio_vec[x] * risk_propns[x]))
recovered <- vapply(deaths_recovered3, function(x) x[["recovered"]], double(n_riskgroups))
z_test_result2 <- lapply(seq_len(n_riskgroups), function(x) z_test(recovered[x, ],
approx_final_size_distribution$mu * (1 - args$case_fatality_ratio_vec[x]) * risk_propns[x],
approx_final_size_distribution$sigma * (1 - args$case_fatality_ratio_vec[x]) * risk_propns[x]))
lapply(c(z_test_result, z_test_result2), function(x) print_z_test_result(x, 4))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.