# Part 3: Multiple Runs

## Introduction

The purpose of the `run_multiple`

function is to run a specified number of simulations using the same model object. That is, this function makes it possible to compare model results across several separate and repeated simulations.

## The Principle Behind Multiple Runs

In statistics, the Law of Large Numbers ensures that as the sample size increases, the sample mean (average) of a random variable will converge to the population mean. The same principle applies when using multiple runs to simulate epidemiological models. As the number of `epiworldR`

simulations increases, the sample means of the reproductive number or model parameters, for example, will converge to their corresponding population means.

## Example: Simulating a SEIRCONN Model 500 Times

#### Setup and Running Model

To use the `run_multiple`

function in `epiworldR`

, create your `epiworldR_model`

of choice; in this case, the example uses a `SEIRCONN`

model for Measles, 10000 people, an initial prevalence of 0.0001 (0.01%), a contact rate of 2, probability of transmission 0.5, a total of 7 incubation days, and probability of recovery \(\frac{1}{7}\).

#### Generating a Saver

Next, generate a saver for the purpose of extracting the `total_hist`

and `reproductive`

information from the model object. Keep in mind that you can generate a saver for any metric compatible with the `make_saver`

function (see details section of the `make_saver`

help manual).

#### Running the Simulation

Now, use the `run_multiple`

function with the model object, number of desired days to run the simulation, number of simulations to run, the generated saver, and number of threads for parallel computing.

## Code

```
Starting multiple runs (500) using 4 thread(s)
_________________________________________________________________________
_________________________________________________________________________
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| done.
done.
```

#### Extracting Results

Using the `run_multiple_get_results`

function, extract the results from the model object that was simulated 500 times for comparison across simulations.

```
sim_num date nviruses state counts
1 1 0 1 Susceptible 4995
2 1 0 1 Exposed 5
3 1 0 1 Infected 0
4 1 0 1 Recovered 0
5 1 1 1 Susceptible 4995
6 1 1 1 Exposed 5
```

```
sim_num virus_id virus source source_exposure_date rt
1 1 0 Measles 237 50 0
2 1 0 Measles 440 50 0
3 1 0 Measles 494 50 0
4 1 0 Measles 708 50 0
5 1 0 Measles 1111 50 0
6 1 0 Measles 1373 50 0
```

#### Plotting

To plot the model parameters and reproductive numbers over time using boxplots, extract the results from the model object using `run_multiple_get_results`

. For this example, the dates are filtered to observe the model parameters over the first 20 days. Notice each boxplot in the below table represents the observed values from each of the 500 simulations for each date.

## Code

To view the a plot of the reproductive number over all 50 days for each of the 500 simulations, store the reproductive results to a new object using `run_multiple_get_results`

, then plot using the `plot`

function. Notice each source exposure date displays a boxplot representing the distribution of reproductive numbers across all 500 simulations for each date. As expected, the reproductive number on average, decreases over time.

## Exercise 1

Consider for this exercise that there is a Hepatitis A outbreak. Your goal is to observe the average reproductive number over 100 simulations. Using a `run_multiple`

simulation, what is the average reproductive number over the course of the first 20 days? Use a `SEIRCONN`

model with:

- n = 10000

- prevalence = 0.01

- contact_rate = 2

- transmission_rate = 0.5

- incubation_days = 2

- recovery_rate = \(\frac{1}{7}\)

General Steps:

1. Create `epiworldR_model`

2. Generate saver

3. Run `epiworldR_model`

4. Plot average reproductive number

## Exercise 2

Using the same `SEIRCONN`

model from exercise 1, simulate a vaccine intervention for the previous exercise’s Hepatitis A virus outbreak where 50% of individuals in the population will receive the vaccine on day 10. How then, does the average reproductive number behave over 20 days and 100 simulations? Assume the following parameters:

- susceptibility_reduction = .9

- transmission_reduction = .5

- recovery_enhancer = .5

- death_reduction = .9

General Steps:

1. Create tool

2. Use `globalaction_tool`

& `add_global_action`

3. Generate saver & `run_multiple`

4. Plot average reproductive number