## Setup an SIR model to use in the simulation
model_seed <- 122
model_sir <- ModelSIR(name = "COVID-19", prevalence = .1,
transmission_rate = .9, recovery_rate = .3)
agents_smallworld(
model_sir,
n = 1000,
k = 5,
d = FALSE,
p = 0.01
)
verbose_off(model_sir)
run(model_sir, ndays = 50, seed = model_seed)
## Setup LFMCMC
# Extract the observed data from the model
obs_data <- get_today_total(model_sir)
# Define the simulation function
simfun <- function(params, lfmcmc_obj) {
set_param(model_sir, "Recovery rate", params[1])
set_param(model_sir, "Transmission rate", params[2])
run(model_sir, ndays = 50)
res <- get_today_total(model_sir)
return(res)
}
# Define the summary function
sumfun <- function(dat, lfmcmc_obj) {
return(dat)
}
# Create the LFMCMC model
lfmcmc_model <- LFMCMC(model_sir) |>
set_simulation_fun(simfun) |>
set_summary_fun(sumfun) |>
use_proposal_norm_reflective() |>
use_kernel_fun_gaussian() |>
set_observed_data(obs_data)
## Run LFMCMC simulation
# Set initial parameters
par0 <- c(0.1, 0.5)
n_samp <- 2000
epsil <- 1.0
# Run the LFMCMC simulation
verbose_off(lfmcmc_model)
run_lfmcmc(
lfmcmc = lfmcmc_model,
params_init = par0,
n_samples = n_samp,
epsilon = epsil,
seed = model_seed
)
# Print the results
set_stats_names(lfmcmc_model, get_states(model_sir))
set_params_names(lfmcmc_model, c("Immune recovery", "Infectiousness"))
print(lfmcmc_model)
get_mean_stats(lfmcmc_model)
get_mean_params(lfmcmc_model)
Run the code above in your browser using DataLab