so very freaking close to done

This commit is contained in:
Nicky Case 2020-04-27 00:03:42 -04:00
parent dc6b1abcea
commit 9a1b9d6be3
28 changed files with 1527 additions and 1302 deletions

View file

@ -5,8 +5,11 @@ body{
font-weight: 100;
line-height: 1.7em;
}
b, strong{
font-weight: bold;
}
article > p, article > ul{
article > p, article > ul, article > ol, article > h1, article > h2, article > h3{
width: 640px;
margin:1em auto;
}
@ -37,4 +40,34 @@ iframe{
border:2px solid #eee;
display: block;
margin:0 auto;
}
icon{
display: inline-block;
width: 1em;
height: 1em;
position: relative;
top:0.1em;
background-size: 100% 100%;
}
icon[s]{
background-image: url(../icons/s.png);
}
icon[e]{
background-image: url(../icons/e.png);
}
icon[i]{
background-image: url(../icons/i.png);
}
icon[r]{
background-image: url(../icons/r.png);
}
p > img{
width: 100%;
border: 1px solid #ddd;
margin: 0.5em auto;
}
sub{
line-height: 0;
}

File diff suppressed because it is too large Load diff

BIN
pics/dp3t.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 KiB

BIN
pics/exponential.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

BIN
pics/graphs_q.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
pics/masks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
pics/plan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
pics/r.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
pics/r2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
pics/r3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
pics/r4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
pics/seir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
pics/seirs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
pics/sir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
pics/spread.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
pics/susceptibles.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
pics/timeline1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
pics/timeline2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
pics/timeline3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -38,7 +38,7 @@
<input class="sim_checkbox" type="checkbox" id="c_recovery">
Becomes <icon r></icon> in <span id="label_p_recovery">N</span> days
<br>
<input class="sim_input" type="range" id="p_recovery" min="1" max="30" step="1" value="11">
<input class="sim_input" type="range" id="p_recovery" min="1" max="30" step="1" value="10">
</div>
<div id="label_c_waning">
@ -60,9 +60,6 @@
<br>
<span id="label_s">
<br>
But R is changed by...
<br>
% of people who are <i>NOT</i> <icon s></icon>
<input class="sim_input" type="range" id="p_s" min="0" max="1" step="0.001" value="0" disabled>
<div class="herd"></div>
@ -96,10 +93,6 @@
<br>
<input class="sim_input recordable" type="range" id="p_masks" min="0" max="1" step="0.001" value="0">
<br>
Deep Cleaning
<br>
<input class="sim_input recordable" type="range" id="p_cleaning" min="0" max="1" step="0.001" value="0">
<br>
</span>
<span id="int_block_4">
Summer
@ -121,9 +114,9 @@
</span>
<span id="hospital_capacity">
Hospital capacity at <span id="label_p_hospital">N</span>%
ICU capacity at <span id="label_p_hospital">N</span>%
<br>
<input class="sim_input recordable" type="range" id="p_hospital" min="0" max="500" step="1" value="100">
<input class="sim_input recordable" type="range" id="p_hospital" min="100" max="1000" step="1" value="333">
</span>
<hr id="divider">
@ -171,32 +164,32 @@
</div>
<div id="legend">
<span id="label_susceptible">
<span id="label_susceptible" class="lines">
<icon s></icon> Susceptible<span id="show_percent_s"></span>
<!--<br>-->
<br>
</span>
<span id="label_exposed">
<span id="label_exposed" class="lines">
<icon e></icon> Exposed<span id="show_percent_e"></span>
<!--<br>-->
<br>
</span>
<span id="label_infectious">
<span id="label_infectious" class="lines">
<icon i></icon> Infectious<span id="show_percent_i"></span>
<!--<br>-->
<br>
</span>
<span id="label_removed">
<span id="label_removed" class="lines">
<icon r></icon> Removed<span id="show_percent_r"></span>
</span>
<br>
<br class="lines">
<span id="label_herd_immunity">
- - - Herd Immunity
</span>
<!--<br>-->
<br class="lines">
<span id="label_capacity">
Healthcare Capacity
ICU Capacity
</span>
</div>

View file

@ -244,11 +244,20 @@ bbDOM.onclick = ()=>{
let defaultParams = [
["p_transmission", 4],
["p_exposed", 3],
["p_recovery", 11],
["p_recovery", 10],
["p_waning", 1],
["p_hospital", 100],
["p_hospital", 333],
["p_years", 2],
["p_speed", 30],
["p_non_s", 0],
["p_hygiene", 0],
["p_distancing", 0],
["p_isolate", 0],
["p_quarantine", 0],
["p_cleaning", 0],
["p_masks", 0],
["p_summer", 0],
];
sbDOM.onclick = ()=>{
@ -301,7 +310,7 @@ let _showAllControls = ()=>{
hofp.style.position = "absolute";
hofp.style.top = "-1000px";
setTimeout(()=>{
let newHeight = hofp.getBoundingClientRect().height;
let newHeight = hofp.getBoundingClientRect().height + 10;
hofp.style.position = "";
hofp.style.top = "";
hofp.style.height = originalHeight+"px";

View file

@ -27,7 +27,7 @@ let interventionStrengths = [
['isolate', 0.4],
['quarantine', 0.5],
['cleaning', 0.1],
['masks', 0.5], // 3.4 fold reduction (70%) (what CI?), subtract points for... improper usage? https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3591312/ // cloth masks...
['masks', 0.35], // 3.4 fold reduction (70%) (what CI?), subtract points for... improper usage? https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3591312/ // cloth masks...
['summer', 0.333] // 15°C diff * 0.0225 (Wang et al)
];
@ -120,7 +120,7 @@ let updateModel = (days, fake)=>{
if(I>1) I=1;
// Susceptible & Re
if(!fake && s_dom.disabled){
if((!fake || params.FROZEN_IN_TIME) && s_dom.disabled){
s_dom.value = 1 - S;
}
re = newlyExposed/newlyRecovered;
@ -451,9 +451,9 @@ let draw = ()=>{
});
// ICU bed capacity
// Actually... just make it a generous 1%.
// 0.6%
if(params.p_hospital){
y = (1-((params.p_hospital/100)*0.02))*canvas.height;
y = (1-((params.p_hospital/100)*0.006))*canvas.height;
h = 2;
ctx.fillStyle = "#000000";
ctx.fillRect(0,y,w,h);

View file

@ -18,11 +18,11 @@ int-2a hygiene & distancing
int-2 Flatten Curve / Herd Immunity
int-3 Lockdown for a while
int-4 Intermittent Lockdown "second & third waves"
int-5 Lockdown, then Test & Trace...
int-5b and with Vaccination!
int-4a Calc trace
int-4b Calc vaccinate
int-5 Lockdown, then Test & Trace.. then Vaccination!
int-6a Masks
int-6b Deep Cleaning
int-6c Summer
int-6b Summer
int-7 Test+Trace+Masks + One Circuit Breaker
yrs-1 Decay of Recovered
@ -299,7 +299,7 @@ const STAGES = {
],
SHOW_ALL_AT_START: true,
PLAY_RECORDING: [
["p_distancing",0.344,84], ["p_hygiene",1,84],
["p_distancing",0.275,84], ["p_hygiene",1,84],
["p_distancing",0,340], ["p_hygiene",0,340],
],
SIR: [0.999995,0.000005,0]
@ -323,7 +323,7 @@ const STAGES = {
SHOW_ALL_AT_START: true,
PLAY_RECORDING: [
["p_distancing",1,84], ["p_hygiene",1,84],
["p_distancing",0,234], //["p_hygiene",0,234]
["p_distancing",0,234], ["p_hygiene",0,234]
],
SIR: [0.999995,0.000005,0]
},
@ -345,27 +345,74 @@ const STAGES = {
],
SHOW_ALL_AT_START: true,
PLAY_RECORDING: [
["p_distancing",1,85], ["p_hygiene",1,85],
["p_distancing",0,85+58],
["p_distancing",1,85+58+33],
["p_distancing",0,85+58+33+58],
["p_distancing",1,85+58+33+58+36],
["p_distancing",0,85+58+33+58+36+58],
["p_distancing",1,85+58+33+58+36+58+48],
["p_distancing",0,85+58+33+58+36+58+48+58],
["p_distancing",1,85+58+33+58+36+58+48+58+60],
["p_distancing",0,85+58+33+58+36+58+48+58+60+58],
["p_distancing",1,85+58+33+58+36+58+48+58+60+58+80],
["p_distancing",1,90], ["p_hygiene",1,90],
["p_distancing",0,90+68],
["p_distancing",1,90+68+54],
["p_distancing",0,90+68+54+73],
["p_distancing",1,90+68+54+73+73],
["p_distancing",0,90+68+54+73+73+73],
["p_distancing",1,90+68+54+73+73+73+87],
["p_distancing",0,90+68+54+73+73+73+87+58],
["p_distancing",1,90+68+54+73+73+73+87+58+108],
],
SIR: [0.999995,0.000005,0]
},
"int-4a": {
hide: [
"section_dynamics",
"section_meta","label_c_waning","c_recovery",
"label_c_exposed",
/*"int_block_0",
"int_block_1","int_block_2",*/"int_block_3","int_block_4","int_block_5","hospital_capacity",
"graph",
//"label_s","label_re",
"sim_controls",
"divider"
],
checkboxes: [
["c_recovery", true]
],
inputs: [
["p_hygiene",1],
["FROZEN_IN_TIME", true],
],
disabled:[
["p_s", false]
],
SHOW_ALL_AT_START: true
},
"int-4b": {
hide: [
"section_dynamics",
"section_meta","label_c_waning","c_recovery",
"label_c_exposed",
"int_block_0",
"int_block_1","int_block_2","int_block_3","int_block_4",/*"int_block_5",*/"hospital_capacity",
"graph",
//"label_s","label_re",
"sim_controls",
"divider"
],
checkboxes: [
["c_recovery", true]
],
inputs: [
["FROZEN_IN_TIME", true],
],
/*disabled:[
["p_s", false]
],*/
SHOW_ALL_AT_START: true
},
"int-5": {
hide: [
"section_dynamics",
"label_c_waning","c_recovery","c_exposed",
"section_meta_years",
/*"int_block_2",*/"int_block_3","int_block_4","int_block_5","hospital_capacity"
/*"int_block_2",*/"int_block_3","int_block_4",/*"int_block_5",*/"hospital_capacity"
],
inputs: [
["p_years",2],
@ -378,45 +425,24 @@ const STAGES = {
SHOW_ALL_AT_START: true,
PLAY_RECORDING: [
["p_distancing",1,84], ["p_hygiene",1,84],
["p_distancing",0,175], ["p_quarantine",0.65,175], ["p_isolate",0.65,175],
],
SIR: [0.999995,0.000005,0]
},
"int-5b": {
hide: [
"section_dynamics",
"label_c_waning","c_recovery","c_exposed",
"section_meta_years",
/*"int_block_2",*/"int_block_3","int_block_4",/*"int_block_5",*/"hospital_capacity"
],
inputs: [
["p_years",2],
["p_speed",10],
],
checkboxes: [
["c_recovery", true],
["c_exposed",true]
],
SHOW_ALL_AT_START: true,
PLAY_RECORDING: [
["p_distancing",1,84], ["p_hygiene",1,84],
["p_distancing",0,175], ["p_quarantine",0.65,175], ["p_isolate",0.65,175],
["p_hygiene",0,550], ["p_quarantine",0,550], ["p_isolate",0,550],
["p_vaccines",0.64,550],
["p_vaccines",0.61,550],
["p_vaccines",0,580],
],
SIR: [0.999995,0.000005,0]
},
"int-6c": {
"int-6a": {
hide: [
"section_dynamics",
"section_meta",
"label_c_waning","c_recovery",
"label_c_exposed",
/*"int_block_0",
"int_block_1","int_block_2","int_block_3","int_block_4","int_block_5",*/
"int_block_1","int_block_2","int_block_3",*/"int_block_4","int_block_5",
"hospital_capacity",
"graph",
//"label_s","label_re",
@ -428,6 +454,37 @@ const STAGES = {
],
inputs: [
["FROZEN_IN_TIME", true],
["p_hygiene", 1],
["p_isolate", 0.516],
["p_quarantine", 0.515],
],
disabled:[
["p_s", false]
],
SHOW_ALL_AT_START: true,
_HACK_MAKE_TIME_KEEP_GOING: true,
},
"int-6b": {
hide: [
"section_dynamics",
"section_meta",
"label_c_waning","c_recovery",
"label_c_exposed",
"int_block_0",
"int_block_1","int_block_2","int_block_3",/*"int_block_4",*/"int_block_5",
"hospital_capacity",
"graph",
//"label_s","label_re",
"sim_controls",
"divider"
],
checkboxes: [
["c_recovery", true]
],
inputs: [
["FROZEN_IN_TIME", true],
["p_summer", 1],
],
disabled:[
["p_s", false]
@ -460,15 +517,17 @@ const STAGES = {
// Lift
["p_distancing",0,175],
["p_hygiene",0.66,84],
["p_quarantine",0.33,175], ["p_isolate",0.33,175], ["p_masks",0.33,175],
["p_quarantine",0.4,175],
["p_isolate",0.4,175],
["p_masks",0.17,175],
// Circuit Breaker
["p_distancing",1,60+283],
["p_distancing",0,60+283+60],
["p_distancing",1,365],
["p_distancing",0,365+60],
// Vaccine!
["p_hygiene",0,550], ["p_quarantine",0,550], ["p_isolate",0,550], ["p_masks",0,550],
["p_vaccines",0.64,550],
["p_vaccines",0.6,550],
["p_vaccines",0,580],
],
@ -483,111 +542,153 @@ const STAGES = {
"yrs-1": {
hide: [
/*"section_dynamics",*/
"section_r",
"c_waning","c_recovery","c_exposed",
"section_meta_years",
"int_block_0","int_block_1",
"int_block_2","int_block_3",/*"int_block_4",*/"int_block_5","hospital_capacity"
"label_herd_immunity","label_capacity"
],
inputs: [
["p_years",10],
["p_speed",20],
["p_years",5],
["p_speed",5],
["p_hospital", 0],
["DO_NOT_SHOW_HERD_IMMUNITY", true],
["_HACK_SHOW_SI_PERCENTS",3],
],
checkboxes: [
["c_recovery", true],
["c_exposed",true],
["c_waning", true],
],
SHOW_ALL_AT_START: true,
SIR: [0.999995,0.000005,0]
//SHOW_ALL_AT_START: true,
SIR: [0,0,1],
SHOW_HAND: "tutorial_1"
},
/*
"12": {
hide: ["section_r","section_meta","label_transmission","label_c_recovery","c_waning"],
inputs: [
["p_years",5],
["p_speed",10]
],
checkboxes: [
["c_waning", true]
],
SIR: [0,0,1]
},
"13": {
"yrs-2": {
hide: [
"section_meta","c_waning","c_recovery",
//"section_dynamics",
"c_waning","c_recovery","c_exposed",
"section_meta_years",
"c_waning","c_recovery",
"int_block_0","int_block_1","int_block_2","int_block_3","int_block_4","int_block_5","hospital_capacity"
],
inputs: [
["p_years",5],
["p_years",10],
["p_speed",20],
//["TIME_DELTA", 0.2],
],
checkboxes: [
["c_recovery", true],
["c_exposed",true],
["c_waning", true]
],
SHOW_ALL_AT_START: true,
//SIR: [0.09,0.01,0.9]
},
"13b": {
"yrs-3": {
hide: [
"section_dynamics",
"section_meta","c_waning","c_recovery",
"int_block_0","int_block_1","int_block_2","int_block_3","int_block_4","int_block_5",
//"section_dynamics",
"c_waning","c_recovery","c_exposed",
"section_meta_years",
"c_waning","c_recovery",
"int_block_0","int_block_1","int_block_2","int_block_3",/*"int_block_4",*/"int_block_5","hospital_capacity"
],
inputs: [
["p_years",5],
["p_speed",20],
//["TIME_DELTA", 0.2],
],
checkboxes: [
["c_recovery", true],
["c_waning", true]
],
SIR: [0.09,0.01,0.9]
},
"14": {
hide: [
"section_dynamics",
"section_meta","c_waning","c_recovery",
"int_block_0","int_block_1","int_block_2","int_block_3","int_block_5",
],
inputs: [
["p_years",5],
["p_years",10],
["p_speed",20],
["p_summer",1],
//["TIME_DELTA", 0.2],
],
checkboxes: [
["c_recovery", true],
["c_exposed",true],
["c_waning", true]
],
SHOW_ALL_AT_START: true,
//SIR: [0.09,0.01,0.9]
},
"15": {
"yrs-4": {
hide: [
"section_dynamics",
"section_meta","c_waning","c_recovery",
"int_block_0","int_block_1","int_block_2","int_block_3",
//"c_waning","c_recovery","c_exposed",
"section_meta_years",
"c_waning","c_recovery",
"int_block_0","int_block_1","int_block_2","int_block_3",/*"int_block_4","int_block_5",*/"hospital_capacity"
],
inputs: [
["p_years",5],
["p_years",10],
["p_speed",20],
["p_summer",1],
//["TIME_DELTA", 0.2],
],
checkboxes: [
["c_recovery", true],
["c_exposed",true],
["c_waning", true]
],
SIR: [0.09,0.01,0.9]
PLAY_RECORDING: [
// Vaccine!
["p_vaccines",0.62,365-60],
["p_vaccines",0.0,365],
["p_vaccines",0.62,2*365-60],
["p_vaccines",0.0,2*365],
["p_vaccines",0.62,3*365-60],
["p_vaccines",0.0,3*365],
["p_vaccines",0.62,4*365-60],
["p_vaccines",0.0,4*365],
["p_vaccines",0.62,5*365-60],
["p_vaccines",0.0,5*365],
["p_vaccines",0.62,6*365-60],
["p_vaccines",0.0,6*365],
["p_vaccines",0.62,7*365-60],
["p_vaccines",0.0,7*365],
["p_vaccines",0.62,8*365-60],
["p_vaccines",0.0,8*365],
["p_vaccines",0.62,9*365-60],
["p_vaccines",0.0,9*365],
["p_vaccines",0.62,10*365-60],
["p_vaccines",0.0,10*365]
],
SHOW_ALL_AT_START: true,
//SIR: [0.09,0.01,0.9]
},
"yrs-5": {
hide: [
"section_dynamics",
//"c_waning","c_recovery","c_exposed",
"section_meta_years",
"c_waning","c_recovery",
"int_block_0","int_block_1","int_block_2","int_block_3",/*"int_block_4",*/"int_block_5",
//"hospital_capacity"
],
inputs: [
["p_years",10],
["p_speed",20],
["p_summer",1],
//["TIME_DELTA", 0.2],
],
checkboxes: [
["c_recovery", true],
["c_exposed",true],
["c_waning", true]
],
SHOW_ALL_AT_START: true,
//SIR: [0.09,0.01,0.9]
PLAY_RECORDING: [
// Hospital
["p_hospital",500,365],
["p_hospital",750,365*2],
["p_hospital",1000,365*3]
]
},
*/
//////////////////////////////////////////
// SANDBOX ///////////////////////////////
@ -596,8 +697,10 @@ const STAGES = {
"SB": {
checkboxes: [
["c_recovery", true],
["c_waning", true]
]
["c_waning", true],
["c_exposed",true],
],
SHOW_ALL_AT_START: true,
},
@ -638,6 +741,7 @@ let setStage = (stageID)=>{
// Sliders
stage.inputs = stage.inputs || [];
changeSliders(defaultParams);
changeSliders(stage.inputs);
// Checkboxes
@ -690,4 +794,26 @@ let setStage = (stageID)=>{
};
let stageParams = new URLSearchParams(location.search);
if(stageParams.has('stage')) setStage(stageParams.get('stage'));
if(stageParams.has('stage')) setStage(stageParams.get('stage'));
if(stageParams.has('format')){
if(stageParams.get('format')=='calc'){
document.body.style.overflow = 'hidden';
$('#sandbox').style.margin = '0';
}
if(stageParams.get('format')=='lines'){
$all('.lines').forEach((dom)=>{
dom.style.display = 'none';
});
}
if(stageParams.get('format')=='sb'){
$('#legend').style.display = 'none';
$('#sandbox').style.margin = '0';
}
}
if(stageParams.has('height')){
$('#sandbox').style.height = stageParams.get('height')+'px';
}

View file

@ -14,7 +14,7 @@ div{
#sandbox{
width: 800px;
height: 640px;
height: 540px;
overflow: hidden;
background: #fff;
position: absolute;
@ -264,7 +264,7 @@ icon[r]{
transition: height 0.5s ease-in-out;
overflow: hidden;
height:0px;
padding-right: 2px;
/*padding-right: 2px;*/
}
#month_names{

View file

@ -12,548 +12,701 @@
<body>
<h1 id="toc_0">What Happens Next?</h1>
<p><strong>{WIP, DON&#39;T SHARE YET THX!}</strong></p>
<h2 id="toc_1">COVID-19 Possibilities, Explained With Playable Simulations</h2>
<p>&quot;The only thing to fear is fear itself&quot; was stupid advice.</p>
<p>&quot;The only thing to fear is fear itself&quot; is stupid.<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup></p>
<p>Sure, don&#39;t hoard toilet paper but if policymakers fear fear itself, they&#39;ll downplay dangers to us to avoid &quot;mass panic&quot;. Fear&#39;s not the problem, it&#39;s how we <em>channel</em> our fear. Fear gives us energy to deal with dangers now, and prepare for dangers later.</p>
<p>Sure, don&#39;t hoard toilet paper. But if someone&#39;s so scared to think about scary things, that they deny danger <em>when it&#39;s already here</em>, then they&#39;ve got more problems<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup> than toilet paper.</p>
<p>The problem&#39;s not fear, but how we <em>use</em> our fear. Taiwan and South Korea <em>bravely used their fear</em> (from SARS) to invest in &quot;pandemic insurance&quot;, and it paid off in controlling COVID-19! Fear gives you energy to deal with present dangers &amp; plan for future dangers <em>if</em> you know how to channel your fear.</p>
<p>So, we (Marcel &amp; Nicky) have channeled our COVID-19 fears into making these playable simulations so that <em>you</em> can channel <em>your</em> fear into gaining a deep, intuitive understanding of:</p>
<p>Honestly, we (Marcel, epidemiologist + Nicky, art/code) are worried. We bet you are, too! That&#39;s why we&#39;ve channelled our fear into making these <strong>playable simulations</strong>, so that <em>you</em> can channel your fear into understanding:</p>
<ul>
<li><strong>The Last Few Months</strong> (epidemiology 101, SIR model, R0 &amp; Rt)</li>
<li><strong>The Next Few Months</strong> (lockdowns, contact tracing, masks)</li>
<li><strong>The Next Few Years</strong> (vaccines, summers, loss of immunity)</li>
<li><strong>The Last Few Months</strong> (epidemiology 101, SEIR model, R &amp; R<sub>0</sub>)</li>
<li><strong>The Next Few Months</strong> (lockdowns, contact tracing, masks?)</li>
<li><strong>The Next Few Years</strong> (loss of immunity? no vaccine?)</li>
</ul>
<p>Note: We&#39;re publishing this on April 30th, 2020. Still the early days. As humanity learns more about COVID-19, our plans will and <em>should</em> change but we hope this post will address 90%+ of all future possibilities!</p>
<p>This guide (published April 30th, 2020<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup>) is meant to give you hope <em>and</em> fear. To beat COVID-19 <strong>in a way that also protects our mental &amp; financial health</strong>, we need optimism to create plans, and pessimism to create backup plans. As Gladys Bronwyn Stern once said, <em>“The optimist invents the airplane and the pessimist the parachute.”</em></p>
<p>Honestly, some of the possibilities are scary. And some are hopeful! But preparing for the scary possibilites is what <em>creates</em> the hopeful possibilites. You don&#39;t get to save the prince/ss without facing the dragon.</p>
<p>So, buckle in: we&#39;re about to experience some turbulence.</p>
<p>Let&#39;s bravely use our fear, and face this dragon.</p>
<div class="section">
<div>
<h1>The Last Few Months</h1>
</div>
</div>
<hr>
<p>Pilots use flight simulators to learn how not to crash planes.</p>
<h1 id="toc_2">The Last Few Months</h1>
<p><strong>Epidemiologists use epidemic simulators to learn how not to crash humanity.</strong></p>
<p>...has been a real worldwide cram-school in Epidemiology 101.</p>
<p>So, let&#39;s make a simple &quot;epidemic flight simulator&quot;! In this simulation, <icon i></icon> Infectious people can turn <icon s></icon> Susceptible people into more <icon i></icon> Infectious people:</p>
<p>Pilots use flight simulators to learn how not to crash planes. <strong>Epidemiologists use epidemic simulators to learn how not to crash humanity.</strong></p>
<p><img src="pics/spread.png" alt=""></p>
<p>So, let&#39;s set up an epidemic &quot;flight simulator&quot;! First, we need some simulation rules.</p>
<p>It&#39;s estimated that, <em>at the start</em> of a COVID-19 outbreak, the virus jumps from an <icon i></icon> to an <icon s></icon> <em>approximately</em> every 4 days.<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup></p>
<p>Let&#39;s say you have some Infected (i) people and not-yet-infected Susceptible (s) people. One (i) infects a (s), those 2 (i) infect another 2 (s), those 4 (i) infect another 4 (s), and so on:</p>
<p>If we simulate &quot;double every 4 days&quot; <em>and nothing else</em>, on a population starting with just 0.001% <icon i></icon>, what happens? </p>
<p>// pic</p>
<p><strong>Click &quot;Start&quot; to play the simulation! You can re-play it later with different settings:</strong> (technical caveats: <sup id="fnref3"><a href="#fn3" rel="footnote">3</a></sup>)</p>
<p><em>On average</em>, COVID-19 jumps from an (i) to a (s) every 4 days.<a href="source">1</a> The average # of days it takes for an (i) to infect an (s) is called the <strong>&quot;generation time&quot;</strong><a href="serial%20interval">2-note</a>. (Click the gray circles for sources, and the blue squares for side-notes!)</p>
<div class="sim">
<iframe src="sim?stage=epi-1" width="800" height="540"></iframe>
</div>
<p><em>Rule #1: The more (i)s there are, the faster (s)s become (i)s.</em></p>
<p>This is the <strong>exponential growth curve.</strong> Starts small, then explodes. &quot;Oh it&#39;s just a flu&quot; to &quot;Oh right, flus don&#39;t create <em>mass graves in rich cities</em>&quot;. </p>
<p>// pic - rule</p>
<p><img src="pics/exponential.png" alt=""></p>
<p>If we simulate <em>just this rule and nothing else</em>, here&#39;s what it looks like over 3 months, starting with 99.9% (s) and just 0.1% (i):</p>
<p>But, this simulation is wrong. Exponential growth, thankfully, can&#39;t go on forever. One thing that stops a virus from spreading is if others <em>already</em> have the virus:</p>
<p><strong>Click &quot;Start&quot; play the simulation! You can then change the &quot;generation time&quot;, and see how that changes the simulation:</strong></p>
<p><img src="pics/susceptibles.png" alt=""></p>
<p>// sim</p>
<p>The more <icon i></icon>s there are, the faster <icon s></icon>s become <icon i></icon>s, <strong>but the fewer <icon s></icon>s there are, the <em>slower</em> <icon s></icon>s become <icon i></icon>s.</strong></p>
<p>Starts small (&quot;it&#39;s just a flu&quot;), then explodes (&quot;oh right, flus don&#39;t break hospitals in rich countries&quot;). This is the &quot;J-shaped&quot; <strong>exponential growth curve</strong>.</p>
<p>How&#39;s this change the growth of an epidemic? Let&#39;s find out:</p>
<p>But this simulation is wrong. There are things that prevent an (i) from infecting someone else like if that other person is <em>already</em> an (i):</p>
<div class="sim">
<iframe src="sim?stage=epi-2" width="800" height="540"></iframe>
</div>
<p>// pic - 100% spread, 50% spread, 0% spread</p>
<p>This is the &quot;S-shaped&quot; <strong>logistic growth curve.</strong> Starts small, explodes, then slows down again.</p>
<p><em>Rule #2: The fewer (s)s there are, the slower (s)s become (i)s.</em></p>
<p>But, this simulation is <em>still</em> wrong. We&#39;re missing the fact that <icon i></icon> Infectious people eventually stop being infectious, either by 1) recovering, 2) &quot;recovering&quot; with lung damage, or 3) dying.</p>
<p>// pic - rule</p>
<p>For simplicity&#39;s sake, let&#39;s pretend that all <icon i></icon> Infectious people become <icon r></icon> Recovered. (Just remember that, in reality, some of them are dying.) <icon r></icon>s can&#39;t be infected again, and let&#39;s pretend <em>for now!</em> that they stay immune for life.</p>
<p>Now, what happens if we simulate <em>both</em> these rules?</p>
<p>With COVID-19, it&#39;s estimated you&#39;re <icon i></icon> Infectious for <em>approximately</em> 10 days.<sup id="fnref4"><a href="#fn4" rel="footnote">4</a></sup> Let&#39;s simulate a population starting at 100% <icon i></icon>, most of whom recover after 10 days, then most of the remainder recover after another 10 days, then most of <em>that</em> remainder recover after another 10 days, etc:</p>
<p><strong>Again, click Start to play the simulation!</strong></p>
<div class="sim">
<iframe src="sim?stage=epi-3" width="800" height="540"></iframe>
</div>
<p>// sim</p>
<p>This is the opposite of exponential growth, the <strong>exponential decay curve</strong>.</p>
<p>Starts small, explodes, then slows down again. This is the &quot;S-shaped&quot; <strong>logistic growth curve.</strong></p>
<p>Now, what happens if you simulate S-shaped logistic growth <em>with</em> recovery?</p>
<p>Still, this simulation predicts 100% of people will get the virus, and even the most pessimistic COVID-19 simulations don&#39;t predict <em>that</em>. </p>
<p>What we&#39;re missing: You stop being infectious for COVID-19 when you recover... or die.</p>
<p>For the sake not making these simulations too depressing, let&#39;s only simulate Infected (i) becoming (r) Recovered. (The math works out the same.) And let&#39;s assume <em>(for now!!!)</em> that (r)s can&#39;t get infected again. So, new rule:</p>
<p><em>Rule #3: (i)s eventually become (r)s.</em> </p>
<p>// pic - rule</p>
<p>Let&#39;s have (i)s become (r)s after 14 days, <em>on average</em>.<a href="technical%20notes">3-note</a> This means some (i)s will recover <em>before</em> 14 days, and some recover <em>after</em>! This is closer to real life.</p>
<p>To show <em>only</em> Rule #3, here&#39;s a simulation starting with 100% (i):</p>
<p>// sim</p>
<p>This is the &quot;flipped-J-shaped&quot; <strong>exponential decay curve.</strong></p>
<p>Now, what happens if you simulate all 3 rules at once? What happens when you combine an S-shaped logistic curve with a flipped-J exponential decay curve?</p>
<p>// pic</p>
<p><img src="pics/graphs_q.png" alt=""></p>
<p>Let&#39;s find out:</p>
<p>// sim</p>
<div class="sim">
<iframe src="sim?stage=epi-4" width="800" height="540"></iframe>
</div>
<p>And <em>that&#39;s</em> where that famous curve comes from! It&#39;s not a bell curve, it&#39;s not even a &quot;log-normal&quot; curve. It has no name. But you&#39;ve seen it a zillion times, and beseeched to flatten.</p>
<p>// pic: 3 rules</p>
<p>This is the the <strong>SIR Model</strong><sup id="fnref5"><a href="#fn5" rel="footnote">5</a></sup> <icon s></icon><strong>S</strong>usceptible <icon s></icon><strong>I</strong>nfectious <icon s></icon><strong>R</strong>ecovered the second-most important idea in Epidemiology 101:</p>
<p>This is the <strong>SIR Model</strong>, the <em>second</em>-most important idea in epidemiology.</p>
<p><img src="pics/sir.png" alt=""></p>
<p><strong>NOTE:</strong> The simulations you&#39;ve been hearing in the news are <em>far</em> more complex than the ones you&#39;re seeing here! But the sims you&#39;ll play with here reach the same general conclusions, even if missing the nuances.</p>
<p>NOTE: The simulations that inform policy are <em>far</em> more sophisticated than this! But the SIR Model can still explain the same findings, even if missing the nuances.</p>
<p>One nuance you could add is the <strong>SIRS Model</strong>, where the final &quot;S&quot; also stands for (s) Susceptible this is when people recover, are immune for a bit, <em>then lose that immunity and can be infected again.</em> (We&#39;ll consider this in the Next Few Years section)</p>
<p>Actually, let&#39;s add one more nuance: before an <icon s></icon> becomes an <icon i></icon>, they first become <icon e></icon> Exposed. This is when they have the virus but can&#39;t pass it on yet infect<em>ed</em> but not yet infect<em>ious</em>.</p>
<p>Another nuanced version is the <strong>SEIR Model</strong>, where the &quot;E&quot; stands for (e) Exposed, a brief period of time <em>after</em> you&#39;ve been infected, but <em>before</em> you can infect others. This is called the <strong>&quot;latent period&quot;</strong>, and for COVID-19 it&#39;s around 3 days.<a href="">4</a></p>
<p><img src="pics/seir.png" alt=""></p>
<p>Here&#39;s what happens if you simulate that:</p>
<p>(This variant is called the <strong>SEIR Model</strong><sup id="fnref6"><a href="#fn6" rel="footnote">6</a></sup>, where the &quot;E&quot; stands for <icon e></icon> &quot;Exposed&quot;. Note this <em>isn&#39;t</em> the everyday meaning of &quot;exposed&quot;, when you might or might not have the virus. In this technical definition, &quot;Exposed&quot; means you definitely have it. Science terminology is bad.)</p>
<p>// sim</p>
<p>For COVID-19, it&#39;s estimated that you&#39;re <icon e></icon> infected-but-not-yet-infectious for <em>approximately</em> 3 days.<sup id="fnref7"><a href="#fn7" rel="footnote">7</a></sup> What happens if we add that to the simulation?</p>
<p>Doesn&#39;t change much, so let&#39;s stick to the vanilla SIR model. We brought (e)s up because the exact timing of contagiousness is important in &quot;contact tracing&quot;, which we&#39;ll explain in the Next Few Months section.</p>
<div class="sim">
<iframe src="sim?stage=epi-5" width="800" height="540"></iframe>
</div>
<p>Oh! But almost forgot, the <em>first</em>-most important idea in epidemiology:</p>
<p>Not much, actually! How long you stay <icon e></icon> Exposed changes the ratio of <icon e></icon>-to-<icon i></icon>, and <em>when</em> the peak of current cases (<icon e></icon>+<icon i></icon>) happens... but the <em>height</em> of that peak, and the total % of people infected in the end, stays the same.</p>
<p><strong>&quot;R&quot;</strong></p>
<p>Why&#39;s that? Because of the <em>first</em>-most important idea in Epidemiology 101:</p>
<p>Which is short for &quot;Reproduction Number&quot;. It&#39;s the <em>average</em> number of people an (i) will infect <em>before</em> they recover:</p>
<p><img src="pics/r.png" alt=""></p>
<p>// pic - R&gt;1 R=1 R&lt;1</p>
<p>Short for &quot;Reproduction number&quot;. It&#39;s the <em>average</em> number of people an <icon i></icon> infects <em>before</em> they recover (or die).</p>
<p><strong>R0</strong> (pronounced R-nought) is the Reproduction Number for a virus <em>at the very beginning of an outbreak, before we have immunity or interventions</em>. (Also called &quot;Basic Reproduction Number&quot;)</p>
<p><img src="pics/r2.png" alt=""></p>
<p><strong>Rt</strong> (the &#39;t&#39; stands for time) is the Reproduction Number <em>right now</em>, after we have some immunity or interventions. (Also called &quot;Re&quot;, e standing for &quot;Effective Reproduction Number&quot;. Also called just &quot;R&quot;, to... confuse people)</p>
<p><strong>R</strong> changes over the course of an outbreak, as we get more immunity &amp; interventions.</p>
<p>// pic of R0 and Rt over time for the Famous Curve with peak for inflection!</p>
<p><strong>R<sub>0</sub></strong> (pronounced R-nought) is what R is <em>at the start of an outbreak, before immunity or interventions</em>. R<sub>0</sub> more closely reflects the power of the virus itself, but it still changes from place to place. For example, R<sub>0</sub> is higher in dense cities than sparse rural areas.</p>
<p>(A lot of news outlets confuse these two Rs! They&#39;re different!)</p>
<p>(Most news articles and even some scientific papers! confuse R and R<sub>0</sub>. Again, science terminology is bad)</p>
<p>The R0 for the flu<a href="more">6</a> is around 1.3. The R0 for COVID-19 is somewhere between 2 and 5.<a href="source">7</a> The huge uncertainty is because R0 depends on exactly how quickly new people are infected (&quot;generation time&quot;) vs how quickly people recover<a href="technical%20note">8</a>:</p>
<p>The R<sub>0</sub> for &quot;the&quot; seasonal flu is around 1.28<sup id="fnref8"><a href="#fn8" rel="footnote">8</a></sup>. This means, at the <em>start</em> of a flu outbreak, each <icon i></icon> infects 1.28 others <em>on average.</em> (If it sounds weird that this isn&#39;t a whole number, remember that the &quot;average&quot; mom has 2.4 children. This doesn&#39;t mean there&#39;s half-children running about.)</p>
<p>// sim</p>
<p>The R<sub>0</sub> for COVID-19 is estimated to be around 2.2<sup id="fnref9"><a href="#fn9" rel="footnote">9</a></sup>, though a not-yet-finalized CDC study estimates it was 5.7(!) in Wuhan.<sup id="fnref10"><a href="#fn10" rel="footnote">10</a></sup></p>
<p>Rt for COVID-19 depends on the interventions we do (or don&#39;t) have, as well as how many people <em>aren&#39;t</em> (s) Susceptible. (because they&#39;re (r) Recovered, currently (i) Infected, or... dead.)</p>
<p>In our simulations <em>at the start &amp; on average</em> an <icon i></icon> infects someone every 4 days, over 10 days. &quot;4 days&quot; goes into &quot;10 days&quot; two-and-a-half times. This means <em>at the start &amp; on average</em> each <icon i></icon> infects 2.5 others. Therefore, R<sub>0</sub> = 2.5. (caveats:<sup id="fnref11"><a href="#fn11" rel="footnote">11</a></sup>)</p>
<p>// sim</p>
<p><strong>Play with this R<sub>0</sub> calculator, to see how R<sub>0</sub> depends on recovery time &amp; new-infection time:</strong></p>
<p>Note that when (s)% is low enough, you can get Rt&lt;1 <em>containing the virus!</em> This is called <strong>the &quot;herd immunity&quot; threshold</strong>. &quot;Herd immunity&quot; is a terrible <em>policy</em> (TODO: explain why), but it&#39;s important for understanding epidemiology.</p>
<div class="sim">
<iframe src="sim?stage=epi-6a&format=calc" width="285" height="255"></iframe>
</div>
<p>Now, let&#39;s run the same SIR model simulation again, but this time showing 1) Rt changing over time, and 2) the herd immunity threshold:</p>
<p>But remember, the fewer <icon s></icon>s there are, the <em>slower</em> <icon s></icon>s become <icon i></icon>s. The <em>current</em> reproduction number (R) depends not just on the <em>basic</em> reproduction number (R<sub>0</sub>), but <em>also</em> on how many people are no longer <icon s></icon> Susceptible. (For example, by recovering &amp; getting natural immunity.)</p>
<p>// sim</p>
<div class="sim">
<iframe src="sim?stage=epi-6b&format=calc" width="285" height="390"></iframe>
</div>
<p>Note how total cases ((i)+(r)) <em>overshoots</em> the herd immunity threshold! And the <em>exact</em> moment it does this is when infections peak <em>and</em> when Rt drops below 1!</p>
<p>When enough people have natural immunity, R &lt; 1, and the virus is contained! This is called <strong>herd immunity</strong>, and while it&#39;s <em>terrible</em> policy (we&#39;ll explain why later it&#39;s not for the reason you may think!), it&#39;s essential to understanding Epidemiology 101.</p>
<p>If there&#39;s only one lesson you take away today, here it is, in big shiny letters:</p>
<p>Now, let&#39;s play the SEIR Model again, but showing R<sub>0</sub>, R over time, and the herd immunity threshold:</p>
<h1 id="toc_3">Rt&gt;1 = bad</h1>
<div class="sim">
<iframe src="sim?stage=epi-7" width="800" height="540"></iframe>
</div>
<h1 id="toc_4">Rt&lt;1 = good</h1>
<p>Note: Total cases (gray curve) does not stop at herd immunity, but <em>overshoots</em> it! And it does this <em>exactly when</em> current cases (pink curve) peaks. (This happens no matter how you change the settings try it for yourself!)</p>
<p><strong>NOTE: We do not need to catch all transmissions, or even nearly all transmissions, to stop COVID-19.</strong></p>
<p>This is because when there are more non-<icon s></icon>s than the herd immunity threshold, you get R &lt; 1. And when R &lt; 1, new cases stop growing: a peak.</p>
<p>It&#39;s a paradox COVID-19 is incredibly contagious, yet to contain it, we &quot;only&quot; need to stop 72% of infections. 72%?! That&#39;s, like, a C grade. But if R0 = 3.5, then reducing that by 72% will make Rt &lt; 1 = good.</p>
<p><strong>If there&#39;s only one lesson you take away from this guide, here it is</strong> it&#39;s an extremely complex diagram so please take time to fully absorb it:</p>
<p>(And even if worst-case, R0=5, you &quot;only&quot; need to stop 80%. That&#39;s a B.)</p>
<p><img src="pics/r3.png" alt=""></p>
<p><em>Every</em> COVID-19 intervention you&#39;ve heard of handwashing, social distancing, lockdowns, self-isolation, contact tracing &amp; quarantining, face masks, even &quot;herd immunity&quot; they&#39;re <em>all</em> doing the same thing:</p>
<p><strong>This means: we do NOT need to catch all transmissions, or even nearly all transmissions, to stop COVID-19!</strong></p>
<p>Reducing Rt.</p>
<p>It&#39;s a paradox. COVID-19 is extremely contagious, yet to contain it, we &quot;only&quot; need to stop more than 60% of infections. 60%?! If that was a school grade, that&#39;s a D-. But if R<sub>0</sub> = 2.5, cutting that by 61% gives us R = 0.975, which is R &lt; 1, virus is contained!<sup id="fnref12"><a href="#fn12" rel="footnote">12</a></sup></p>
<p>Let&#39;s see how we can get Rt&lt;1 in a way that protects not just our physical health, but also our mental health, social health, <em>and</em> financial health!</p>
<p><img src="pics/r4.png" alt=""></p>
<hr>
<p>(If you think R<sub>0</sub> or the other numbers in our simulations are too low/high, that&#39;s good you&#39;re challenging our assumptions! There&#39;ll be a &quot;Sandbox Mode&quot; at the end of this guide, where you can plug in your <em>own</em> numbers, and simulate what happens.)</p>
<h1 id="toc_5">The Next Few Months</h1>
<p><em>Every</em> COVID-19 intervention you&#39;ve heard of handwashing, social/physical distancing, lockdowns, self-isolation, contact tracing &amp; quarantining, face masks, even &quot;herd immunity&quot; they&#39;re <em>all</em> doing the same thing:</p>
<p>...could have been worse.</p>
<p>Getting R &lt; 1.</p>
<h3 id="toc_6">Scenario 0: Do Absolutely Nothing</h3>
<p>So now, let&#39;s use our &quot;epidemic flight simulator&quot; to figure this out: How can we get R &lt; 1 in a way <strong>that also protects our mental health <em>and</em> financial health?</strong></p>
<p>For COVID-19, 1 in 20 (i)s need to be hospitalized. In rich countries like the US and UK, there&#39;s 1 hospital bed for every 1000 people. Therefore: a rich country can handle a maximum of 20 (i)s per 1000 people or, a maximum of 2% of the population being simultaneously sick.</p>
<p>Brace yourselves for an emergency landing...</p>
<p>Here&#39;s the same simulation from before, but with the &quot;2%&quot; threshold drawn:</p>
<div class="section">
<div>
<h1>The Next Few Months</h1>
</div>
</div>
<p>// sim</p>
<p>...could have been worse. Here&#39;s a parallel universe we avoided:</p>
<p>It&#39;s not good.</p>
<h3 id="toc_0">Scenario 0: Do Absolutely Nothing</h3>
<p>That&#39;s the same thing the March 16th Imperial College report found: if we do nothing, hospitals break. Almost everyone gets infected. Even with a low 0.5% infection fatality ratio, 80% of people infected in a large country like the US still means over a million dead... <em>IF</em> we did nothing.</p>
<p>Around 1 in 20 people infected with COVID-19 need to go to an ICU (Intensive Care Unit).<sup id="fnref13"><a href="#fn13" rel="footnote">13</a></sup> In a rich country like the USA, there&#39;s 1 ICU per 3400 people.<sup id="fnref14"><a href="#fn14" rel="footnote">14</a></sup> Therefore, the USA can handle 20 out of 3400 people being <em>simultaneously</em> infected or, 0.6% of the population.</p>
<p>(A lot of news &amp; social media chose to report the scary bit, <em>without</em> &quot;IF WE DO NOTHING&quot;. Fear was channeled into clicks, not understanding. <em>Sigh.</em>)</p>
<p>Even if we <em>more than tripled</em> that capacity to 2%, here&#39;s what would&#39;ve happened <em>if we did absolutely nothing:</em></p>
<h3 id="toc_7">Scenario 1: Flatten The Curve</h3>
<div class="sim">
<iframe src="sim?stage=int-1&format=lines" width="800" height="540"></iframe>
</div>
<p>Handwashing was discovered in ____ by the doctor _______, when he realized that by getting his staff to wash their hands, child deaths in his hospital were cut by <em>90%!</em></p>
<p>Not good.</p>
<p>Doctors around the world immediately hailed his life-saving discovery, and ha ha just kidding they committed him to an asylum where he was beat to death by guards.</p>
<p>That&#39;s what <a href="http://www.imperial.ac.uk/mrc-global-infectious-disease-analysis/covid-19/report-9-impact-of-npis-on-covid-19/">the March 16 Imperial College report</a> found: do nothing, and we run out of ICUs with 80%+ of the population infected.</p>
<p>In any case, frequent handwashing reduces your chances of catching influenza by 50%[9]() And if we combine this with other hygiene tips cough into your elbow, don&#39;t touch your face let&#39;s guess-timate that 100% compliance (which we will <em>NOT</em> get) will result in a 60% reduction in new infections, in Rt:</p>
<p>Even if only 0.5% of infected die a generous assumption when there&#39;s no more ICUs in a large country like the US, with 300 million people, 0.5% of 80% of 300 million = still 1.2 million dead... <em>IF we did nothing.</em></p>
<p>// controls</p>
<p>(Lots of news &amp; social media reported &quot;80%+ will be infected&quot; <em>without</em> &quot;IF WE DO NOTHING&quot;. Fear was channelled into clicks, not understanding. <em>Sigh.</em>)</p>
<p>It can&#39;t get Rt&lt;1, but it <em>does</em> reduce it! How does that affect the epidemic?</p>
<h3 id="toc_1">Scenario 1: Flatten The Curve / Herd Immunity</h3>
<p>// sim</p>
<p>The &quot;Flatten The Curve&quot; plan was touted by every public health organization, while the United Kingdom&#39;s original &quot;herd immunity&quot; plan was universally booed. They were <em>the same plan.</em> The UK just communicated theirs poorly.<sup id="fnref15"><a href="#fn15" rel="footnote">15</a></sup></p>
<p>That&#39;s a... <em>better</em> catastrophe.</p>
<p>Both plans, though, are horribly flawed.</p>
<p>Contrary to many news &amp; social media posts, &quot;flattening the curve&quot; <em>does also reduce total cases</em>. But as long as Rt is still above 1, our hospitals will still most likely shatter.</p>
<p>First, let&#39;s look at the two main ways to &quot;flatten the curve&quot;: handwashing &amp; physical distancing.</p>
<p>That&#39;s what the Imperial College report also found: any attempt at mere <strong>&quot;mitigation&quot;</strong> (Reduce Rt, but still Rt&gt;1 = bad) will fail, and the only way out is <strong>&quot;suppression&quot;</strong>. (Reduce Rt, so that Rt&lt;1 = good!)</p>
<p>Increased handwashing cuts flus &amp; colds in high-income countries by ~25%<sup id="fnref16"><a href="#fn16" rel="footnote">16</a></sup>, while the city-wide lockdown in London cut close contacts by ~70%<sup id="fnref17"><a href="#fn17" rel="footnote">17</a></sup>. So, let&#39;s assume handwashing can reduce R by <em>up to</em> 25%, and distancing can reduce R by <em>up to</em> 70%:</p>
<p><em>Crush</em> the curve, not just flatten it. For example, by doing a...</p>
<p><strong>Play with this calculator to see how % of non-<icon s></icon>, handwashing, and distancing reduce R:</strong> (this calculator visualizes their <em>relative</em> effects, which is why increasing one <em>looks</em> like it decreases the effect of the others.<sup id="fnref18"><a href="#fn18" rel="footnote">18</a></sup>)</p>
<h3 id="toc_8">Scenario 2: Months-Long Lockdown (we are here)</h3>
<div class="sim">
<iframe src="sim?stage=int-2a&format=calc" width="285" height="260"></iframe>
</div>
<p>There&#39;s different degrees of &quot;physical distancing&quot;. (previously called &quot;social distancing&quot;) At the mildest, avoiding crowds. At the strongest, a full city-wide lockdown.</p>
<p>Now, let&#39;s simulate what happens to a COVID-19 epidemic if, starting March 2020, we had increased handwashing but only <em>mild</em> physical distancing so that R is lower, but still above 1:</p>
<p>London&#39;s full lockdown reduced Rt by 70%.<a href="">11</a> So, let&#39;s guess-timate that as the maximum effect for distancing.</p>
<div class="sim">
<iframe src="sim?stage=int-2&format=lines" width="800" height="540"></iframe>
</div>
<p>Here&#39;s how hygiene &amp; distancing together change Rt:</p>
<p>Three notes:</p>
<p>// calc</p>
<ol>
<li><p>This <em>reduces</em> total cases! Lots of folks think &quot;Flatten The Curve&quot; spread outs cases without reducing the total. This is impossible in <em>any</em> Epidemiology 101 model. But because the news reported &quot;80%+ will be infected&quot; as inevitable, folks thought total cases will be the same no matter what. <em>Sigh.</em></p></li>
<li><p>Due to the extra interventions, current cases (pink curve) peaks <em>before</em> herd immunity is reached. And in fact, total cases doesn&#39;t overshoot, but <em>goes to</em> herd immunity the UK&#39;s plan! At that point, R &lt; 1, you can let go of all other interventions, and COVID-19 stays contained! Well, except for one problem...</p></li>
<li><p>You still run out of ICUs. For several months. (and remember, we <em>already</em> tripled ICUs for these simulations)</p></li>
</ol>
<p>That&#39;s Rt&lt;1 = good!</p>
<p>That was the other finding of the March 16 Imperial College report, which convinced the UK to abandon its original plan. Any attempt at <strong>mitigation</strong> (reduce R, but R &gt; 1) will fail. The only way out is <strong>suppression</strong> (reduce R so that R &lt; 1).</p>
<p>Let&#39;s see what happens if we <em>crush</em> the curve with a lockdown for 3 months, then finally, <em>finally</em> return to normal life:</p>
<p>// pic: difference </p>
<p><strong>Remember, you can re-play the simulation, and change the sliders <em>WHILE</em> it&#39;s running, to simulate your own COVID-19 strategy! You can also pause &amp; slow down the simulation:</strong></p>
<p>That is, don&#39;t merely &quot;flatten&quot; the curve, <em>crush</em> the curve. For example, with a...</p>
<p>// sim</p>
<h3 id="toc_2">Scenario 2: Months-Long Lockdown</h3>
<p>Let&#39;s see what happens if we <em>crush</em> the curve with a 5-month lockdown, reduce <icon i></icon> to nearly nothing, then finally <em>finally</em> return to normal life:</p>
<div class="sim">
<iframe src="sim?stage=int-3&format=lines" width="800" height="540"></iframe>
</div>
<p>Oh.</p>
<p>Right, as soon as you remove the lockdown, Rt&gt;1 again, and so you get a spike in cases that&#39;s almost as bad as if you&#39;d done <em>nothing at all.</em></p>
<p>This is the &quot;second wave&quot; everyone&#39;s talking about. As soon as we remove the lockdown, we get R &gt; 1 again. So, a single leftover <icon i></icon> (or imported <icon i></icon>) can cause a spike in cases that&#39;s almost as bad as if we&#39;d done Scenario 0: Absolutely Nothing.</p>
<p><strong>A lockdown isn&#39;t a cure, it&#39;s just a restart.</strong></p>
<p>So, what, do we just lockdown again &amp; again?</p>
<h3 id="toc_9">Scenario 3: Intermittent Lockdown</h3>
<h3 id="toc_3">Scenario 3: Intermittent Lockdown</h3>
<p>// sim</p>