Description Usage Arguments Details Value Examples
View source: R/simulate-agents.R
Simulate an agent-based model for given state-to-state transfers
1 2 3 4 5 6 7 8 9 10 11 | simulate_agents(
trans_mat,
init_vals,
par_vals,
max_T,
n_sims,
birth_dates = NULL,
birth_states = NULL,
verbose = TRUE,
out_format = "wide"
)
|
trans_mat |
TBD matrix of size KxK where K is the total number of states (including death and excluding birth) |
init_vals |
vector of length K corresponding to the initial values in each state. This will be over-ridden by birth_dates and birth_states if those are not NULL. |
par_vals |
vector of named parameters and their values |
max_T |
total number of discrete time steps |
n_sims |
number of simulations to run |
birth_dates |
vector of size N, the maximum number of agents where each entry is the 'birth' of the agent into the system |
birth_states |
which state an agent begins when born into the system |
verbose |
logical to print progress |
out_format |
Format of the output data frame. Wide corresponds to one row to each agent and "long" corresponds to one row being a state change. Generally, 'wide' is more readable and slightly easier to use with other EpiCompare functions. However, With the 'wide' format, there is a problem when agents can enter a state more than once. This will trigger an error. |
A (fairly) generic, simple agent-based model based on multinomial/categorical draws to transfer from state to state. Although the function can support a non-constant population, it does not support random births, they must be pre-specified. Random deaths may be supported by adding a compartment for them. Please see the 'basic-abm' vignette for more details on usage.
a data frame with the following columns
unique ID of agent that can be linked through simulations
time between 0 and max_T
integer of the state the agent goes to at that time
name of state corresponding to the integer
simulation number
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ## SI example
## In this example, agents start out susceptible and then become infected
trans_mat <- matrix(c("X0 * (1 - X1 * par1/N)", "X0 * X1 * par1 / N",
"0", "X1"), byrow = TRUE, nrow = 2)
rownames(trans_mat) <- c("S", "I")
init_vals <- c(999, 1)
par_vals <- c(par1 = .01)
max_T <- 100
n_sims <- 5
abm <- simulate_agents(trans_mat,
init_vals,
par_vals,
max_T,n_sims,
verbose = FALSE)
head(abm)
table(abm$I)
library(ggplot2)
library(dplyr)
abm %>% dplyr::group_by(sim) %>%
agents_to_aggregate(states = I) %>%
ggplot(aes( x= t, y = X1, group = sim, col = factor(sim))) +
geom_line()
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.