izred. prof. dr. Matej Mertik, Alma Mater Europaea ECM, Maribor
prikazi študentje 1. letnika Spletne in informacijske tehnologije, predmet Podatkovna in spletna analitika
uporabljena orodja: programski jezik Python in knjižnice za strojno učenje ter vizualizacijo podatkov
Primer Slovenije, povzeto po Rhett Allain: The Promising Math Behind ‘Flattening the Curve, March 2020, WIRED in drugih virih, 4. april 2020
1. Zakonitost rasti širjenja COVID-19 in drugih nalezljivih obolenj
Velikokrat zasledimo primerjavo simptomov obolenja COVID-19 z obolenji sezonskih grip. Čeprav lahko med njima najdemo podobnosti, nenazadnje COVID-19 priprada skupini korona virusov s katerimi se srečujemo vsako leto, pa pri tem novem korona virusu opazimo dve lastnosti, ki sta pri njem veliko bolj izraženi kot pri ostalih gripnih obolenjih, zaradi česar se soočamo s stanjem danes. To je faktor širjenja okužbe R0 in neodpornost imunskega sistema na ta nov virus, pri tem je treba vedeti, da je tudi inkubacijska doba virusa daljša kot pri gripnih obolenjih, le ta pa se lahko določen čas prenaša tudi brez znakov okužbe. Pa si v nadaljevanju podrobneje poglejmo to lastnost s števili.
Za primer bomo naredili preprost model z različnim faktorjem širjenja okužbe R0. Ta je definiran kot število, ki pove koliko ljudi oboleli posameznik okuži z boleznijo v določenem časovnem obdobju. Za poenostavitev modela rasti v naši primeru definirajmo to časovno enoto prenosa z obdobjem enega dneva. Vzemimo faktor R0 za obe obolenji. Po podatkih in študijah na primeru Kitajske za bolezen COVID-19 je vrednost faktorja RO 2.3. Za primerjavo, vrednost pri gripnem obolenju je 1.3. Razlika med obema vrednostima na prvi pogled sicer ni tako velika, a poglejmo, kako se to obnaša v tem prvem preprostem modelu.
Model 1: Rast okužbe pri gripnih obolenjih in COVID-19, primerjava
Kot lahko vidimo rast okužbe pri poznanem obolenju gripe v primerjavi z obolenjem COVID-19 (rdeča) narašča zelo polagoma. Če smo pri gripi na dan 11 dosegli število 14, je pri COVID-19 to število kar 4128, kar je skoraj za 300 krat več (uporabite drsnik za zakonitost širjenja v dnevih).
V nadaljevanju poglejmo nekaj več o širjenju COVID-19 na realnih podatkih v Sloveniji.
2. Eksponentna rast širjenja COVID-19
Kot primer uporabimo nekaj številk obolelih v Sloveniji v času, ko ni bilo ukrepov. V torek 10. marca je število obolelih v Sloveniji bilo 16, v sredo je naraslo na 31. Če bi to gledali v premočrtni sliki bi si rekli, aha, vsak dan se število obolelih poveča za približno 15. Potem bi v četrtek pričakovali nekje 46 primerov in v petek 62 in tako naprej. A ko bi temu le bilo tako. Pri tem gre za eksponentno rast. Na grafu spodaj vidimo primerjavo eksponentne rasti in realnih podatkov v Sloveniji v prvih dneh epidemije.
Model 2: COVID-19 v prvih dneh, eksponentna rast in realni podatki
Za ilustracijo (v realnosti se število obolelih seveda ne podvaja dnevno, ampak se ta razmak veča v nekaj dneh, kljub temu gre za eksponentno rast, zato bi predvidevanja v tem primeru lahko za nekaj časa raztegnili, a ne glede na to, bi veliko število obolelih dosegli relativno hitro). Če bi nadaljevali po isti eksponentni poti, bi tako imeli teden dni kasneje v petek približno 160.000 obolelih ljudi, le dva dni kasneje pa bi to število preseglo milijon.
Zdaj dobra novica. To se ni in se tudi ne bo zgodilo! Stvari se sicer hitro slabšajo, a ne tako zelo. Natančneje si poglejmo zakaj. Izkaže se namreč, da nas preprosti eksponentni model pripelje le do naslednjega koraka.
3. Rast okužbe se bo zmanjšala
Spomnimo, zakaj se izbruh sprva širi eksponentno. Recimo, da imamo določeno število okuženih ljudi (N) in vsak od njih (po zgornjem vzorcu) okuži novo osebo vsak dan. Po enem dnevu dvakrat več ljudi (2N) prenaša virus. Nato po enem dnevu vsak od njih okuži novo osebo, skupaj 4N, in tako naprej. Več ko je okuženih ljudi, več novih ljudi se okuži na vsakem koraku. To je strašljivo hitra rast, ki nesulteno drvi pred nami (kot lahko poiskusimo na prvem grafu).
V splošnem, zapišimo to v obliki formule za širjenje virusa, kjer je sprememba skupnih primerov (?N) v časovnem obdobju (?t) – v našem primeru je to en dan – sorazmerna s skupnim številom N in faktorju te spremembe, ki ga zapišemo z a in ga poimenujemo dnevna rast/odstotek stopnje okužbe oziroma prirastek.
\frac{\Delta N}{\Delta t} = aNS pomočjo te formule smo tako ponazorili širjenje virusa. Na primeru spodaj smo smo predvidevali prirastek (a) 0,20, kar pomeni, da se število primerov poveča za 20 odstotkov na dan. Če bi torej imeli majhno samostojno mesto z 2000 prebivalci in bi ena okužena oseba prišla v mesto na prvi dan (to pomeni N = 0 na ničti dan), potem bi skupno število okužb naraščalo takole:
Model 3: Naraščanje okužbe v populaciji z dnevnim odstotkom širjenja okužbe 0.2. Uporabite drsnik za povečanje ali zmanjšanje dnevnega odstotka.
To je še vedno veliko, čeprav smo zdaj predpostavili, da ena obolela oseba okuži le dve v obdobju desetih dni (0.2 osebe na dan). A poglejmo nekaj resničnih podatkov o COVID-19 po svetu.
V najbolj oddaljeni državi, na Kitajskem, lahko opazimo drugačno pot, krivuljo podolgovate oblike S. Krivulja na grafu se je prvih 10 dni res gibala eksponentno navzgor, potem pa se je upočasnila in se končno izravnala. Ni bilo vedno samo slabše.
Model 3: Podatki o naraščanju okužb COVID-19 po svetu
Ta graf smo izrisali s podatki na 28. marec 2020, vendar je stanje na Kitajskem danes še vedno podobno: skupno število primerov je ostalo okrog števila 80.000 od 1,4 milijarde prebivalcev. Kaj se torej dogaja?
Kot prvo, vlade sprejemajo ukrepe: omejitev potovanj, ustavljanje javnih prireditev, zaprtje šol, karantena za obolele, popolna karantena za vse, ki ne opravljajo nujnih poklicev, omejitev gibanja in socialna distanca. Kitajska je na primer provinci Wuhan in Hubei popolnoma izolirala od preostale države, zato je bilo dejansko ogroženo prebivalstvo veliko manjše od števila 1,4 milijarde.
A zraven teh omejitev obstaja še drug, naravni razlog. Pod eksponentno rastjo število novih okužb na dan nenehno narašča v neskončnost. Toda v realnosti se to ne more zgoditi, saj ni neskončne populacije (to je tudi razlog za omejitev števila in izolacijo province Wuhan in Huabei). V resnici velja, ko zboli vedno več in več ljudi, je vse manj tistih zdravih, ki se lahko okužijo.
Iz tega sledi, da stopnja okužbe (a) ne more ostati konstantna vrednost, kot je predvideval naš model, ampak mora sčasoma upadati. Torej, ko je ob določenem žarišču dosežen nek premer, ki zajame celotno populacijo. Kot lahko vidimo eksponentna funkcija sčasoma postane neprimerna za modeliranje poznejših stopenj širjenja tega območja.
4. Logistična funkcija
Za izboljšanje našega modela spremenimo zgornjo formulo tako, da dodamo k faktorju a dodamo nov koeficient, ki zmanjša stopnjo okužbe, ko se število populacije okuženih N povečuje. Naj N_max predstavlja največje število ljudi, ki se lahko okužijo (zaradi enostavnosti si lahko omislite celotno populacijo nekega območja). Naslednja formula ponazarja mogočo rešitev:
\frac{\Delta N}{\Delta t} = a(1-\frac{N}{N_{max}})NTo je tako imenovana logistična funkcija. Njeno delovanje lahko opišemo na naslednji način: na začetku izbruha ima število N zelo majhno vrednost (majhen delež obolelih). To pomeni, da so stvari v oklepajih v bistvu enake 1 (ker je N majhen, deljen z velikim številom N_max zelo blizu nič). Tako se v zgodnjih fazah to obnaša tako kot eksponentna rast, ki smo jo videli.
Toda kaj se zgodi, ko N (število obolelih) postane veliko? Razmerje N / N_max se približuje številu 1 in tako se koeficient v oklepajih približuje ničli, število novih okužb vsak dan (?N) pa se postopoma zmanjšuje na nič. V tem modelu tako ne moremo dobiti več kot N_max okužb.
5. Ravnanje krivulje
Zdaj to vključimo v nov model v pythonu. N_max nastavimo na 80.000 prebivalcev (provinca Wuhan) in uporabljamo stopnjo okužbe v zgodnji fazi a = 0,394, kar smo izmerili iz dejanskih podatkov na Kitajskem. Takole izgleda:
Model 4: Modelirana logistična funkcija za primer na Kitajskem
Ni popolno, vendar zdaj že bolj spominja na dejanski potek bolezni na Kitajskem.
Tako imamo model, ki zajame vzorec širjenja virusa tako v zgodnji kot poznejši fazi epidemije in lahko ga uporabimo. Kaj se torej zgodi, ko država ali območje ukrepajo tako, da ustavi šole, zapre športne prireditve in uvede, da ljudje ostanejo doma? Še vedno velja enaka osnovna dinamika, vendar zdaj zmanjšamo osnovno stopnjo okužbe a.
Tu je primer, kako to izgleda. Obe krivulji imata enak N_max, vendar modra predpostavlja stopnjo okužbe r = 0,394, rdeča pa r = 0,3 (z drsnikom zmanjšajte dnevni prirastek in opazujte kako se logistilna funkcija zamakne).
Model 5: Modelirana logistična funkcija za različne stopnje okužbe a, primer Kitajske
Upoštevajte, da v obeh primerih skupno število okuženih ljudi znaša enako, torej 80.000. Zakaj torej velika reč? Zakaj bi se sploh trudili zmanjšati stopnjo rasti? Razlog se skriva z naklonom teh krivulj.
Namesto, da razmišljamo o skupnem številu okuženih, pomislite, kako hitro se pojavijo nove okužbe. Ne pozabite, da se število novih okužb na dan lahko izračuna kot:
stopnja/razmerje = \frac{\Delta N}{\Delta t}To je v bistvu samo naklon celotne krivuje okužbe (opomba: tukaj se ne zmedimo; zdaj uporabljamo razmerje okužbe (stopnjo) po zgornji formuli, da bi pojasnili dejansko število novih okužb (prirastek) na dan, ne pa osnovne stopnje a, ki smo jo sicer definirali v odstotkih.)
Če narišemo število novih okužb po času namesto števila vseh okuženih, lahko ugotovimo nekaj pomembnega. Narisan je graf za obe krivulji:
Model 6: Modelirana logistična funkcija glede na dnevni prirastek, primer Kitajske
To je “ravnanje krivulje” (z drsnikom lahko spreminjate a, ki ga manjšamo z ukrepi in opazujte ravnanje krivulje), o katerem slišimo, da se toliko govori. Z višjo stopnjo rasti hkrati zboli več ljudi. Nekateri od njih bodo potrebovali bolnišnično oskrbo, da preživijo – če pa so bolnišnice polne, se nato zgodijo presežni primeri in zgodijo se težke stvari. Primer vidimo v Italiji, kjer je umrlo veliko ljudi.
Zmanjšajmo ta vrh in okužba se širi v daljšem časovnem obdobju. To se morda ne sliši dobro, saj smo vsi v času karantene precej utesnjeni, vendar pomeni, da se izognemo preobremenjenosti zdravstvenega sistema. Z zmanjšajem hitrost rasti, raztegnemo krivuljo in rešimo življenja.
Povedano na prav način. Opisano lahko na začetku epidemije drastično zmanjša stopnjo umrljivosti. To lahko vidimo v državah kot je Južna Koreja, kjer je umrlo le 1 odstotek okuženih. Če nam uspe, lahko epidemijo zajezimo in življenje s postopno normalizacijo ukrepov vrnemo v neko previdno normalo do poplne zajezitve pandemije, kar lahko uspešno vidimo in ugotovimo lahko, da ukrepov in omejitev nismo spoštovali zaman. Ne zavajajte se torej glede različnih informacij o širjenju virusa, prepričajte se z zakonitostmi in ostanite zdravi.
6. Viri
-
- European Centre for Disease Prevention and Control, data on the geographic distribution of COVID-19 cases worldwide, https://www.ecdc.europa.eu/en
- Rhett Allain: The Promising Math Behind ‘Flattening the Curve, march 2020, WIRED
- Python scikit-learn Machine Learning in Python, https://scikit-learn.org/stable/
- Bokeh, Interactive visualization library for modern web browsers, https://docs.bokeh.org/en/latest/index.html
- Coronavirus COVID-19 Global Cases by the Center for Systems Science and Engineering (CSSE), John Hopkins Whiting School of Engineering https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6
- Joseph T Wu, Kathy Leung, Gabriel M Leung: Nowcasting and forecasting the potential domestic and international spread of the 2019-nCoV outbreak originating in Wuhan, China: a modelling study, The Lancet, Vol. 395, Issue 10225, P689-697, February 29, 2020
- Ying Liu, Albert A Gayle, Annelies Wilder-Smith, Joacim Rocklöv, The reproductive number of COVID-19 is higher compared to SARS coronavirus, Journal of Travel Medicine, Volume 27, Issue 2, March 2020, taaa021, https://doi.org/10.1093/jtm/taaa021
- Nacionalni inštitut za javno zdravje https://www.nijz.si/CREDITS, picture in the head: template by Slidesgo, including icons by Flaticon, and images by Freepik