{ 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