COVID-19 model and poorly behaved neighbors

or the red state/blue state problem

Dan Connelly
9 min readApr 13, 2020

I previously described how I handled inhomogeneous population with a variation on Alison Hill’s COVID-19 model. Instead of a single group with a set of parameters, I treat the population as multiple groups, each with their own β values, with coefficient describing the amount each group interacts with each other group.

baseline behavior

I modeled baseline behavior of each group after my fit to the published Wuhan test data. This CDC article did a much better, more sophisticated look at Chinese data, and determined a doubling time was 2.4, rather than the 3.6 evident in the Wuhan test data, is more applicable to actual infection growth. To capture this, I increased β values 42%, bringing the doubling time down to the 2.4 day target. Here are the parameters I used here, which were identical to those used in the Wuhan fit except for the scale factor I apply to the β values:

$par{mu}      = 0.04;     # death rate from I3 (per day)
my $fW = 1.42; # beta factor relative to Wuhan
$par{beta0} = $fW * 0.854; # exposure rate from stage P
$par{beta1} = $fW * 0.427; # exposure rate from I1
$par{beta2} = $fW * 0.00; # exposure rate from I2
$par{beta3} = $fW * 0.00; # exposure rate from I3
$par{gamma0} = 0.200; # recovery rate from P
$par{gamma1} = 0.200; # recovery rate from I1
$par{gamma2} = 0.188; # recovery rate from I2
$par{gamma3} = 0.090; # recovery rate from I3
$par{p0} = 0.333; # rate from E to P
$par{sigma} = 0.4; # transition rate from P to I1
$par{p1} = 0.050; # transition from I1 to I2
$par{p2} = 0.062; # transition from I2 to I3

You can see here I multiplied the β values by 1.42.

For interventions, I assumed exposures were reduced 80% when interventions for a particular group were enacted. Thus β values were multiplied by 0.2.

scenario 1: one group without interventions

setup

I’ve got enough freedom here to investigate a wide range of possible scenarios. I’ll try one here with three groups:

  1. full MAGA and refuses to take any action.
  2. interventions start at day 30, but interacts with group 1 at 10% strength.
  3. same interventions, and interacts with group 1 at 1% strength
  4. same interventions, and interacts with group 1 at 0.1% strength
  5. same interventions, and interacts with group 1 at 0.01% strength
  6. same interventions, but no interactions.

In my code, I set up the groups as follows, where I say each group has the same number of people, then I automatically set the number of groups

# relative number of people per group
my @NGroup = (1, 1, 1, 1, 1, 1);
my $nGroups = scalar(@NGroup);

Then I need to set up the interventions per group. I do that as follows, where each group except the first has interventions:

# schedule a series of beta factors due to interventions
my @fBeta = (
[1.0],
[1, 0.2],
[1, 0.2],
[1, 0.2],
[1, 0.2],
[1, 0.2],
);
my @tBeta = (
[],
[30],
[30],
[30],
[30],
[30],
);

Then I set up the mixing coefficients:

for my $g1 ( 0 .. $#NGroup) {
for my $g2 ( 0 .. $#NGroup) {
$m[$g1]->[$g2] = ($g1 == $g2) ? 1 : 0;
}
}
$m[0]->[1] = $m[1]->[0] = 0.1;
$m[0]->[2] = $m[2]->[0] = 0.01;
$m[0]->[3] = $m[3]->[0] = 0.001;
$m[0]->[4] = $m[4]->[0] = 0.0001;

So this is all I set in my code to set up the scenario. Each of the groups except the first is practicing the same isolation measures. They differ only in the amount they interact with the “no intervention” group.

results

Here’s results. First I show the results over time.

The top shows the β₀ for the non-intervention and intervention cases. The intervention reduces the value 80%.

The next plot shows the number symptomatic people over time for each group. The red group practices no intervention, hits a peak of 16.2% sick, then reaches herd immunity and the number of sick starts dropping. This peak is slightly less than it would have been (16.9%) had there been no mixing.

Each of the other groups hits at least a plateau from the interventions, but depending on how much mixing they have with the non-intervention group, members of that group infect them, and infections eventually rise again. The amount of these infections is roughly proportional to the amount of mixing. Even with 0.01% mixing, where interactions are 10 thousand times less between the groups than within the groups, has a substantial plateau in cases.

However, in each case as soon as the non-intervention group reaches herd immunity, these infections from that group essentially stop. By day 180, the number of sick in the non-intervention group is the lowest of all, even though they continue to practice full social interaction, while the intervention groups must continue to isolate to avoid hitting their own infection peaks near 16%.

The next plot is deaths. It is clear that the more interaction groups have with the non-intervention group, the higher the death rate. I plot the gross mortality (deaths per population) of each group in the following bar graph:

I assumed a 1% case mortality rate in setting coefficients, so group 1, with essentially a full outbreak, gets a gross mortality rate close to 1%. For other groups, mortality tends to be dominated by how much these groups mixed with the non-intervention group, until the 0.01% mixing group, which experiences an approximate 30% increase in deaths relative to the group which fully isolates from the non-intervention group.

This model used a baseline R0 of 3.6. This implies the average sick person has approximately 3.6 infection-level interactions with others within the same group during the approximately (by my parameters) 6.5 days that person is infectious. With a mixing rate of 0.01%, that would be 55 interactions per million population per million population per day with another group (proportional to the product of the populations of the two groups). I don’t have numbers on interstate travel but this is clearly much less than typical interstate interactions in the absence of travel restrictions. The model already takes into account the effect from one or both groups isolating, reducing this number.

The best group, group 6 which isolated from group 1, had an ultimate gross mortality of 22.4 per million. For a United States population of 325 million, this would be 7300 deaths. Clearly the US has already passed this, being too slow with interventions, even though this simulation assumes it took a relaxed 30 days to implement interventions from the point of 0.1 cases per million.

conclusion

Given two regions, one practicing no intervention, the other practicing 80% reduction in interactions, the model predicts that even a mixing rate of 0.01% between the two groups, meaning members of the groups interact within the group ten thousand times as much as they do with members of the opposite group, is enough to significantly increase the infection rate and the death rate in the group practicing the interventions. However, once a group reaches her immunity, its infection risk to other groups is reduced.

scenario 2: one group with delayed, weaker intervention

setup

This is a modified form of the previous case. Here the MAGA group doesn’t wide the wave to full outbreak, but instead, more realistically, takes delayed interventions, and interventions are weaker (perhaps still allowing church services, for example).

  1. interventions start at day 44, two weeks after other groups, with a 70% reduction in interactions, rather than 80% in the other groups.
  2. interventions start at day 30, but interacts with group 1 at 10% strength.
  3. same interventions, and interacts with group 1 at 1% strength
  4. same interventions, and interacts with group 1 at 0.1% strength
  5. same interventions, and interacts with group 1 at 0.01% strength
  6. same interventions, but no interactions.

Group 1 still adopts isolation, but waits for the death rate to reach 10 per million before doing so. For example, as I write this Florida is at approximately 20 per million and just enacted statewide isolation a week ago. Additionally, I assume isolation is only a 70% reduction rather an 80% reduction.

Here’s the relevant code difference from scenario 1:

# schedule a series of beta factors due to interventionsmy @fBeta    = (
[1, 0.3],
[1, 0.2],
[1, 0.2],
[1, 0.2],
[1, 0.2],
[1, 0.2],
);
my @tBeta = (
[44],
[30],
[30],
[30],
[30],
[30],
);

results

Here’s the result of that scenario.

The top plot shows the β reduction: there is a 2-week delay for the first group to reduce β, and it does so 70%, rather than the 80% of the other groups.

The next plot shows symptomatic infections. This is similar to the previous scenario, except instead of rising to a sharp, tall peak, group 1 (red) increases steeply for the additional two weeks, then very gradually reduces, due to the reduced interventions. Again, this substantially increases the cases in groups in contact with the first group. Instead of decreasing at the more rapid rate of group 5 (black curve), their cases are “pulled up” from infections from group 1, depending on the extent of their interactions with group 1. Also note the red group does not reach herd immunity and does not fall below the other groups in infections, as it had in the first scenario.

Deaths are in the bottom plot. Again, deaths are substantially increased by interactions with group 1.

The gross mortality rate at day 180 is plotted below. This isn’t as bad an outcome as where the first group skipped interventions completely, but the two week delay, coupled with the reduced isolation, took a serious toll, and groups with at least 0.1% interaction had substantially increased death rates relative to the group which isolated itself from the other groups. Note the first group, instead of losing 1% of its population, has now lost 0.23% of its population, so even these relatively late, weaker interventions avoided most of the fatalities from reaching herd immunity.

conclusion

Delaying an extra two weeks until interventions can substantially increase the number of fatalities, both in your group, and in groups which interact with you, in this case even a 0.1% level of mixing with this delayed group causes a substantial increase in deaths versus isolating from this group.

scenario 3: indirect mixing

This is related to scenario 2. But here only one group interacts with the “bad neighbor”. A third group interacts with that group, and a fourth group interacts with the third group. A fifth group keeps fully isolated.

Here’s a summary of the groups:

  1. interventions start at day 44, two weeks after other groups, with a 70% reduction in interactions, rather than 80% in the other groups.
  2. interventions start at day 30, but interacts with group 1 at 1% strength.
  3. same interventions, and interacts with group 2 at 10% strength
  4. same interventions, and interacts with group 3 at 10% strength
  5. same interventions, but no interactions.

Here’s the code set-up:

my @NGroup = (1, 1, 1, 1, 1);
my $nGroups = scalar(@NGroup);
my @fBeta = (
[1, 0.3],
[1, 0.2],
[1, 0.2],
[1, 0.2],
[1, 0.2],
);
my @tBeta = (
[44],
[30],
[30],
[30],
[30],
);
for my $g1 ( 0 .. $#NGroup) {
for my $g2 ( 0 .. $#NGroup) {
$m[$g1]->[$g2] = ($g1 == $g2) ? 1 : 0;
}
}
# customizations
$m[0]->[1] = $m[1]->[0] = 0.01;
$m[1]->[2] = $m[2]->[1] = 0.1;
$m[2]->[3] = $m[3]->[2] = 0.1;

results

From the plots, you can see even though groups 3 and 4 are not in direct contact with group 1, group 2 is in contact, and group 2 passes on infections to group 3, who passes them on to group 4. Group 5 remains isolated and is able to reduce infections more rapidly.

The death rate is not as strong affected in groups 3 and 4, since the main effect is on the recover from the infection peak, rather than producing a second, higher infection peak as there is from direct interaction (group 2). However, a prolonged recovery of cases means interventions need to remain in effect longer.

conclusion

Even if you cut off direct interaction with a group practicing less or delayed isolation, interacting with groups which have not cut off that direct interaction can cause a delay in reducing cases to the threshold required to eliminate the virus via testing and contact tracing, even though on a relative basis fatality increases may be “modest” (if that term can be applied to fatalities).

--

--

Dan Connelly

Went to MIT, Stanford PhD, yadda yadda. I raced bicycles for years, but since 2008 have increasingly focused on running.