Saturday, March 21, 2020

Calibration and some interventions

In this post I'll try to do some basic calibration of the House model that I played with in the previous post. And then try a small experiment in which I vary the timing of some interventions.

I'm not trying to do anything properly scientific here, at least not yet. However, in the same way that simple climate models can be used for insight and exploration much more effectively than full GCMs, I am hopeful that this simple modelling can be informative (at least to me!) in a similar manner. Rather than trying to use real data, I'm calibrating the model against the Ferguson et al results since they simulate the full epidemic and also describe some of their model parameters.

I start with the base scenario of no interventions. I have tuned the latent and infectious periods a little to match the Ferguson et al comments reasonably, eg they say it takes 5.1 days to go from initial infection to becoming symptomatic, but people are infectious from one day prior to this so I use 4 days as the latent period. They also say their model has an average generational time scale of 6.5 days (I assume this means the time taken to get a factor R0=2.4 increase in cases) which requires a fairly short infectious period of 4.5 days in my model.

The remaining tunable parameter is just the initial state which they say was tuned in their model achieve the right number of deaths by 14 March. This seems an extraordinarily sensitive target (relying as it does on both the infection date and time to death of a mere handful of people with the most severe underlying health conditions) but on the other hand at least it's probably a fairly secure data point. The alternative of targetting reported/estimated infections etc is subject to uncertainty as to what that actually represents and how well it's measured. Anyway, this model does not explicitly simulate deaths but an initial condition of i0=2e-9 in the model on 1st Jan gives reasonable outputs. This mean we have about a quarter of an infected person at the start of Jan, or equivalently 10 infectious cases (plus another 15 exposed, latent) at the start of Feb. While these values may seem just a little, high don't forget that as well as under-reporting, there will have been ongoing import of cases from abroad since that date which this model does not account for. It's not a ridiculous number at any rate.

With these model parameters, we get almost 10,000 infectious cases today (21st March) , or 24,000 including latent cases. In the base uncontrolled case, the epidemic peaks around 20 May in terms of the infectious cases. To enable easier comparison with Ferguson's Figure 1 I have plotted the infectious curve, shifted by 21 days, to roughly simulate the shape (but not the size!) of their death curve. This is based on the values of 5 days from sypmtoms to hospitalisation and a typical stay of 16 days, presented in their report. I'm not expecting close agrementm but hoping to be in the right ballpark. And it doesn't look too far off to me, by eye. The vertical grid lines are drawn at the 20th of each month (which just to be clear start at the appropriately labelled tick marks, ie the month names are on the 1st). It took some effort to produce plots quite as awful as the Ferguson et al report, which might be generated in Excel perhaps?
Above plot is mine, below is Fig 1 from Ferguson et al

I'm actually really impressed by how well this simple model agrees!

Next up, let's explore the interventions, which were applied in the Ferguson et al model (Figure 2) for a period of 3 months from April 20 to July 20. My main reason for doing this is that I was interested in exploring what sort of change to the basic R0 values they represent, as the report didn't mention that. I'm not trying to match each curve precisely but just interested in the general range of values that they represent. Based on muy results, it seems that the more aggressive controls seems to represent quite a change from R0 = 2.4 to perhaps as low as R0 = 1.65 (black curves, various line styles).
It is nnoticeable that the difference between the two lowest curves of Ferguson et al (light brown and blue), which differ only in the addition of social distancing for the over-70s, is primarily in their height rather than shape or timing. I reckon the reason for this is that the R0 value hasn't actually changed much between them, so the overall dynamics of the epidemic hasn't changed, but the relationship between the number of cases and of critical care demands has altered due to fewer cases occurring in this particularly vulnerable older group. Therefore I'm not surprised that I haven't quite managed to match this largest drop. Decreasing R0 still further below 1.65 in the House model delays and spreads the peak in a manner that doesn't match that curve.

This plot also answers a question I was asked on Twitter: what is the effect of bringing forward the start date for these interventions to today, rather than waiting a month as was assumed in the report? The answer turns out to be quite straightforward. Starting a month earlier delays each epidemic, but does not change the overall shape. With hindsight this is obvious though I didn't realise it before doing the simulations. The early intervention just slows the growth over the initial exponential part (compared to the base case), with the magnitude of the delay depending on the magnitude of reduction in R0. Up to almost a month in the case of the strongest interventions. Of course interventions have a cost and I've made no attempt to evaluate this.
Above is mine, below is Ferguson et al Fig 2

Enough for now. A simple message is that starting controls sooner rather than later, delays the epidemic, without doing much else.


Phil said...

Get R0<1.0 and the situation changes. Reduce R0 to close to one and the situation improves. Any reduction in R0 is a gain.

China did it, two different ways. South Korea did it. Hong Kong, Taiwan and Singapore.

Stay home, all the time, except to fetch necessary food and medication. Sure, some need to work, such as in grocery stores, food production and distribution, pharmacies and their supply chains, hospitals and assorted public safety. See Wuhan city.

Outside Wuhan, China used the power of their surveillance state to find any potential contacts of an infected person, to isolate and test. Notify their cell phone. Use face recognition cameras to alert if they fail to isolate. Creepy but effective.

South Korea used both mass testing, release of public information of where infected cases had been (but not who they were) and case tracking. Cases exploded due to a subpopulation in Korea.

Hong Kong, Taiwan and Singapore have mostly been stamping out sparks imported from other areas.

Or even get R0 to be 1.00 exactly. Populations are not homogeneous. So I'll assert that there may be populations where a given set of social distancing, testing and case tracking will produce a temporarily static number of infections. Until enough people get immunity from a vaccine or from past exposure. If the stable level is below the capacity of the heath care system, this might not be too bad.

This isn't a static system. As people turn on the evening news and see pictures of a line of people waiting to get into a hospital waiting room so they can wait to get into the hallway so that they can wait to get into a bed so that they can wait to get oxygen or on a ventilator, they will change their behavior. The lower we can get R0, the less the problem grows beyond the unacceptable pain point.

Suppose cases double every 4 days. Suppose that from infection to critical is 24 days. Pick your own numbers if you don't like these. Then there are 6 doublings between when the hospital system overloads and when the effect of increasing social distance starts to have an impact. 2^6 is 64 times. If we can reduce R0 so cases double every 12 days, then there are only 2 doublings. 2^2=4. Radically better.

Reducing R0 now is very important. Even if we can't get below 1.0

James Annan said...

yes I basically agree with all that.