Um modelo epidêmico simples com ferramentas básicas de Python

"Por que não reacender a epidemia", o pensamento veio de repente. Trabalhar em casa com a organização certa pode ser mais eficaz do que o trabalho de escritório, como resultado de um tempo extra honesto para "pensar" em outra coisa.


Tudo começou, é claro, a partir da construção de uma visualização diária dos dados sobre o COVID-19 do Centro Europeu de Controle de Doenças. Um algoritmo simples desenha gráficos com dados atualizados diariamente ao meio-dia. Os gráficos chamam a atenção para as ações antiepidêmicas efetivas da China quando a epidemia começou a declinar no início de março. Mas os países da Europa pegam o bastão - primeiro a Itália (você lembra como, no final de fevereiro, as autoridades de Milão pediram aos turistas que retornassem à cidade porque a economia está sofrendo?), Depois a Espanha.


imagem


— , , -, . 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%

imagem


( ). 10 , ,


imagem


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


imagem


caseDuration :


imagem


: , , .


:


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


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

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


mildIDocumentedRate = 0.3
severeDocumentedRate = 0.9

imagem


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


, .


, .. , . , . () .


( — — )


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

. .


() : “” . — , .


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


imageepidemy-7


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


: — , .


imagem


, [20:30] .


, , — .



:


  • (, )
  • ( ) +


.
. , , , .


imagem


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



( ) .


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


imagem


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


:


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 # 

“ ” . .


imagem


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, .


imagem


, , “” , , “ ”


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



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


: epidemy (‘recovered’).


imagem
imagem


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


5 20 ( ) 30% — .



, . :


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


“ ” , .


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


Diferentes métodos de supressão podem diferir significativamente em efeito: os métodos testados de "auto-isolamento" e até "detecção precoce" não mostraram os resultados positivos esperados com parâmetros de modelo próximos ao COVID19. Ao mesmo tempo, qualquer medida de supressão em um grau ou outro "suaviza" o pico da epidemia, o que pode afetar positivamente o trabalho do sistema de saúde no contexto da epidemia.


A medida mais eficaz foi a quarentena. Quarentena oportuna e suficiente pode não apenas "esticar" o curso da epidemia, reduzindo a carga sobre o sistema de saúde, mas também às vezes reduzindo o número de casos e a mortalidade.


Laptop no link colab do google


All Articles