Having the right vaccines isn’t just enough. Effective timing and distribution of when vaccines should be given is also very critical. We need to understand the minimum number of vaccines that should be available and how fast we should distribute them to the masses in order to curb the spread of the disease. I decided to carry out several simulations using CLUBASID (A highly visual tool for simulating the spread of infectious diseases using stochastic methods).
For us to understand the simulation, it is important for us to understand the different possible stages of health a person can be in (in CLUBASID).
Looking at the image above, recovery from the disease does not guarantee life-time immunity compared to the image below that shows a model where recovery from the disease would guarantee life-time immunity.
When an individual gets exposed, they risk getting the disease, should they get the disease, they first become asymptomatic. After incubation period is over, such individual starts to show symptoms of the disease and after a while he/she either recovers or dies. If he/she recovers, then such individual becomes immune and cannot become infected or pass on the disease (in this case, recovery guarantees life-time immunity).
With vaccination, we want to take individuals from the uninfected/vulnerable state to the immune stage without having to go through sickness. Vaccines are preventive measures that trigger the body to generate antibodies that would fight the disease.
I am going to show the results of four simulations I have carried out using CLUBASID. In the first simulation, I am not going to intervene at all, so there would be no vaccination for the first simulation. This would serve as the worst case scenario. For the second simulation we would have an infinite supply of vaccines and distribute them to the masses in one day, this would serve as a fantasy best case scenario. Then the last two simulations would be somewhere in-between. Please note that you will need to run a lot more simulations to see some more concrete and interesting patterns.
The values we would be watching out for during each simulation include population size, number of infected people (asymptomatic and symptomatic), number of recoveries, days with the highest infection rates and the area under the infection curve. Please note that the area under the infection curve is a quick indication of the severity of spread of the disease and should not be mixed up with the overall number of unique infections which can be calculated by adding up number of deaths, number of recoveries and number of currently infected people.
In all simulations, I am using the same disease parameters. Incubation period of the disease is 5 to 16 days. Fatality period is between 7 to 18 days after symptoms start to show. Immunity is life-long meaning that people who recover from the disease or people who are vaccinated are immune for life. Please also note that if you want to carry out simulations with temporary immunity (not life long), this software allows you to do so. Also note that in this simulation, we are assuming that every uninfected/vulnerable person who is vaccinated will be immune, in order words we are assumming a vaccination success rate of 100% which may not be the case in a real world scenario.
In the first simulation, we have a total of 20 clusters with a population of 605 each.
On day 1 of the simulation, we have a total population of 12,100, asymptomatic infected people are 109 in total, and there are currently no deaths.
On day 30, we have a population of 12,028, Asymptomatic infected and symptomatic infected people make up 1,368 and 2,744 people respectively with total deaths of 72 and total recoveries of 1,961.
On day 91, we had a total population of 11,800, asymptomatic infected and symptomatic infected are 110 and 211 respectively, with deaths of 300. Also a total of 3,941 people were never infected.
Now I pause the simulation at these stage to do some analysis. The 5 days with the highest infection rates are days 23,22,24,20 and 25 with day 23 being the highest at 42% (that is 42% of the population infected).
Also after 91 days, the area under the infection curve is 197940.
In the next simulations, we would be carrying out vaccinations, so we expect better results in terms of damage done to the population by the disease
In the second simulation, we have a total of 20 clusters with a population of 596 each. On day 1 of the simulation, we have a total population of 11920, asymptomatic infected people are 118 in total, no deaths yet.
On day 7, we decide to intervene and start vaccination. We are vaccinating people of all ages and we have enough vaccines to go round the population. We are also doing something called “instant vaccination” which ensures that vaccines are distributed and given instantly. As you can imagine, the next day(day 8) all the uninfected people have been vaccinated and the disease cannot spread anymore.
Just on day 47, we a population of 11866, 54 deaths and 0 infected people (asymptomatic and symptomatic). The area under the curve 29322.
By checking the days with the highest infection rate, we discover that days 8,10,11,12 and 14 are they days with the highest infection rate with days 8 being the highest at 10.5 % of the population being infected.
However, this is more of a fantasy simulation as vaccines do not get distributed instantly, also we usually do not always have vaccines that can go around the population. So let us go for a more realistic simulation.
In the third simulation, we have a total of 20 clusters with a population of 596 each. On day 1 of the simulation, we have a total population of 11,920, asymptomatic infected people are 117 in total, no deaths yet.
On day 30, we have 1,761 people who are asymptomatic infected and symptomatic infected to be 2,270 people. There are currently 37deaths and also there have been 876 recoveries and 69,25 people have never been infected. On day 30, we decide to intervene with 6,478 vaccines to be distributed in 16 days.
On day 46, vaccination is done and there are currently 426 asymptomatic infected people, 1090 symptomatic infected people, 205 deaths, 5079 recoveries and 5057 people who were never infected.
On day 91, we pause the simulation to carry out some analysis. The day with the highest number of infections is day 26 with 33.9% of the population being infected.
After 91 days, the area under the graph is 183930.
We see that the results are better than simulation 1 where we did nothing. It is also not as good as simulation 2, however simulation 2 was more of a best case scenario.
In the fourth simulation, we have a total of 20 clusters with a population of 600 each. On day 1 of the simulation, we have a total population of 12,000, asymptomatic infected people are 151 in total, no deaths yet.
On day 18 , we decide to intervene with 10,169 vaccines to be distributed in 9 days .
Also on day 18, we have 3,063 people who are asymptomatic infected and 1632 people who are symptomatic infected. There are currently 3 deaths and 69 recoveries. There were also 7,227 people who have not been infected.
On day 27, vaccination is done and there are currently 976 asymptomatic infected people, 3,000 symptomatic infected people, 51 deaths, 1424 recoveries and 6488 people who have never been infected.
On day 91, we pause the simulation to carry out some analysis. The day with the highest number of infections is day 22 with 41.6% of the population being infected.
The area under the infection curve is 139869.
The table below shows a summary of the 4 simulations carried out.
After four simulations, we can see that the first one had the worst outcome (in terms of area under the curve, day with the highest infection rate, number of people who were never infected and number of deaths), due to lack of medical intervention.
CLUBASID is a free tool that can be downloaded from the Microsoft store for anyone to experiment with. You can carry out a lot more simulations which include effectiveness of lockdown, different modes of transmissions, etc. App link: https://www.microsoft.com/en-us/p/pandemic-simulator/9n86x1xhz765?activetab=pivot:overviewtab