# Host Heterogeneity - Practice

## Overview

This app allows you to explore a simple SIR model with 2 types of hosts. Read about the model in the “Model” tab. Then do the tasks described in the “What to do” tab.

This app assumes that you have worked through several of the previous ones, e.g. that you are familiar with the reproductive number and how it is computed.

### Learning Objectives

- Know the most common host characteristics that lead to heterogeneity
- Understand how heterogeneity might impact ID dynamics
- Evaluate the need to account for heterogeneity depending on setting
- Understand how different types of heterogeneity affect ID control

## The Model

### Model Overview

This model tracks susceptibles, infected and recovered of 2 different types. Think of those types as e.g. males/females, children/adults, etc.

The following compartments are included, twice for each type (i=1,2):

- Si - uninfected and susceptible individuals
- Ii - individuals who are infected and infectious.
- Ri - recovered/removed individuals. Those individuals have recovered and are immune.

The included processes/mechanisms are the following:

- Susceptible individuals of type 1 or 2 can become infected by infected hosts of type 1 or 2. The rates at which infections to type 1/2 from type 1/2 occur are given by the parameters b11, b12, b21 and b22.
- Infected hosts of type 1/2 recover after some time at rates g1/g2.
- Recovered individuals are initially immune to reinfection. They can lose their immunity at rates w1/w2 and return to the susceptible state.

### Model Implementation

The flow diagram and equations describe the model implemented in this app:

Model diagram.

\[\dot S_1 = - S_1 (b_{11} I_1 + b_{12} I_2) + w_1 R_1 \] \[\dot I_1 = S_1 (b_{11} I_1 + b_{12} I_2) - g_1 I_1 \] \[\dot R_1 = g_1 I_1 - w_1 R_1 \] \[\dot S_2 = - S_2 (b_{21} I_1 + b_{22} I_2) + w_2 R_2 \] \[\dot I_2 = S_2 (b_{21} I_1 + b_{22} I_2) - g_2 I_2 \] \[\dot R_2 = g_2 I_2 - w_2 R_2 \]

### Notation Comment

It might be worth saying something about the transmission terms. I generally use a single subscript to describe transmission from a group, e.g. bA for transmission/infectiousness of asymptomatic. If there are multiple groups that can be susceptible and infectious, a common notation is to start with the receiving group first, then the sending/transmitting group, e.g. if susceptible individuals of type 1 are infected by individuals of type 2, most authors write b12. I follow this convention. Note however that it is equally ok to use b12 to mean that infected type 1 individuals transmit to susceptible type 2 individuals. I actually like this sender first perspective/notation better, and used it originally, but switched to stick with the convention used in the main introductory textbooks on this topic.

In general you need to read papers/model descriptions carefully, and hopefully the authors do a good job explaining exactly what is meant. Such that there is no confusion. Just read carefully every time and don’t jump to conclusions based on what you have seen before or what you think it means.

## What to do

The tasks below are described in a way that assumes everything is in units of MONTHS (rate parameters, therefore, have units of inverse months). If any quantity is not given in those units, you need to convert it first (e.g. if it says a year, you need to convert it to 12 months).

### Task 1

Start with 1000 susceptible hosts and 1 infected host of type one. 200 susceptible hosts and 1 infected host of type two. Simulation duration approximately 5 years. Assume that transmission from host 1 to host 1 is b11 = 0.002, from host 2 to host 2 is b22 = 0.01. No transmission from one host type to the other b12 = 0 and b21 = 0. Assume that the duration of the infectious period is 1 month long for both types of hosts (i.e. same recovery rate). No waning immunity. Run the simulation and ensure you get outbreaks in both populations with approximately 20% susceptibles left at the end.

Record

- Number susceptible of type 1 left at end of simulation

- Number susceptible of type 2 left at end of simulation

### Task 2

Set b22 = 0.02. Rest as before. Run the simulation. You should get the same outbreak as before among type 1 hosts, a larger outbreak among type 2 hosts. For our current choice of parameters, more specifically the transmission rates, it is ok to define and compute separate R0 for the two populations. Contemplate why it is ok to do so and compute the two R0 values. Use what you learned about R0 to compute a theoretical value, then check with the simulation using the final size equation.

Record

- R0 for type 1 hosts

- R0 for type 2 hosts

### Task 3

Set b11 = 0.001. Rest as in previous task. Run the simulation. You should get the same outbreak as before among type 2 hosts, but no real outbreak among type 1 hosts (though a few infections will occur). Compute the R0 values for these settings and convince yourself that the theoretical values and simulation results agree.

Record

- R0 for type 1 hosts

- R0 for type 2 hosts

### Task 4

Now set the transmission rate to host 1 from host 2 b12 = 0.001. Everything else unchanged. Run the simulation. You should see an outbreak in both populations. This is an example of a (small) core group driving an outbreak in the larger group. Now that the two groups interact, the simple individual equations for R0 do not apply anymore. One can compute an overall R0 for the joint populations, but that is a bit involved and beyond what we want to do here. For more details on that, see e.g. (Keeling and Rohani 2007).

Record

- Number susceptible of type 1 left at end of simulation

- Number susceptible of type 2 left at end of simulation

### Task 5

Let’s test the idea that the small core group is driving the outbreaks and it’s not just because we introduced cross-transmission and that feature alone led to outbreaks in both populations. To do so, set b12 to 0 and instead set b21 = 0.001. If it was just due to cross-transmission, we should probably see outbreaks in both populations. If it was a more infectious/transmissible (i.e. higher R0) core-group driving the outbreak in the less transmissible group, we should not see an outbreak. Run the simulation and interpret the results.

Record

- Nothing

### Task 6

Now set transmission rates to b11 = b22 = 0 and b12 = 0.01, b21 = 0.002. Note that these are the same values for the transmission terms as in task 1, but we now there is no transmission among individuals of the same type and non-zero transmission between types. Contemplate what you expect to see, run the simulation, see if your expectations are confirmed. Compare the results to those from task 1.

Record

- Number susceptible of type 1 left at end of simulation

- Number susceptible of type 2 left at end of simulation

### Task 7

Note that things are not symmetric here when it comes to values of cross-transmission. Explore this by switching the values for the cross-transmission terms, such that now b12 = 0.002, b21 = 0.01. Leave everything else as in the previous task. Run the simulation and compare the results to those from the previous task.

Record

- Number susceptible of type 1 left at end of simulation

- Number susceptible of type 2 left at end of simulation

### Task 8

You have previously encountered the idea that transmission occurs only between hosts of different types, namely in the vector-borne transmission app. There we thought of the different types as different species, e.g. humans and mosquitoes. But it could also be among different types of the same hosts. For instance this type of transmission could represent a sexually transmitted disease in a heterosexual population, with the 2 types of hosts being females and males. Many sexually transmitted infections do not produce life-long immunity, re-infection is possible and not uncommon. Let’s explore this. Set the number of susceptibles for both populations to 1000, 1 infected in each population. Set b12 = 0.002, b21 = 0.001. Set the other transmission terms to 0. Leave recovery rates as before. Then turn on waning immunity, assume it has an average duration of 5 months for each population (i.e. rates w1 and w2 need to be the inverse of 5 months). Run the simulation for 10 years. Confirm that you reach a steady state, with around 667 susceptible of type 1 at the end.

Record

- Number susceptible of type 2 left at end of simulation

### Task 9

In the previous task, the steady state values for S/I/R for the 2 populations were different. Think about why that is the case. Try to find the value for b21 for which the 2 populations reach the same steady state. Then explore different values for both transmission rates and see how that impact the outcomes. Consider what that means for a real infectious disease. Would you expect transmission rates to be the same or not? What does it depend on?

Record

- Value for b21 at which steady state values for both populations are the same.

### Task 10

Keep exploring. You can continue the exploration from the previous task by altering other parameters for the 2 types. You might for instance want to consider some real ID where accounting for 2 types of hosts is important, e.g. some type of STI. You can try to go to the literature and see if you can find parameter values for the ID of interest and explore potential patterns of that ID with the simulation.

Record

- Nothing

## Further Information

- This app (and all others) are structured such that the Shiny part (the graphical interface you see and the server-side function that goes with it) calls an underlying R script (or several) which runs the simulation for the model of interest and returns the results.
- For this app, the underlying function(s) running the simulation are called `simulate_Host_Heterogeneity_Model_ode`. You can call them directly, without going through the shiny app. Use the `help()` command for more information on how to use the functions directly. If you go that route, you need to use the results returned from this function and produce useful output (such as a plot) yourself.
- You can also download all simulator functions and modify them for your own purposes. Of course to modify these functions, you’ll need to do some coding.
- For examples on using the simulators directly and how to modify them, read the package vignette by typing `vignette('DSAIDE')` into the R console.
- For some more information dealing with host heterogeneity, see e.g. Lloyd-Smith et al. (2005).

### References

Beldomenico, Pablo M., and Michael Begon. 2010. “Disease Spread, Susceptibility and Infection Intensity: Vicious Circles?” Trends in Ecology & Evolution 25 (1): 21–27. https://doi.org/10.1016/j.tree.2009.06.015.
Keeling, Matt, and Pejman Rohani. 2007. Modeling Infectious Diseases in Humans and Animals. Princeton University Press.
Lloyd-Smith, J. O., S. J. Schreiber, P. E. Kopp, and W. M. Getz. 2005. “Superspreading and the Effect of Individual Variation on Disease Emergence.” Nature 438 (7066): 355–59. https://doi.org/10.1038/nature04153.
Yorke, J. A., H. W. Hethcote, and A. Nold. 1978. “Dynamics and Control of the Transmission of Gonorrhea.” Sex Transm Dis 5 (2): 51–56.