# Message Boards

Answer
(Unmark)

GROUPS:

3

# SEI2HR model with quarantine scenarios

Posted 1 year ago

SEI2HR model with quarantine scenarios Version 0.8
Introduction The epidemiology compartmental model, [Wk1], presented in this notebook -- SEI2HR -- deals with the left-most and middle rectangles in this diagram: In[]:= ImageResize[Import["https://github.com/antononcube/SystemModeling/raw/master/Projects/Coronavirus-propagation-dynamics/Diagrams/Coronavirus-propagation-simple-dynamics.jpeg"],900] Out[]= “SEI2HR” stands for “Susceptible, Exposed, Infected two, Hospitalized, Recovered” (populations.) In this notebook we also deal with quarantine scenarios. Remark: We consider the contagious disease propagation models as instances of the more general System Dynamics (SD) models. We use SD terminology in this notebook.
The models
SEI2R The model SEI2R are introduced and explained in the notebook [AA2]. SEI2R differs from the classical SEIR model , [Wk1, HH1], with the following elements: 1. Two separate infected populations: one is "severely symptomatic", the other is "normally symptomatic" 2. The monetary equivalent of lost productivity due to infected or died people is tracked.
SEI2HR For the formulation of SEI2HR we use a system of Differential Algebraic Equations (DAE’s). The package [AAp1] allows the use of a formulation that has just Ordinary Differential Equations (ODE’s). Here are the unique features of SEI2HR: ◼ People stocks ◼ Two types of infected populations: normally symptomatic and severely symptomatic ◼ Hospitalized population ◼ Deceased from infection population ◼ Hospital beds ◼ Hospital beds are a limited resource that determines the number of hospitalized people ◼ Only severely symptomatic people are hospitalized according to the available hospital beds ◼ The hospital beds stock is not assumed constant, it has its own change rate. ◼ Money stocks ◼ The money from lost productivity are tracked ◼ The money for hospital services are tracked
SEI2HR’s place a development plan This graph shows the “big picture” of the model development plan undertaken in [AAr1] and SEI2HR (discussed in this notebook) is in that graph: Out[]=
Notebook structure The rest of notebook has the following sequence of sections: ◼ Package load section ◼ SEI2HR structure in comparison of SEI2R ◼ Explanations of the equations of SEI2HR ◼ Quarantine scenario modeling preparation ◼ Parameters and initial conditions setup ◼ Populations, hospital beds, quarantine scenarios ◼ Parametric simulation solution ◼ Interactive interface ◼ Sensitivity analysis
Load packages The epidemiological models framework used in this notebook is implemented with the packages [AAp1, AAp2, AA3]; many of the plot functions are from the package [AAp4]. In[]:= Import["https://raw.githubusercontent.com/antononcube/SystemModeling/master/Projects/Coronavirus-propagation-dynamics/WL/EpidemiologyModels.m"];Import["https://raw.githubusercontent.com/antononcube/SystemModeling/master/Projects/Coronavirus-propagation-dynamics/WL/EpidemiologyModelModifications.m"];Import["https://raw.githubusercontent.com/antononcube/SystemModeling/master/Projects/Coronavirus-propagation-dynamics/WL/EpidemiologyModelingVisualizationFunctions.m"];Import["https://raw.githubusercontent.com/antononcube/SystemModeling/master/WL/SystemDynamicsInteractiveInterfacesFunctions.m"];
SEI2HR extends SEI2R The model SEI2HR is an extension of the model SEI2R, [AA2]. Here is SEI2R: In[]:= reprTP="AlgebraicEquation";lsModelOpts={"Tooltips"True,TooltipStyle{BackgroundYellow,CellFrameColorGray,FontSize20}};modelSEI2R=SEI2RModel[t,"InitialConditions"True,"RateRules"True,"TotalPopulationRepresentation"reprTP];ModelGridTableForm[modelSEI2R,lsModelOpts] Out[]= Stocks
Here is SEI2HR: In[]:= modelSEI2HR=SEI2HRModel[t,"InitialConditions"True,"RateRules"True,"TotalPopulationRepresentation"reprTP];ModelGridTableForm[modelSEI2HR,lsModelOpts] Out[]= Stocks
Here are the “differences” between the two models: In[]:= ModelGridTableForm@Merge[{modelSEI2HR,modelSEI2R},If[AssociationQ[#〚1〛],KeyComplement[#],Complement@@#]&] Out[]= Stocks
Equations explanations In this section we provide rationale of the model equations of SEI2HR. The equations for Susceptible, Exposed, Infected, Recovered populations of SEI2R are "standard" and explanations about them are found in [WK1, HH1]. For SEI2HR those equations change because of the stocks Hospitalized Population and Hospital Beds. The equations time unit is one day. The time horizon is one year. Since we target COVID-19, [Wk2, AA1], we do not consider births. Remark: For convenient reading the equations in this section have tooltips for the involved stocks and rates.
Verbalization description of the model We start with one infected (normally symptomatic) person, the rest of the people are susceptible. The infected people meet other people directly or get in contact with them indirectly. (Say, susceptible people touch things touched by infected.) For each susceptible person there is a probability to get the decease. The decease has an incubation period: before becoming infected the susceptible are (merely) exposed. The infected recover after a certain average infection period or die. A certain fraction of the infected become severely symptomatic. If there are enough hospital beds the severely symptomatic infected are hospitalized. The hospitalized severely infected have different death rate than the non-hospitalized ones. The number of hospital beds might change: hospitals are extended, new hospitals are build, or there are not enough medical personnel or supplies. The deaths from infection are tracked (accumulated.) Money for hospital services and money from lost productivity are tracked (accumulated.) The equations below give mathematical interpretation of the model description above.
Code for the equations Each equation in this section are derived with code like this: ModelGridTableForm[modelSEI2HR,lsModelOpts]["Equations"][[1,EquationPosition[modelSEI2HR,RP]+1,2]] and then the output cell is edited to be “DisplayFormula” and have CellLabel value corresponding to the stock of interest.
The infected and hospitalized populations SEI2HR has two types of infected populations: a normally symptomatic one and a severely symptomatic one. A major assumption for SEI2HR is that only the severely symptomatic people are hospitalized. (That assumption is also reflected in the diagram in the introduction.) Each of those three populations have their own contact rates and mortality rates. Here are the contact rates from the SEI2HR dictionary In[]:= ColumnForm@Cases[Normal@modelSEI2HR["Rates"],HoldPattern[β[_]_],∞] Out[]=
Here are the mortality rates from the SEI2HR dictionary In[]:= ColumnForm@Cases[Normal@modelSEI2HR["Rates"],HoldPattern[μ[_]_],∞] Out[]=
Remark: Below with “Infected Population” we mean both stocks Infected Normally Symptomatic Population (INSP) and Infected Severely Symptomatic Population (ISSP).
Total Population In this notebook we consider a DAE’s formulation of SEI2HR. The stock Total Population has the following (obvious) algebraic equation: (TP) TP[t] EP[t] INSP[t] ISSP[t] RP[t] SP[t] Note that with Max we specified that the total population cannot be less than 0 Remark: As mentioned in the introduction, the package [AAp1] allows for the use of non-algebraic formulation, without an equation for TP.
Susceptible Population The stock Susceptible Population (SP) is decreased by (1) infections derived from stocks Infected Populations and Hospitalized Population (HP), and (2) morality cases derived with the typical mortality rate. (SP) ′ SP HP[t] SP[t] β[HP] TP[t] INSP[t] SP[t] β[INSP] TP[t] Max[0,- HP[t] ISSP[t] SP[t] β[ISSP] TP[t] SP[t] μ[TP] Because we hospitalize the severely infected people only instead of the term ISSP[t]SP[t]β[ISSP] TP[t] we have the terms HP[t] SP[t] β[HP] TP[t] Max[0,- HP[t] ISSP[t] SP[t] β[ISSP] TP[t] The first term is for the infections derived from the hospitalized population. The second term for the infections derived from people who are infected severely symptomatic and not hospitalized.
Births term Note that we do not consider in this notebook births, but the births term can be included in SP’s equation: In[]:= Block[{m=SEI2HRModel[t,"BirthsTerm"True]},ModelGridTableForm[m][" |