tool {epiworldR} | R Documentation |
Tools in epiworld
Description
Tools are functions that affect how agents react to the virus. They can be used to simulate the effects of vaccination, isolation, and social distancing.
Usage
tool(
name,
prevalence,
as_proportion,
susceptibility_reduction,
transmission_reduction,
recovery_enhancer,
death_reduction
)
set_name_tool(tool, name)
get_name_tool(tool)
add_tool(model, tool, proportion)
rm_tool(model, tool_pos)
tool_fun_logit(vars, coefs, model)
set_susceptibility_reduction(tool, prob)
set_susceptibility_reduction_ptr(tool, model, param)
set_susceptibility_reduction_fun(tool, model, tfun)
set_transmission_reduction(tool, prob)
set_transmission_reduction_ptr(tool, model, param)
set_transmission_reduction_fun(tool, model, tfun)
set_recovery_enhancer(tool, prob)
set_recovery_enhancer_ptr(tool, model, param)
set_recovery_enhancer_fun(tool, model, tfun)
set_death_reduction(tool, prob)
set_death_reduction_ptr(tool, model, param)
set_death_reduction_fun(tool, model, tfun)
## S3 method for class 'epiworld_agents_tools'
print(x, max_print = 10, ...)
set_distribution_tool(tool, distfun)
distribute_tool_randomly(prevalence, as_proportion)
distribute_tool_to_set(agents_ids)
Arguments
name |
Name of the tool |
prevalence |
Numeric scalar. Prevalence of the tool. |
as_proportion |
Logical scalar. If |
susceptibility_reduction |
Numeric. Proportion it reduces susceptibility. |
transmission_reduction |
Numeric. Proportion it reduces transmission. |
recovery_enhancer |
Numeric. Proportion it improves recovery. |
death_reduction |
Numeric. Proportion it reduces probability of death.e |
tool |
An object of class |
model |
Model |
proportion |
Deprecated. |
tool_pos |
Positive integer. Index of the tool's position in the model. |
vars |
Integer vector. Indices (starting from 0) of the positions of the variables used to compute the logit probability. |
coefs |
Numeric vector. Of the same length of |
prob |
Numeric scalar. A probability (between zero and one). |
param |
Character scalar. Name of the parameter featured in |
tfun |
An object of class |
x |
An object of class |
max_print |
Numeric scalar. Maximum number of tools to print. |
... |
Currently ignored. |
distfun |
An object of class |
agents_ids |
Integer vector. Indices of the agents to which the tool will be assigned. |
Details
The name of the epiworld_tool
object can be manipulated with the functions
set_name_tool()
and get_name_tool()
.
The add_tool
function adds the specified tool to the model of class
epiworld_model with specified proportion.
In the case of set_susceptibility_reduction_ptr
, set_transmission_reduction_ptr
,
set_recovery_enhancer
, and
set_death_reduction_ptr
, the corresponding parameters are passed as a pointer to
the tool. The implication of using pointers is that the values will be
read directly from the model
object, so changes will be reflected.
The set_distribution_tool
function assigns a distribution function to the
specified tool of class epiworld_tool. The distribution function can be
created using the functions distribute_tool_randomly()
and
distribute_tool_to_set()
.
The distribute_tool_randomly
function creates a distribution function that
randomly assigns the tool to a proportion of the population.
The distribute_tool_to_set
function creates a distribution function that
assigns the tool to a set of agents.
Value
The
tool
function creates a tool of class epiworld_tool.
The
set_name_tool
function assigns a name to the tool of class epiworld_tool and returns the tool.
The
get_name_tool
function returns the name of the tool of class epiworld_tool.
The
rm_tool
function removes the specified tool from a model.
The
set_susceptibility_reduction
function assigns a probability reduction to the specified tool of class epiworld_tool.
The
set_transmission_reduction
function assigns a probability reduction to the specified tool of class epiworld_tool.
The
set_recovery_enhancer
function assigns a probability increase to the specified tool of class epiworld_tool.
The
set_death_reduction
function assigns a probability decrease to the specified tool of class epiworld_tool.
The
distribute_tool_randomly
function returns a distribution function of classepiworld_tool_distfun
.
The
distribute_tool_to_set
function returns a distribution function of classepiworld_tool_distfun
.
Examples
# Simple model
model_sirconn <- ModelSIRCONN(
name = "COVID-19",
n = 10000,
prevalence = 0.01,
contact_rate = 5,
transmission_rate = 0.4,
recovery_rate = 0.95
)
# Running and printing
run(model_sirconn, ndays = 100, seed = 1912)
plot(model_sirconn)
epitool <- tool(
name = "Vaccine",
prevalence = 0.5,
as_proportion = TRUE,
susceptibility_reduction = .9,
transmission_reduction = .5,
recovery_enhancer = .5,
death_reduction = .9
)
epitool
set_name_tool(epitool, 'Pfizer') # Assigning name to the tool
get_name_tool(epitool) # Returning the name of the tool
add_tool(model_sirconn, epitool)
run(model_sirconn, ndays = 100, seed = 1912)
model_sirconn
plot(model_sirconn)
# To declare a certain number of individuals with the tool
rm_tool(model_sirconn, 0) # Removing epitool from the model
# Setting prevalence to 0.1
set_distribution_tool(epitool, distribute_tool_randomly(0.1, TRUE))
add_tool(model_sirconn, epitool)
run(model_sirconn, ndays = 100, seed = 1912)
# Adjusting probabilities due to tool
set_susceptibility_reduction(epitool, 0.1) # Susceptibility reduction
set_transmission_reduction(epitool, 0.2) # Transmission reduction
set_recovery_enhancer(epitool, 0.15) # Probability increase of recovery
set_death_reduction(epitool, 0.05) # Probability reduction of death
rm_tool(model_sirconn, 0)
add_tool(model_sirconn, epitool)
run(model_sirconn, ndays = 100, seed = 1912) # Run model to view changes
# Using the logit function --------------
sir <- ModelSIR(
name = "COVID-19", prevalence = 0.01,
transmission_rate = 0.9, recovery_rate = 0.1
)
# Adding a small world population
agents_smallworld(
sir,
n = 10000,
k = 5,
d = FALSE,
p = .01
)
# Creating a tool
mask_wearing <- tool(
name = "Mask",
prevalence = 0.5,
as_proportion = TRUE,
susceptibility_reduction = 0.0,
transmission_reduction = 0.3, # Only transmission
recovery_enhancer = 0.0,
death_reduction = 0.0
)
add_tool(sir, mask_wearing)
run(sir, ndays = 50, seed = 11)
hist_0 <- get_hist_total(sir)
# And adding features
dat <- cbind(
female = sample.int(2, 10000, replace = TRUE) - 1,
x = rnorm(10000)
)
set_agents_data(sir, dat)
# Creating the logit function
tfun <- tool_fun_logit(
vars = c(0L, 1L),
coefs = c(-1, 1),
model = sir
)
# The infection prob is lower
hist(plogis(dat %*% rbind(.5,1)))
tfun # printing
set_susceptibility_reduction_fun(
tool = get_tool(sir, 0),
model = sir,
tfun = tfun
)
run(sir, ndays = 50, seed = 11)
hist_1 <- get_hist_total(sir)
op <- par(mfrow = c(1, 2))
plot(hist_0); abline(v = 30)
plot(hist_1); abline(v = 30)
par(op)