Previously, I wrote a simple pandemic simulation. Now I have extended it to model self isolation measures. To do this I changed the model in the following ways:
- the virus has an extra property which is the period immediately after infection for which the patient is asymptomatic.
- The population now has two levels of sociability: one used for anybody not known to be infected and one used for people who are infected and asymptomatic.
Additionally, reporting breaks down infected people into those who are symptomatic and those who are asymptomatic. The reason for this is that, in any real scenario, we probably wouldn’t know how many people are asymptomatic; we would only know how many symptomatic people there are.
I ran the simulation with an asymptomatic period of five days and a sociability under isolation of three people per day. It turned out I also had to increase the number of days in the run. Here are the results:

The first thing I noticed with the new simulation is that the virus took much longer to die out. In fact, I noticed it before the program finished running because it reports every ten days in order to give some visual indication it hasn’t just died or gone into an infinite loop due to programmer error. The previous simulation rarely got beyond 140 days before the virus died out. In the run above, the virus only dies out after 245 days.
Actually, I am misrepresenting the results a little bit in the previous paragraph. In reality, I had to run the simulation three times before I got a result in which any new people got infected before the first infected person recovered.
The second thing I noticed – and the one that is most obvious from the graph – is that only just over 50% of the people ever got infected at all, compared to 95% in the previous run. In a real scenario with a virus that kills people, the would be a very important factor. Another point to notice is that the peak number of infections is also much lower – even counting asymptomatic cases. This would translate into fewer people being admitted to hospital at any one time compared to the previous scenario. Note also that the real peak is a few days ahead of the peak in symptomatic cases. This means that epidemiologists in my world might think the number of cases is still rising even after the true peak has passed.
Finally, the R value is very much smaller. Ignoring the noise at each end of the graph caused by the low sample size, it never really gets over 1.5.
Links
The code: https://bitbucket.org/jeremy-pereira/epidemickit/commits/tag/blog-956
The data for the graph above: https://www.icloud.com/numbers/0a7Zz_b53yz9IvzGrolgc2PVg#asymptomatic%5F20200524%5F1044