Un modelo epidémico simple con herramientas básicas de Python.

"¿Por qué no reavivar la epidemia?", El pensamiento llegó de repente. Trabajar desde casa con la organización adecuada puede ser más efectivo que el trabajo de oficina, como resultado de lo cual hay un tiempo extra honesto para "pensar" en otra cosa.


Todo comenzó, por supuesto, a partir de la construcción de una visualización diaria de datos sobre COVID-19 del Centro Europeo para el Control de Enfermedades. Un algoritmo simple dibuja gráficos en datos actualizados diariamente al mediodía. Los cuadros llaman la atención sobre las acciones efectivas contra la epidemia de China, cuando la epidemia comenzó a disminuir a principios de marzo. Pero los países de Europa recogen el testigo: primero Italia (¿pueden recordar cómo a finales de febrero las autoridades de Milán pidieron a los turistas que regresaran a la ciudad, porque la economía está sufriendo?), Luego España.


imagen


— , , -, . 30 — , , , ? ? .


“” COVID-19 — - . , (!) . . . ? — !



- — . — . — . , — . . 3 :


  • : \\

, , — , . . ? , — “ ” caseIssuedDate ( — ). , — “ ” severity . “” .


: - = 1 .
:


  #['infectDate', 'endOfCaseDate', 'result', 'severity', 'caseDocumentedDate', 'isolated' ]
  epidemy = [[0, None, 'infected', 'mild', None, False]] 

*, \ ‘result’ . ‘recovered’ ‘dead’.


— , …
— . , ( “”, , ). , — .


— , “”. , 0.1 (10%) 1 10 . 100 10 , 100 10 0.1 = 100 . , : , . () :


 ['infectDate', 'endOfCaseDate', 'result', 'severity', 'caseDocumentedDate', 'isolated' ]

, , ( — !) .


— , , . ? , . : , , , — deathRate.


- ::



#  

dailyTransmissionContacts = 15 #    

# 

contagiousness = 0.01       #
severityRate = 0.3          #  
deathRate = 0.5             #  (   )
caseDuration = 25          # 

#  
closedPopulation = 10000

# 

periodToDocumented = caseDuration * 0.6 #       
mildDocumentedRate = 0.3
severeDocumentedRate = 0.9
isolationQualityRate = 0.1

#  

showDays = 150 #і  і

(. ) :
periodToIssued — , ,
mildDocmentedRate — 30%
severeDocumentedRate = 90%
isolationQualityRate — () . 100%


? , — … , , , , . — . . , COVID-19. — .



. :


— “” “” “”
, “” —
.2


   susceptibleToday = (closedPopulation - infectedCountToday - recoveredCountToday)
   newAffectedPeopleCount = int(((activeInfectedCountToday * dailyTransmissionContacts * contagiousness) // 1 * susceptibleToday/closedPopulation + 1))

* — “” . . ( ) .


.


.


, pandas.


10 . : 0 (.. ) 100%, “” .
6 . 120 ( ) ( ) — , .


totalAffected: 10000     deathsTotal: 1582   deathRate_real = 15%

imagen


( ). 10 , ,


imagen


. , . , COVID-19, — 5-7 . , , —


imagen


caseDuration :


imagen


: , , .


:


. caseIssuedDate — . “” . : “ , ”. , , - .


: “, , . > ?”
: “ , ...

: , , — . 2 : mildDocumentedRate severDocumentedRate — ( ) . : 7-9 10 , , . , . , , , , , . ? , . , .


mildIDocumentedRate = 0.3
severeDocumentedRate = 0.9

imagen


, . , : 150 50 — , , .. .


, .


, .. , . , . () .


( — — )


totalAffected: 10000     deathsTotal: 1582   deathRate_real = 15%
DocumentedTotal: 4789    deathsDocumented: 1406  deathRate_docum = 29%

. .


() : “” . — , .


periodToDocumented — . , “” , , . , — , — , , .


imageepidemy-7


periodToDocumented. mildDocumentedRate = 0.3 (30% ). “” , , .


: — , .


imagen


, [20:30] .


, , — .



:


  • (, )
  • ( ) +


.
. , , , .


imagen


(0 — , 1 — ).
, — , “ ” . , .



( ) .


, , . . , . ( 0.7) periodToDocumented.
, periodToDocumented ( ) 60% , .. 25 * 0.6 = 15 . 10, 7, 4


imagen


, , — “” , , , , . , .


:


totalAffected: 10000     deathsTotal: 1486   deathRate_real = 14%
totalAffected: 10000     deathsTotal: 1556   deathRate_real = 15%
totalAffected: 10000     deathsTotal: 1439   deathRate_real = 14%
totalAffected: 8466  deathsTotal: 1248   deathRate_real = 14%


— — . 2 :


dailyTransmissionContacts = 15 #  
contagiousness = 0.01 # 

“ ” . .


imagen


totalAffected: 10000     deathsTotal: 1557   deathRate_real = 15%
totalAffected: 7727  deathsTotal: 1173   deathRate_real = 15%
totalAffected: 4597  deathsTotal: 709    deathRate_real = 15%
totalAffected: 2008  deathsTotal: 299    deathRate_real = 14%

. 5 . , “ ”. — .



, .
. : 60 80, .


imagen


, , “” , , “ ”


totalAffected: 10000 deathsTotal: 1557 deathRate_real = 15%
totalAffected: 4597 deathsTotal: 709 deathRate_real = 15%
totalAffected: 10000 deathsTotal: 1434 deathRate_real = 14%



, “” , . , , , , / (, , ). “ ” — . , . , , — , ( , , , , , — , — ).
. ! , , .


: epidemy (‘recovered’).


imagen
imagen


totalAffected: 7890 deathsTotal: 1162 deathRate_real = 11%
totalAffected: 10000 deathsTotal: 1557 deathRate_real = 15%


5 20 ( ) 30% — .



, . :


  • , «». . .
  • . (, , , ) , , .
  • , ( “ ”).


“ ” , .


“ ” “” . , , , — . “” “ ” .


Los diferentes métodos de supresión pueden diferir significativamente en el efecto: los métodos probados de "autoaislamiento" e incluso "detección temprana" no mostraron los resultados positivos esperados con parámetros del modelo cercanos a COVID19. Al mismo tiempo, cualquier medida de supresión en un grado u otro "suaviza" el pico de la epidemia, lo que puede afectar positivamente el trabajo del sistema de salud en el contexto de la epidemia.


La medida más efectiva fue la cuarentena. La cuarentena oportuna y suficiente no solo puede "estirar" el curso de la epidemia, reduciendo la carga sobre el sistema de salud, sino que también a veces reduce tanto el número de casos como la mortalidad.


Laptop en google colab link


All Articles