{ Analytica Model Simple_SICR_model, encoding="UTF-8" }
SoftwareVersion 5.4.0
{ System Variables with non-default values: }
Time := 7-Mar-2020 .. 31-Dec-2020
WindState Time: 2,98,83,720,350
SampleSize := 1000
Att_ContLineStyle Run: 1
{!40300|Att_SlicerPopupSize Run: 232,972}
TypeChecking := 1
Checking := 1
RandomSeed := 22
SaveOptions := 2
SaveValues := 0
{!40400|Sys_PdfSmoothMethod := 1}
{!50400|Sys_UseLegacyColors := 1}
{!50400|UncertainLMH_Method := 2}
{!-50299|DiagramColor Model: 65535,65535,65535}
{!-50299|DiagramColor Module: 65535,65535,65535}
{!-50299|DiagramColor LinkModule: 65535,65535,65535}
{!-50299|DiagramColor Library: 65535,65535,65535}
{!-50299|DiagramColor LinkLibrary: 65535,65535,65535}
{!-50299|DiagramColor Form: 65535,65535,65535}
Outputs Chance: Index Uncertain_quantity
NodeInfo FormNode: 1,0,0,,0,0,,,,0,,,0
{!-50299|NodeColor Text: 62258,62258,62258}
AskAttribute Check,Variable,Yes
Model Simple_SICR_model
Title: Simple SICR model for COVID-19 in US
Description: This is a simple Susceptible-incubating-Contagious-Recovered progression model applied to the COVID-19 outbreak, and treating the USA as a closed system. I am building this model on 8-Mar-2020, at which time there is a sense that the outbreak is just getting started here in the US. As of this writing, there is a lot of uncertainty about infection rates, incubation times, mortality rates, etc., with reported estimates appearing daily and fluctuating widely. So the purpose of this model is to explore the possibilities at a very early stage with an extremely simplified model. Indeed, I feel like I learned quite a bit about what the future may have in store as a result of building and playing with this model.~
~
There are so many simplifications and caveats to this model, that you should not use the results computed by this model as your only source of information. There is much value tobe had by using the results as one source of information among many. I encourage you to tweak the input estimates and explore what happens, and pay a lot of attention to the full distribution -- especially the tails -- and not just to the mean.~
~
I found that the tail gets pretty scary. In other word, I found that even though the median case may appear unconcerning (depending on input estimates), it tends to predict that there is a 5% probability that could turn out incomprehensibly dire. I have a hard time deciding how seriously to take that, but I also have found that it isn't easy to explain why that can't be right. Again, this isn't the final say -- other methods, such as direct comparison to other pandemic base rates -- should be combined with insights you gain here.~
~
Author: Lonnie Chrisman, Ph.D.~
Lumina Decision Systems
Date: Sat, Mar 7, 2020 2:18 PM
DiagState: 2,6,10,995,545,17
WindState: 2,77,125,887,677
FontStyle: Arial,15
FileInfo: 0,Model Simple_SICR_model,2,2,0,0,C:\Users\User\Documents\Lumina\Blogs\Simple COVID-19.ana
FormNode Fo936710973
Title: Estimates
Definition: 0
NodeLocation: 92,40,1
NodeSize: 84,16
Original: Estimates
Module Susceptible
Title: Susceptible
Description: Variables in this module track the susceptible population -- those who aren't immune.
NodeLocation: 128,200,1
NodeSize: 56,24
DiagState: 2,131,336,824,384,17
WindState: 2,187,407,720,350
Variable Susceptible_populati
Title: Susceptible population
Units: People
Description: The number of people in the US who are able to catch the disease if exposed. ~
~
People who are recovered are not susceptible (i.e., assumes once recovered, you are immune).~
~
One little "cheat" here (a simplifying assumption). The model doesn't change the total population. So birth and deaths, ever excess deaths due to the disease, are not being removed from the population. If indeed the number of deaths does not alter the total population dramatically, and the total population isn't changing dramatically due to other influences (births, immigration, emmigration), this shouldn't matter much to the results.
Definition: Total_population - Number_immune - Number_contagious - Cumulative_deaths
NodeLocation: 472,200,1
NodeSize: 56,24
WindState: 2,81,494,720,350
ValueState: 2,120,326,958,481,1,MIDM
GraphSetup: Att_GraphValueRange Susceptible_populati:1,,,0
NumberFormat: 2,D,4,2,0,0,4,0,$,0,"ABBREV",0,,,0,0,15
Constant Total_population
Title: Total population
Units: People
Description: The total population of the US. ~
This is modelled as a closed system, which an assumption that the total population does not change significantly during the year being studied. The assumption means that we aren't reducing the population even by the number of people who die. We also aren't including growth from births and immigration nor deaths from other any cause or emmigration. Also, the model assumes a closed system, with no travellers entering and exiting the US for they year.
Definition: 330M
NodeLocation: 376,288,1
NodeSize: 48,24
Variable Number_immune
Title: Number immune
Units: Persons
Description: The number of people who are immune to the disease, meaning cannot catch it (again). A person may be unable to catch the disease either because he was innately immune (never able to catch it), or because he already caught it, and we assume once you've caught it and recover, you are immune.
Definition: Dynamic(Total_population*Pct_with_innate_immu,~
Self[Time-1] + New_daily_recovered[Time-1]~
)
NodeLocation: 312,200,1
NodeSize: 48,24
WindState: 2,247,476,720,350
ValueState: 2,340,347,557,449,1,MIDM
Chance Pct_with_innate_immu
Title: Pct with innate immunity
Description: The percent of the population who have an innate immunity, for whatever reason. These people will not catch the virus when exposed to it.
Definition: ~
Unc(0)
NodeLocation: 160,200,1
NodeSize: 64,24
ValueState: 2,797,402,416,303,0,SAMP
NumberFormat: 2,%,4,2,0,0,4,0,$,0,"ABBREV",0,,,0,0,15
Att__TotalsIndex: []
Module Tools
Title: Tools
Author: User
Date: Sun, Mar 8, 2020 1:03 PM
NodeLocation: 96,48,1
NodeSize: 48,24
NodeInfo: 1,0,0
Index LMH
Title: LMH
Definition: ['Low','Medium','High']
NodeLocation: 96,48,1
NodeSize: 48,24
Att_PrevIndexValue: ['Low','Medium','High']
Index Uncertain_quantity
Title: Uncertain quantity
Definition: #FindObjects(class:chance)
NodeLocation: 96,112,1
NodeSize: 48,24
ValueState: 2,4,36,416,303,,MIDM
MetaOnly: 1
Att_PrevIndexValue: [Pct_with_innate_immu,Infection_rate,Time_to_recover,Initially_infected,Mortality_rate,Time_to_contagious]
Variable Estimates
Title: Estimates
Description: A place to edit the assessments of the uncertain inputs to the model.
Definition: Table(LMH,Uncertain_quantity)(~
0.1,0.1,2,600,5m,3,~
0.2,0.3,5,1000,9m,5,~
0.3,0.5,8,3000,0.02,9)
NodeLocation: 96,168,1
NodeSize: 48,24
WindState: 2,98,83,720,350
DefnState: 2,48,561,433,231,0,DFNM
ValueState: 2,316,301,429,251,,MIDM
Aliases: FormNode Fo936710973
ReformDef: [LMH,Uncertain_quantity]
{!40700|Att_CellFormat: CellFormats(CellSpan(Uncertain_quantity,CellNumberFormat('Percentage',2,0,0,dateFormat:'ABBREV',fullPrecision:0,numbersAsDates:0,datesAsNumbers:0,digits_:4,zeroes_:2),5,6,header:0),CellSpan(Uncertain_quantity,CellNumberFormat('Percentage',2,0,0,dateFormat:'ABBREV',fullPrecision:0,numbersAsDates:0,datesAsNumbers:0,digits_:4,zeroes_:2),1,header:0),CellSpan(Uncertain_quantity,CellNumberFormat('Suffix',2,0,0,dateFormat:'ABBREV',fullPrecision:0,numbersAsDates:0,datesAsNumbers:0),6,header:0))}
{!50000|Att_ColumnWidths: [,LMH,\([,,62])]}
Function Unc(lb,ub:optional number)
Title: Unc
Definition: Local params := Estimates[Uncertain_quantity=HandleFromIdentifier("_caller")];~
Local L:= params[LMH='Low'];~
Local M:= params[LMH='Medium'];~
Local H:= params[LMH='High'];~
if L=H then M else ~
UncertainLMH( L, M, H, lb:lb, ub:ub)
NodeLocation: 96,224,1
NodeSize: 48,24
WindState: 2,20,436,880,350
Close Tools
Alias Al1156952893
Title: New daily recovered
Definition: 1
NodeLocation: 312,112,1
NodeSize: 48,24
Original: New_daily_recovered
Alias Al1401795389
Title: Number contagious
Definition: 1
NodeLocation: 472,112,1
NodeSize: 56,24
Original: Number_contagious
Alias Al1650701117
Title: Cumulative deaths
Definition: 1
NodeLocation: 536,288,1
NodeSize: 56,24
Original: Cumulative_deaths
Close Susceptible
Module Incubating
Title: Incubating
Description: Variables in this module track the population who are infected but not yet contagious.
NodeLocation: 344,200,1
NodeSize: 56,24
DiagState: 2,206,321,730,368,17
WindState: 2,200,353,720,350
Chance Infection_rate
Title: Infection rate
Units: Persons/day
Description: If everyone else in the population were susceptible, this would be the number of other people an infected person would infect per day, on average.
Definition: Unc(0)
NodeLocation: 96,176,1
NodeSize: 48,24
WindState: 2,46,420,717,350
ValueState: 2,494,392,454,416,1,MIDM
GraphSetup: Att_GraphValueRange Infection_rate:|1:1,,1
Att__TotalsIndex: []
{!40200|Att_GraphSetupSlices: [3,1,DensityIndex,1]}
Chance Initially_infected
Title: Initially infected
Units: People
Description: The number of people currently infected (and infectious) in the US as of 8-Mar-2020 -- the day that I am creating this model. The official reported statistics on this day in the US is 484 (source: Worldometer.info), so that can be taken as a lower bound. As of today, very minimal testing has occurred, leaving much possibility that the actual number of infectious cases is substantially higher than that.
Definition: Unc(484)
NodeLocation: 424,40,1
NodeSize: 56,24
ValueState: 2,511,336,798,449,0,SAMP
Aliases: Alias Al277721917
GraphSetup: Att_GraphValueRange Initially_infected:|1:1,,0,,,,,-523.5926806926727,13.796041905879974K,0~
{!40400|Sys_PdfSmoothMethod:0}~
DistSteps:1
Att__TotalsIndex: []
{!40200|Att_GraphSetupSlices: [3,1,DensityIndex,1]}
Variable New_daily_incubating
Title: New daily incubating
Units: People
Description: The number of people where become contagious on this day, but were not contagious the day prior.
Definition: Susceptible_populati * Infection_rate * Percent_of_populatio
NodeLocation: 256,128,1
NodeSize: 48,24
ValueState: 2,387,249,893,500,1,CONF
Variable Cumulative_infected
Title: Cumulative infected
Description: The total number of people in the US who have caught the disease up to the given date.~
This includes those who have recovered, died, or are currently contagious.
Definition: Initially_infected + Cumulate(New_daily_incubating,time)
NodeLocation: 256,224,1
NodeSize: 56,24
ValueState: 2,628,345,659,487,1,CONF
GraphSetup: Att_GraphValueRange Cumulative_infected:1,,,,1
ReformVal: [Time,Null,2,Undefined,1]
Variable Percent_who_contract
Title: Percent who contracted
Description: Percent of the total population who contracted the disease at some point during the year.
Definition: Cumulative_infected / Total_population
NodeLocation: 408,224,1
NodeSize: 56,24
ValueState: 2,241,206,670,401,1,CONF
GraphSetup: Att_GraphValueRange Percent_who_contract:1,,,0,1
NumberFormat: 2,%,2,4,0,0,2,0,$,0,"ABBREV",0,,,0,0,15
{!40700|Att_CellFormat: CellSpan((Self.Probability),CellNumberFormat('Percentage',4,0,0,dateFormat:'ABBREV',fullPrecision:0,numbersAsDates:0,datesAsNumbers:0,digits_:2,zeroes_:4),1,5,header:1)}
Variable Number_incubating
Title: Number incubating
Definition: Dynamic( Initially_infected * (1-contagious_per_infec), ~
Self[Time-1] + New_daily_incubating - New_daily_contagious[Time-1]~
)
NodeLocation: 424,128,1
NodeSize: 48,24
ValueState: 2,436,443,416,303,1,MIDM
Aliases: Alias Al1710601021
Variable Percent_of_populati1
Title: Percent of population infected
Description: Percent of the population infected but not yet contagious.
Definition: Number_incubating / Total_population
NodeLocation: 576,128,1
NodeSize: 48,32
Alias Al841855805
Title: Percent of population contagious
Definition: 1
NodeLocation: 104,56,1
NodeSize: 48,32
Original: Percent_of_populatio
Variable contagious_per_infec
Title: contagious per infected
Definition: Time_to_recover / (Time_to_recover + Time_to_contagious);0
NodeLocation: 568,40,1
NodeSize: 56,24
Aliases: Alias Al149795645
Close Incubating
Module Contagious
Title: Contagious
Description: Variables in this module track people who are infected and contagious.
NodeLocation: 536,200,1
NodeSize: 56,24
DiagState: 2,307,171,760,461,17
WindState: 2,485,453,720,350
Variable Number_contagious
Title: Number contagious
Units: People
Description: The number of people who currently are contagious (i.e., have the disease).
Definition: Dynamic(Initially_infected * contagious_per_infec, ~
Self[Time-1] + New_daily_contagious[Time-1] - New_daily_recovered[Time-1] - Daily_excess_deaths[time-1]~
)
NodeLocation: 296,240,1
NodeSize: 56,24
ValueState: 2,276,274,991,534,1,CONF
Aliases: Alias Al286110525, Alias Al1401795389, Alias Al609071933
GraphSetup: Att_GraphIndexRange Time:1,,1,,,,,42429,42520.468518555164,0~
Att_GraphValueRange Number_contagious:1,,1,,0,,,277.6074409484863,462.4716639518738,0~
Graph_HLabelRotation:45
ReformVal: [Time,Undefined,2,Undefined,Undefined,0]
Att__TotalsIndex: [Time,Run]
Att_ResultSliceState: [Run,11,Time,1]
Variable Percent_of_populatio
Title: Percent of population contagious
Description: The percent of the population that are infected and contagious on the given day.
Definition: Number_contagious / Total_population
NodeLocation: 456,352,1
NodeSize: 48,32
WindState: 2,266,369,720,350
ValueState: 2,410,390,670,332,1,MIDM
Aliases: Alias Al841855805
NumberFormat: 2,%,2,9,0,0,2,0,$,0,"ABBREV",0,,,0,0,15
Variable New_daily_contagious
Title: New daily contagious
Definition: Number_incubating / Time_to_contagious
NodeLocation: 296,352,1
NodeSize: 56,24
NodeInfo: 1,,,,,,,0,,,,,,0
ValueState: 2,19,541,416,303,0,MIDM
Chance Time_to_contagious
Title: Time to contagious
Units: Days
Description: The number of days an infection person is non-contagious before becoming infectious.
Definition: Unc(1)
NodeLocation: 296,440,1
NodeSize: 48,24
NumberFormat: 2,D,4,2,0,0,4,0,$,0,"ABBREV",0,,,0,0,15
Alias Al1710601021
Title: Number infected
Definition: 1
NodeLocation: 104,232,1
NodeSize: 48,24
Original: Number_incubating
Alias Al487437117
Title: Daily excess deaths
Definition: 1
NodeLocation: 464,240,1
NodeSize: 48,32
Original: Daily_excess_deaths
Alias Al277721917
Title: Initially infected
Definition: 1
NodeLocation: 104,120,1
NodeSize: 64,24
Original: Initially_infected
Alias Al149795645
Title: contagious per infected
Definition: 1
NodeLocation: 112,320,1
NodeSize: 56,24
Original: contagious_per_infec
Variable Number_infected
Title: Number infected
Description: The number of infected people on the given day, which includes both the incubating and contagious infected.
Definition: Number_contagious + Number_incubating
NodeLocation: 296,120,1
NodeSize: 48,24
ValueState: 2,148,155,733,378,1,MEAN
Variable Projected_number_of_
Title: Projected number of people
Definition: [Number_infected,Number_contagious,Number_incubating,Cumulative_deaths]
NodeLocation: 552,104,1
NodeSize: 48,32
ValueState: 2,535,349,644,443,1,CONF
GraphSetup: Graph_HLabelRotation:45
ReformVal: [Time,Self,0]
Att_ResultSliceState: [Sys_LocalIndex('Probability'),5,Self,1,Time,1]
Close Contagious
Module Recovered
Title: Recovered
Description: Variables in this module track the number of people who have recovered, and hence are no longer contagious and are immune.
NodeLocation: 344,88,1
NodeSize: 56,24
DiagState: 2,138,395,537,325,17
WindState: 2,448,429,720,350
Chance Time_to_recover
Title: Time to recover
Units: days
Description: The average time it takes someone to become non-infectious from the point where they become contagious. Note: Assumes this is a single number, but we are uncertain about it.~
~
Given the 1-day time step, this needs to be at least one day or things won't work.
Definition: Unc(1)
NodeLocation: 232,64,1
NodeSize: 56,24
WindState: 2,220,371,720,350
ValueState: 2,32,15,542,450,0,SAMP
Aliases: Alias Al951300925
Att__TotalsIndex: []
Variable New_daily_recovered
Title: New daily recovered
Units: People
Description: The number of people who where infected the day before but become non-infectious on the given day.
Definition: Number_contagious / Time_to_recover
NodeLocation: 232,136,1
NodeSize: 48,24
WindState: 2,575,390,720,350
ValueState: 2,5,18,901,570,0,MIDM
Aliases: Alias Al1156952893
Alias Al609071933
Title: Number contagious
Definition: 1
NodeLocation: 96,136,1
NodeSize: 56,24
Original: Number_contagious
Close Recovered
Module Deaths
Title: Deaths
NodeLocation: 712,200,1
NodeSize: 48,24
DiagState: 2,408,132,824,465,17
Variable Daily_excess_deaths
Title: Daily excess deaths
Description: The number of people who die from the disease on a given day.
Definition: Number_contagious * Daily_mortality_rate
Check: self>=0
NodeLocation: 256,160,1
NodeSize: 48,32
WindState: 2,98,83,718,350
ValueState: 2,200,210,991,619,1,MEAN
Aliases: Alias Al487437117
GraphSetup: Att_GraphValueRange Daily_excess_deaths:1,,1,,,,,18882.043659687042,10000000,0~
Att_GraphIndexRange Time:1,,1,,,,,42.455264421105385K,42.45555029657483K,0
ReformVal: [Null,Time,Undefined,Undefined,Undefined,0]
Att__TotalsIndex: []
Att_ResultSliceState: [Run,11,Time,1]
Chance Mortality_rate
Title: Mortality rate
Description: The percent of individuals who contract the disease who then die from it.
Definition: Unc(0,1)
NodeLocation: 256,80,1
NodeSize: 48,24
ValueState: 2,166,95,605,487,1,SAMP
GraphSetup: Att_GraphValueRange Mortality_rate:|1:1,,0,,,,,-0.024821767210960383,0.2248143047094345,0~
{!40400|Sys_PdfSmoothMethod:0}~
DistSteps:1
NumberFormat: 2,%,4,2,0,0,4,0,$,0,"ABBREV",0,,,0,0,15
Att__TotalsIndex: []
{!40200|Att_GraphSetupSlices: [3,1,DensityIndex,1]}
Variable Cumulative_deaths
Title: Cumulative deaths
Units: People
Description: The total number of deaths from the disease so far, up to the given date.
Definition: Dynamic( Deaths_initially + Daily_excess_deaths,~
Self[Time-1] + Daily_excess_deaths~
)
NodeLocation: 256,248,1
NodeSize: 56,24
ValueState: 2,351,232,695,476,1,MEAN
Aliases: Alias Al1650701117
ReformVal: [Time,Null,0]
Att_ResultSliceState: [Sys_LocalIndex('Probability'),3,Time,1]
Att_ColorRole: Null
Objective Total_deaths_in_2020
Title: Total deaths for 2020
Units: People
Description: The forecasted number of people who die from the disease in the year 2020.
Definition: Sum(Daily_excess_deaths,Time) + Deaths_initially
NodeLocation: 400,160,1
NodeSize: 48,32
ValueState: 2,416,287,766,473,1,XCDZ
Aliases: FormNode Fo1973269309
GraphSetup: Att_AreaFill Graph_CntExcd_Valdim:1~
Att_GraphValueRange Graph_CntExcd_Valdim:1,,,1,0~
DistSteps:1~
{!40400|Sys_PdfSmoothMethod:0}~
Att_GraphValueRange Total_deaths_in_2020:|1:1,,0,,,,,0,5363959.856331348,0~
DistResol:25~
StatsSelect:[1,1,1,1,1,1,1,1]~
StatsLabels:['Min','Median','Mean','Max','Std. Dev.','Variance','Skewness','Kurtosis']
NumberFormat: 2,D,4,2,0,0,4,0,$,0,"ABBREV",0,,,0,0,15
Att__TotalsIndex: []
ProbabilityNumberFmt: 2,%,4,2,0,0,4,0,$,0,"ABBREV",0,,,0,0,15
{!40200|Att_GraphSetupSlices: [3,1,DensityIndex,1]}
Constant Deaths_initially
Title: Deaths initially
Units: People
Description: Number of reported deaths in the US as of 8-Mar-2020.
Definition: 19
NodeLocation: 400,80,1
NodeSize: 48,24
Alias Al286110525
Title: Number contagious
Definition: 1
NodeLocation: 416,248,1
NodeSize: 56,24
Original: Number_contagious
Variable Daily_mortality_rate
Title: Daily mortality rate
Description: The fraction of people in the contagious stage who die in a given day.
Definition: Mortality_rate / Time_to_recover
NodeLocation: 96,160,1
NodeSize: 48,32
ValueState: 2,84,91,416,303,,CDFP
Alias Al951300925
Title: Time to recover
Definition: 1
NodeLocation: 96,80,1
NodeSize: 56,24
Original: Time_to_recover
Close Deaths
FormNode Fo1973269309
Title: Total deaths for 2020
Definition: 1
NodeLocation: 600,288,1
NodeSize: 160,16
Original: Total_deaths_in_2020
Close Simple_SICR_model