Explore the role of public health strategies in managing disease spread, using compartmental models
Strengthen understanding of the meaning of \(\mathcal{R}_0\text{,}\) which involves a single Infectious person in an otherwise entirely Susceptible population
Determine the threshold for what percentage of vaccine coverage reduces transmission enough so that the number of Infectious cases does not rise
In the first few chapters of this text, we have introduced the basic “hows” for compartmental modeling, as well as a few of the “whys”. Now, we explore the “whys” even further.
One of the most significant ways to use models is for trying and comparing possible public health strategies in simulations before actually carrying them out with real people. Professional-level models can be quite detailed and depend on large amounts of data, and compartmental models are just one of the many types of models implemented. In this chapter, we work with one commonly used strategy: vaccination. 1
Vaccination is a widely used public health strategy. Yet the author of this text recognizes that reader thoughts on vaccines may vary for many reasons. As mentioned way back in the “To Students” preface, “I will not tell you how to think.” Instead, the goal of showing vaccines in models is to demonstrate some of the ways we can use models to try different scenarios. Readers can and should continue to think about their own ethics and experiences when interpreting and discussing models
Begin in Exploration 6.1 by adjusting the initial number of Susceptibles in a model, with the goal of reducing the occurrence of new infections.
Exploration6.1.Reducing New Infections.
This exploration seeks to reduce the number of new infections in the SIR model from Activity 4.5 by changing the initial numbers of people in the Susceptible and Removed compartments. For reference, here are the equations of the model:
\begin{align*}
\frac{dS}{dt} \amp = - \beta S I \\
\frac{dI}{dt} \amp = \beta S I - \gamma I \\
\frac{dR}{dt} \amp = \gamma I.
\end{align*}
This change to the model reflects a concept we have observed in multiple chapters so far, from the Zombie Game to the definition of \(\mathcal{R}_0\) as applying to a population that is nearly entirely Susceptible. In these contexts, we have seen that as the number of Susceptible people falls over the course of an outbreak, the outbreak can slow down and eventually stop. We therefore try starting our model simulation by using the terms \(p\) and \((1-p)\) to split the initial population across the S and R compartments.
Work through the parts of this exploration to build understanding of \(p\) and \((1-p)\) and to determine the possible numerical values for \(p\) and \((1-p)\text{.}\)
(a)
Read the Python code below. In line 17, the initial conditions \(S(0)\text{,}\)\(I(0)\text{,}\) and \(R(0)\) set \(I(0)=1\) but use \((1-p)\) and \(p\) to split up the rest of the population between the S and R compartments. We restrict the possible values of \(p\) so that it must be true that \(0 \leq p \leq 1\text{.}\)
After reading and evaluating the Python code, respond to the questions that follow.
Given the restriction that \(0 \leq p \leq 1\text{,}\) what is the range of possible values for the term \((1-p)\text{?}\)
Notice that we set \(S(0)=1999*(1-p)\) and \(R(0)=1999*p\text{.}\) Try letting \(p=0.2\) and \(p=0.5\text{.}\) In each case, compute how many Susceptible and Removed people we would have at the start of the simulation. For each of these values of \(p\text{,}\) what is the value of \(S(0)+R(0)\text{?}\)
(b)
These questions help us see trends in the model’s behavior when we change \(p\text{.}\) Think logically and mathematically about your answers, and use the Python code freely to experiment with \(p\text{.}\) To see the full scope of model behavior as you change \(p\) in the SIR model, you may wish to change the time range, remove the # sign in lines 23 or 25 so you can see the graphs of the Susceptible or Removed populations, or make other changes to the code.
Compared with starting the model with \(S(0)=1999\) and \(R(0)=0\text{,}\) what sorts of effects do you see when the value of \(p\) is relatively small, that is, \(p\) is just above \(0\text{?}\) In contrast, what sorts of effects do you see when the value of \(p\) is relatively large, that is, \(p\) is just below \(1\text{?}\)
What can you say about the boundary values of \(p\text{?}\) That is, what sorts of effects do you see on the SIR model when \(p=0\) or when \(p=1\text{?}\)
As the value of \(p\) increases from \(0\) to \(1\text{,}\) passing through several values in between, what observations can you make about the output of the SIR model?
Section6.1Determining a Threshold Vaccine Level
The modeling in this section focuses on reducing transmission of a disease through the use of vaccines. We use the values \(p\) and \((1-p)\) from Exploration 6.1, along with the concept of \(\mathcal{R}_0\) from Chapter 5, to demonstrate the effect of vaccines on the number of people who ever become Infectious in a disease outbreak.
As a reminder, the basic reproduction number\(\mathcal{R}_0\) is the average number of new infections caused by one infectious person in an otherwise entirely susceptible population. This means that \(\mathcal{R}_0\) is not a number we can use to directly describe a population that has been vaccinated against a disease, since a vaccinated population is not entirely susceptible. Instead, we introduce an effective reproduction number \(\mathcal{R}_{\text{eff}}\text{,}\) which is the average number of new infections caused by one infectious person in a population that may not be entirely susceptible, such as a population that has had access to vaccination. One way to pronounce the symbol \(\mathcal{R}_{\text{eff}}\) is “R effective”.
We cannot change the intrinsic value of \(\mathcal{R}_0\text{,}\) but with vaccination, we can work toward the goal of having \(\mathcal{R}_{\text{eff}} \lt 1\text{.}\) If \(\mathcal{R}_{\text{eff}} \lt 1\) in a model that includes vaccines or other public health interventions, then overall numbers of Infectious people do not rise over time. With a few lines of algebra, we can build a relationship between \(\mathcal{R}_0\text{,}\)\(p\text{,}\) and \(\mathcal{R}_{\text{eff}}\text{.}\)
First, we should state a definition for \(p\text{.}\) We define \(p\) to be the fraction of people vaccinated against a disease, noting that the values of \(p\) are therefore restricted to \(0 \leq p \leq 1\text{,}\) where \(p=0\) means no one is vaccinated, and \(p=1\) means \(100\%\) of the population is vaccinated. When the fraction \(p\) of people are vaccinated, the remaining fraction \((1-p)\) are not vaccinated. Since \(\mathcal{R}_0\) refers to an entirely susceptible population, but only the fraction \((1-p)\) of the population is susceptible, we see that the average number of new infections caused by one infectious person in the vaccinated population is \((1-p)\mathcal{R}_0\text{.}\) In other words:
Our goal in the next few mathematical steps is to use (6.1) to determine a value of \(p\) for which \(\mathcal{R}_{\text{eff}} \lt 1\text{.}\) 2
The goal of \(\mathcal{R}_{\text{eff}} \lt 1\) was set out in the 1983 paper “Parasitic Infections as Regulators of Animal Populations” by Robert M. May, published in American Scientist in the January-February issue. Additional details and explanation appear in the 1988 textbook “Mathematical Models in Biology” by Leah Edelstein-Keshet, published by McGraw-Hill.
Such a value of \(p\) corresponds to a vaccination rate high enough that a disease cannot become an outbreak because \(\mathcal{R}_{\text{eff}} \lt 1\) means that the overall numbers in the Infectious population are not expected to rise. Read carefully through the following mathematical steps to see how this value of \(p\) is computed:
\begin{align*}
\mathcal{R}_{\text{eff}} \amp \lt 1 \\
(1-p)\mathcal{R}_0 \amp \lt 1 \\
\mathcal{R}_0 - p \mathcal{R}_0 \amp \lt 1 \\
p \mathcal{R}_0 \amp \gt \mathcal{R}_0 - 1 \\
p \amp \gt \frac{\mathcal{R}_0 - 1}{\mathcal{R}_0} \\
p \amp \gt 1- \frac{1}{\mathcal{R}_0}.
\end{align*}
In the lines above, we started with our goal of causing \(\mathcal{R}_{\text{eff}}\) to be less than one. We then made a substitution using (6.1) and rearranged algebraically until we found a formula showing values of \(p\) that satisfied our goal. Notice that to compute the next-to-last line, we divided by \(\mathcal{R}_0\) without changing the direction of the inequality, which assumed that \(\mathcal{R}_0 \gt 0\text{.}\) This assumption makes biological sense, and is important to point out mathematically, as biology and mathematics should support each other throughout the modeling process.
We now note a particular, special value of \(p\) that is the threshold between two outcomes, which makes it a critical value. The two outcomes are having, or not having, an outbreak. We therefore name this critical value of \(p\) to be \(p_{\text{crit}}\text{:}\)
Investigate the critical value \(p_{\text{crit}}\text{,}\) and the accompanying threshold between outbreak and no outbreak, in Activity 6.2.
Activity6.2.
In this activity, we explore \(p_{\text{crit}}\) through the comparison of two historically widespread diseases: smallpox and measles.
We begin by examining smallpox. Estimates for the value of \(\mathcal{R}_0\) for smallpox range from 3.5 to 6. 3
Estimates that \(\mathcal{R}_0 \approx 3.5-6\) come from the paper “Transmission potential of smallpox in contemporary populations” by Raymond Gani and Steve Leach, published in the journal Nature on 13 December 2001.
Given this range of \(\mathcal{R}_0\) values, what is the range of \(p_{\text{crit}}\) values required in order to reduce the value of \(\mathcal{R}_{\text{eff}}\) for smallpox so that \(\mathcal{R}_{\text{eff}} \lt 1\text{?}\) What percentage of people would need to be vaccinated, using the values of \(p_{\text{crit}}\) you computed, to prevent a smallpox outbreak, that is, to cause \(\mathcal{R}_{\text{eff}} \lt 1\text{?}\)
Next, we examine measles. Many estimates for the value of \(\mathcal{R}_0\) for measles range from 12 to 18. 4
The paper “The basic reproduction number (R0) of measles: a systematic review”, by Fiona M Guerra, Shelly Bolotin, Gillian Lim, Jane Heffernan, Shelley L Deeks, Ye Li, and Natasha S Crowcroft, states that \(\mathcal{R}_0\) is often approximated as \(12-18\text{,}\) while also stating that the actual range of \(\mathcal{R}_0\) for measles varies even more. This paper was published in The Lancet Infectious Diseases on 27 July 2017.
Given this range of \(\mathcal{R}_0\) values, what is the range of \(p_{\text{crit}}\) values required in order to reduce the value of \(\mathcal{R}_{\text{eff}}\) for measles so that \(\mathcal{R}_{\text{eff}} \lt 1\text{?}\) What percentage of people would need to be vaccinated, using the values of \(p_{\text{crit}}\) you computed, to prevent a measles outbreak, that is, to cause \(\mathcal{R}_{\text{eff}} \lt 1\text{?}\)
Smallpox has been eliminated: the last natural occurrence was in 1977, and in 1980, the World Health Organization stated that smallpox had been globally eradicated. Measles has not been eliminated: widespread vaccination has reduced cases drastically in many parts of the world, but measles continues to circulate. Given your results in parts 1 and 2 of this activity about the values of \(p_{\text{crit}}\) for smallpox and measles, write a few sentences about how the value of \(\mathcal{R}_0\) increases or decreases the feasibility of vaccinating enough people to eliminate a disease.
Answer.
For smallpox, \(0.71 \lt p_{\text{crit}} \lt 0.83\text{,}\) meaning approximately \(71\% - 83\%\) of people need to be vaccinated to prevent an outbreak.
For measles, \(0.92 \lt p_{\text{crit}} \lt 0.94\text{,}\) meaning approximately \(92\% - 94\%\) of people need to be vaccinated to prevent an outbreak.
This is open-ended. A typical answer may state that higher values of \(\mathcal{R}_0\) mean we need higher levels of vaccination. Answers may also investigate the reasons why it becomes so much more difficult to achieve higher levels of vaccination, especially on a global scale.
The investigations of Activity 6.2 asked you to compute values of \(p_{\text{crit}}\) for specific diseases. Another aspect of \(p_{\text{crit}}\) is that achieving this critical vaccination level means only that the infection curve, that is, the \(I(t)\) curve, falls from the beginning rather than rising first. However, this does not mean that there are no new infections after the initial cases. Explore this further in Section 6.2.
Section6.2How Vaccination Level Affects Long Term Outcomes
Activity 6.3 focuses on understanding long-term model outcomes, in the case that an outbreak occurs when some percentage of the population has already been vaccinated. One emphasis is on \(p_{\text{crit}}\text{,}\) the critical vaccine coverage value defined in (6.2). Another emphasis is on adjusting our Python code in order to make sure its output truly demonstrates the answers to the questions we are asking.
Activity6.3.
Investigate different outcomes for the following SIR model when the number of initial Susceptible and initial Removed people varies according to the value \(p\text{,}\) where \(0 \leq p \leq 1\text{:}\)
\begin{align*}
\frac{dS}{dt} \amp = - \beta S I \\
\frac{dI}{dt} \amp = \beta S I - \gamma I \\
\frac{dR}{dt} \amp = \gamma I.
\end{align*}
In the default Python code shown below, \(\beta = 0.0003\text{,}\)\(\gamma = 0.3\text{,}\)\(p=0\text{,}\) the initial population values are \(S(0)=2999\text{,}\)\(I(0)=1\text{,}\) and \(R(0)=0\text{,}\) and time runs from \(t=0\) to \(t=50\) days. When the value of \(p\) changes in line 16, then the initial values \(S(0)\) and \(R(0)\) change accordingly, with \(S(0)=2999(1-p)\) and \(R(0)=2999p\text{.}\)
When the code is run, most population values are rounded to the nearest whole number, but the long-term value for \(I(t)\) is not rounded. To stop rounding other population values, you can delete the word round at appropriate places in the code. Begin by running the code, and then work through the steps below to make specific changes to the model.
When \(p=0\text{,}\) how many people get this illness at some point in time, according to this model with its default values? To answer this: notice that everyone who reaches the R compartment, but was not there at the start, must have been sick at some time. We therefore subtract the initial number of people in the R compartment from the long-term value of \(R(t)\) to reach our answer. Also notice that we need to make sure to run the model long enough that \(I(t)\) becomes very close to \(0\text{.}\) Only then will long-term \(R(t)\) be evaluated at a large enough value of \(t\) for us to know the total number of people who become ill.
(Notice that there is a difference in this question between the exact outcome of an outbreak ending with \(0\) infectious people and the approximated outcome of running the model simulation long enough for \(I(t)\) to get very close to \(0\text{.}\) Since the \(I(t)\) curve approaches \(0\) as an asymptote, looking out to many decimal places, we see that \(I(t)\) remains slightly above \(0\) for a long while.)
Compute the value \(p_{\text{crit}}\) for this model, showing your work. Then run the Python code above, replacing the value of \(p\) in line 16 with the value you computed for \(p_{\text{crit}}\text{,}\) and determine how many people get the illness at some point in time, according to this model, when \(p=p_{\text{crit}}\text{.}\)
As part of your response, show how you determined the long-term value of \(R(t)\) by demonstrating at least three different estimates for \(R(t)\) at different values of \(t\text{.}\) For each of these estimates, state the value of \(I(t)\) as well, to give a sense of how small \(I(t)\) is becoming as you estimate the long-term total number of people in the Removed compartment.
Now think about how many people from the S compartment get the illness, even though \(p=p_{\text{crit}}\text{.}\) To answer this, subtract the long-term value of \(S(t)\) from the initial value \(S(0)\text{.}\) Notice that your answer tells you that that even when \(\mathcal{R}_{\text{eff}} \approx 1\text{,}\) additional people can contract the illness being studied. However, the Infectious population curve \(I(t)\) does not rise: it instead appears as level or decreasing.
Be sure to check, and be able to demonstrate to others, that the Infectious curve is truly not rising when \(p=p_{\text{crit}}\text{.}\) The default graph in the Python code for this activity makes it challenging to see the details of the \(I(t)\) curve because \(S(0)\) is so large relative to \(I(0)\text{.}\) To see just the \(I(t)\) curve, then, we can comment out the lines of code that show the \(S(t)\) and \(R(t)\) curves. Do this: place the symbol # at the start of each of those lines. Then evaluate the code and display a graph showing just the \(I(t)\) curve.
Answer.
The given Python model, with \(p=0\text{,}\) says the long-term value of \(R(t)\) is \(2821\text{,}\) and we have set the initial value \(R(0)\) to equal \(0\text{.}\) At \(t=50\text{,}\) the value of \(I(t)\) is approximately \(0.326\text{,}\) so it is a good idea to let the simulation run longer to see how much \(R(t)\) is still changing. We therefore increase the value 50.0 in line 18. Trying \(t=100\text{,}\) we see that \(I(100) \approx 1.45 \times 10^{-6}\text{,}\) which is a quite small value for \(I(t)\text{.}\) At this time, \(R(100)=2822\text{.}\) We therefore estimate that \(2822\) total people get this illness.
It is worth mentioning that there may be different estimated values for the number of people who get an illness, due to using different lengths of time for running the model simulation. There is not a universal standard for the length of the simulation’s time span, or for what value of \(I(t)\) is considered “close enough” to zero. It is therefore helpful and important to state the start and end times used, along with other information about how you, as a modeler, believe you have determined a solid estimate.
The value of \(p_{\text{crit}}\) is \(0.\overline{6}\text{,}\) using (5.1) to compute \(\mathcal{R}_0\) and then (6.2) to compute \(p_{\text{crit}}\text{.}\) One option is to approximate \(p_{\text{crit}}\) as \(0.67\text{.}\) The initial value \(R(0)=2009\) means 2009 people start in the Removed compartment, due to being vaccinated. Making the value of \(t\) larger may lead to estimates larger than 2040 for the long-term value of \(R(t)\text{.}\) Using one such estimate: if there are 2045 people eventually in the R compartment, then \(2045-2009=36\) people got the illness. (Your answer should include at least three values of \(t\) and \(R(t)\text{,}\) which will help to show a trend of how \(R(t)\) changes as \(t\) becomes larger.)
In a model simulation where \(R(0)=2009\text{,}\) we see that \(S(0)=990\text{.}\) Carrying out this simulation long enough that the long-term value \(R(t)\) is \(2045\text{,}\) we see that the long-term value of \(S(t)\) is \(955\text{.}\) This means that \(990-955=35\) people began in the S compartment but did not stay there. In other words, 35 people acquired the illness.
The first and third lines after #Plotting commands are below should be commented out, that is, the symbol # should be placed at the start of lines 33 and 35. Then run the code block again to produce just the \(I(t)\) graph.
You may have noticed that Activity 6.3 assumed that people who were vaccinated were entirely unable to get the illness being modeled. You also may have thought about real-world outbreaks in which vaccinated individuals can still become sick. For many outbreaks, vaccines reduce the chance of acquiring an illness, rather than completely preventing illness.
In Section 6.3 we address this vaccine outcome. We also distinguish between the epidemiological terms efficacy and effectiveness.
Section6.3Vaccine Efficacy and Effectiveness
We start by providing some extra vocabulary and commentary on vaccines. When vaccines are studied and approved for use, researchers demonstrate their efficacy and effectiveness. Both terms consider how many people within a population of vaccinated individuals get a disease, compared with how many people within a comparable population of unvaccinated individuals get the same disease. If, for instance, \(75\%\) fewer people in the vaccinated population get the disease, then we say the vaccine has an efficacy or effectiveness of \(75\%\text{.}\) (Notice what the \(75\%\) does NOT mean: it does NOT mean that only \(75\%\) of people are protected by the vaccine, or that the vaccine only “works” \(75\%\) of the time.) The word efficacy specifies that the comparison of vaccinated and unvaccinated populations happens within a clinical trial. The word effectiveness indicates that the vaccine is being studied for populations in the real world. While clinical trials do include a range of different people, effectiveness often differs from efficacy.
In Activity 6.4 we build and work with a model that incorporates the idea that a vaccine has some level of effectiveness. The World Health Organization’s measurements of vaccine efficacy and effectiveness are based on outcomes of how many vaccinated and unvaccinated people become sick. Our model instead introduces an alternative transmission parameter \(\beta_V\text{,}\) which we apply to a Vaccinated population that is separate from the unvaccinated Susceptibles population.
Activity6.4.
One way to model vaccine effectiveness is to include a compartment for vaccinated individuals. We call this the V compartment. One such model appears in Figure 6.1 and in the differential equations below. 6
This is a simplified version of a model from the paper “A Vaccination Model for Transmission Dynamics of Influenza” by M. E. Alexander, C. Bowman, S. M. Moghadas, R. Summers, A. B. Gumel, and B. M. Sahai, published in the SIAM Journal of Applied Dynamical Systems in 2004.
Figure6.1.One possible \(SVIR\) (Susceptible, Vaccinated, Infectious, Removed) compartmental diagram
\begin{align*}
\frac{dS}{dt} \amp = - \beta S I \\
\frac{dV}{dt} \amp = - \beta_V V I\\
\frac{dI}{dt} \amp = \beta S I + \beta_V V I - \gamma I \\
\frac{dR}{dt} \amp = \gamma I.
\end{align*}
You will notice that this model has four compartments. The Infectious and Removed compartments are similar to those we have worked with before, such as in Chapter 4 and Chapter 5. The Susceptibles compartment now includes everyone who could become sick and has not been vaccinated. The Vaccinated compartment includes everyone who could become sick but has been vaccinated. This model can be used to represent outcomes with a vaccine that reduces the risk of becoming Infectious but does not completely prevent infection.
First, take time to explore with the model.
The default Python code uses a total population of \(6001\text{,}\) split into \(S(0)=3000\) initial Susceptibles, \(V(0)=3000\) initial Vaccinated, and \(I(0)=1\) initial Infectious. Try distributing the initial numbers of Susceptible and Vaccinated people in different ways. Make planned and systematic changes to these initial values, and report your findings using tables and/or graphs.
The default Python code sets \(\beta = 0.0002\) and \(\beta_V = 0.0001\text{,}\) making \(\beta_V\) equal to half the value of \(\beta\text{.}\) Try different relationships between \(\beta\) and \(\beta_V\text{.}\) (It is a good idea to keep \(\beta_V \lt \beta\text{,}\) as vaccination leads to a smaller chance of becoming infected.) Make planned and systematic changes to these parameter values, and report your findings using tables and/or graphs.
Next, explore the concept of a control reproduction number, which we can label \(\mathcal{R}_c\text{.}\) Whereas the basic reproduction number \(\mathcal{R}_0\) supposes we have one Infectious person, and everyone else Susceptible, the control reproduction number \(\mathcal{R}_c\) supposes we have attempted to control the outbreak to some extent, such as by vaccination or other public health measures.
For the SVIR model in Figure 6.1, the formula for \(\mathcal{R}_c\) is
By contrast, the basic reproduction number for this model is the same as for the SIR model without vaccination, that is, \(\mathcal{R}_0=\beta N / \gamma\text{,}\) where \(N\) represents the total population, and we assume no vaccination occurs.
Develop some scenarios in which \(\mathcal{R}_0\) would be larger than 1, yet due to vaccination, \(\mathcal{R}_c \lt 1\text{.}\) Report on your findings for long-term outcomes in each case, using tables and/or graphs.
Hint.
This is an open-ended question. As you work through it, think about how to be systematic. This could involve putting specific percentages of the initial population into \(V(0)\text{,}\) such as \(50\%\text{,}\)\(75\%\text{,}\)\(90\%\text{,}\)\(95\%\text{,}\) and \(99\%\text{,}\) and listing long-term outcomes in the form of a table of values and/or as graphs. There can be other approaches as well.
This, too, is an open-ended question that will be helped by a systematic approach. One idea is to set \(\beta_V = 0.5\beta\text{,}\)\(\beta_V = 0.25\beta\text{,}\)\(\beta_V = 0.1\beta\text{,}\) and so on, and then to display the resulting long-term outcomes in a table of values and/or as graphs. This is just one of many ways to explore combinations of the values of \(\beta\) and \(\beta_V\text{.}\)
This exercise is set up so that the default values of \(\beta\text{,}\)\(\gamma\text{,}\) and \(N\) cause \(\mathcal{R}_0\) to be larger than 1. Compute this value of \(\mathcal{R}_0\) and then, by changing \(\beta_V\) and the model’s initial conditions \(S(0)\) and \(V(0)\text{,}\) create multiple ways to ensure \(\mathcal{R}_c \lt 1\text{.}\) Display long-term results as a table of values and/or as graphs.
Vaccine outcomes extend beyond affecting how many people get an illness. One common outcome is reducing the intensity of illness in individuals who have been vaccinated, yet who still become sick. Another common outcome is that people who were vaccinated, yet become sick, are less likely to spread infection to others. These and other outcomes can be included in increasingly detailed models.
Much of this section has focused on vaccines, which are a valuable element of compartmental models. Another important aspect of disease spread is the incubation period of an illness. The SEIR model, described in Chapter 7, incorporates this incubation period.
For Further Thought6.4For Further Thought
1.
A vaccine for measles was first licensed in the United States in 1963. Before that, nearly all U.S. children got measles by the time they were 15 years old. Due to the vaccine, by the year 2000, the U.S. eliminated measles as a disease that could spread continuously. Since then, measles in the U.S. occurs only occasionally, typically when a person travels elsewhere, gets measles, and returns to the U.S. with the ability to infect others. 7
These facts are from the Centers for Disease Control and Prevention (CDC) page on History of Measles.
Measles lends itself to especially demonstrative mathematical models for two reasons: (1) measles is exceptionally contagious, and (2) the vaccine for measles has very high efficacy and effectiveness, with immunity that lasts a lifetime.
As described in Activity 6.2, the value of \(\mathcal{R}_0\) for measles is approximately 12 to 18. Let’s suppose a specific outbreak of measles has \(\mathcal{R}_0 = 15\text{.}\) The CDC says that measles is contagious from four days before symptoms appear until four days after, meaning about 8 total days. 8
These numbers come from the Centers for Disease Control and Prevention (CDC) page on How Measles Spreads.
For this reason, set \(\gamma = 1/8\text{.}\) Let us suppose this outbreak occurs in a small, close-knit community of 500 people, where some percentage \(p\) of people have been vaccinated and one person initially has the measles. Therefore \(S(0)=499(1-p)\text{,}\)\(I(0)=1\text{,}\)\(R(0)=499p\text{.}\) Set up an SIR model, as shown below, for this outbreak:
\begin{align*}
\frac{dS}{dt} \amp = - \beta S I \\
\frac{dI}{dt} \amp = \beta S I - \gamma I \\
\frac{dR}{dt} \amp = \gamma I
\end{align*}
Compute all parameter values for the model, using the information provided in this exercise, along with equation (5.1), to compute the value of \(\beta\) for this model.
Use your model to test the edge cases of vaccination: what happens to the population if there is no vaccination at all (\(p=0\)), and what happens if everyone in the community is vaccinated (\(p=1\))? Determine how many people ultimately get measles in each modeling scenario. Indicate, also, how much time the model needs to run in order to determine how many people get measles in each scenario. The model may need to run for different lengths of time at different vaccination levels.
Notice that there is not a unique answer to how long to run the model. Different people may use different final times. The key here is to demonstrate your process for determining a final time. Your process should include supporting the values you compute as long-term outcomes by showing evidence that the simulation values are not changing dramatically after the amount of time you have run the simulation.
Now investigate varying levels of vaccination. What happens if \(p=.25\text{,}\)\(p=.5\text{,}\)\(p=.75\text{,}\) or \(p=.9\text{?}\) Determine long-term outcomes in each case, that is, determine how many people ultimately get measles in each modeling scenario. Indicate, also, how much time the model needs to run in order to determine how many people get measles in each scenario. The model may need to run longer when a greater percentage of the population is vaccinated.
2.
Explore further the measles model from For Further Thought, Exercise 1, in this chapter. Use the same values for \(\mathcal{R}_0\text{,}\)\(\gamma\text{,}\) and \(\beta\) as you computed in Exercise 1. Use the same system of differential equations as well, and continue to set \(S(0)=499(1-p)\text{,}\)\(I(0)=1\text{,}\)\(R(0)=499p\text{.}\)
In many communities in the U.S., the percentage of vaccinated people is around \(91\%\) or \(92\%\text{.}\) 9
At each of these levels, how many people will get measles in the long run, according to your model?
Be sure, in each case, to run your model long enough that the number of Infectious people has dropped close to \(0\text{,}\) so that the long-term number of people in the Removed compartment seems to remain constant.
Compute \(p_{\text{crit}}\) for this model of measles, showing your steps. Simulate the model using at least two values of \(p\) above \(p_{\text{crit}}\) and at least two values of \(p\) below \(p_{\text{crit}}\text{.}\) (Be sure that all values of \(p\) are between \(0\) and \(1\text{.}\)) For each value of \(p\) comment on the number of people who begin in the S compartment and remain in the S compartment after the number of Infectious people has dropped to zero (or very close to zero in a simulation).
At each value of \(p\) for which you simulated the model in part (b), compute the fraction of the initial Susceptible population that acquires the illness. To do this, first determine how many of the initial Susceptible population eventually got the illness by subtracting the long-term number of Susceptibles from the initial number of Susceptibles, and then divide by the initial number of Susceptible people. Here is a formula to help you do this:
\begin{gather*}
\frac{S(0)- \mbox{Long term number of Susceptibles}}{S(0)} .
\end{gather*}
Write about your results when changing the vaccination rate. Describe how much the number of measles cases, or the fraction of people who get measles, can change in response to what may appear to be small changes in the vaccination rate, especially when the vaccination rate is close to the value of \(p_{\text{crit}}\text{.}\)
3.
Now use an SVIR model to represent measles. Your goal is to work with outcomes to compute Vaccine Effectiveness, abbreviated VE. Two doses of the measles vaccine has been found to have 97% effectiveness. 10
The Centers for Disease Control provides the value of 97%, along with more information about the MMR and MMRV vaccines, which both protect against measles, mumps, and rubella. The MMRV vaccine provides additional protection against varicella, also called chickenpox.
The formula for vaccine effectiveness requires computing the attack rate for both the vaccinated and unvaccinated populations. The attack rate is the proportion of a population of a population that contracts an illness within a specified time range. 11
For our purposes in this question, we define two attack rates. The first is the Susceptible Attack Rate, abbreviated SAR:
\begin{gather*}
\mbox{SAR } = \frac{\mbox{Number of new cases among Susceptibles during an outbreak}}{\mbox{Number of Susceptibles at the start of the outbreak}}.
\end{gather*}
The second is the Vaccinated Attack Rate, abbreviated VAR:
\begin{gather*}
\mbox{VAR } = \frac{\mbox{Number of new cases among Vaccinated during an outbreak}}{\mbox{Number of Vaccinated at the start of the outbreak}}.
\end{gather*}
As one example, using the default Python code in Activity 6.4, we compute
This means that about \(97.3\%\) of Susceptibles get the measles in this scenario, compared with about \(83.7\%\) of Vaccinated individuals.
Compute SAR and VAR in the measles model from Activity 6.4, in the following two situations.
First, let \(S(0)=V(0)=3000\text{,}\)\(\beta=0.0002\text{,}\) and \(\beta_V=(1-0.97)\beta = 0.03\beta\text{.}\) That is, \(\beta_V\) in this exercise is only 3% of the default \(\beta_V\) value in Activity 6.4, trying to build into the model the idea that the measles vaccine is 97% effective.
Comment on the resulting values for SAR and VAR. How do these values differ from those computed in the example above, with the default parameters and initial values in Activity 6.4? Include a comment about the change in SAR, even though the values of \(\beta \) and \(S(0)\) have not changed.
Next, use the formula for \(\mathcal{R}_c\) in (6.3) to develop a combination of values of \(\beta\text{,}\)\(\beta_V\text{,}\)\(S(0)\text{,}\) and \(V(0)\) for which \(\mathcal{R}_c \lt 1\text{.}\) Do not change \(\gamma\text{.}\) Run the model from Activity 6.4 using the values you have determined, and compute the resulting SAR and VAR. Comment on your results.
Now, you will compute vaccine effectiveness for the measles model in each of the scenarios you developed in part (a). Rewording our definition of effectiveness from earlier in Section 6.3, vaccine effectiveness measures the percentage by which the attack rate is reduced in the vaccinated population, when compared with the attack rate in the unvaccinated population. 12
Médecins Sans Frontières, also known as Doctors Without Borders, provides a nice description of vaccine effectiveness, along with information about how to compute its value.
In our model, then, the formula for vaccine effectiveness (abbreviated VE) is:
This means that vaccine effectiveness is about \(14\%\) in this case.
Now compute vaccine effectiveness for each of the other sets of parameter values you worked with in part (a). You can use the values of SAR and VAR that you have already computed.
Write comments on your results. Include a comment on the actual vaccine effectiveness (VE) value you compute in part (a)(i) when \(\beta_V = 0.03\beta\text{,}\) compared with the idea of trying to build 97% vaccine effectiveness into the model from the start.