A magyarországi koronavírus járvány valós idejű epidemiológiája

A weboldal és az elemzések teljes forráskódja itt érhető el. Írta: Ferenci Tamás. Az adatok utolsó frissítésének időpontja: 2020. 10. 20.

Három fontos megjegyzés elöljáróban

  1. Ezt a projektet hobbiként, kizárólag nyilvánosan elérhető információforrásokra támaszkodva végzem. Ebből adódóan az eredmények nem tekinthetőek semmilyen szerv hivatalos álláspontjának, valamint – bár természetesen igyekeztem a lehető legjobb tudásom szerint eljárni – a helyességére sincs hivatalos pecsét.

  2. Ennek közvetlen folyományaként: minden észrevételt, megjegyzést, dicséretet, kritikát, javaslatot a lehető legnagyobb örömmel veszek! (És, amennyiben lehet, igyekszem felhasználni a továbbfejlesztéshez.) Email-címem: ferenci.tamas@nik.uni-obuda.hu. Ha valaki jártas ebben, akkor bátran nyisson a Github-on issue-t. A felhasznált adatbázist, valamint az elemzést végző szkripteket teljes terjedelmükben nyilvánosságra hoztam (lásd a fejlécben lévő linket).

  3. A projekt elsődleges célközönségét a szakmában dolgozók jelentik, de minden tőlem telhetőt megtettem, hogy itt, illetve az egyes pontok Magyarázat nevű füleiben – ha a statisztikai részleteket nem is – de az eredmények jelentését, értelmét, és mindenekelőtt a belőle levonható következtetéseket minden érdeklődő laikus számára érthetően megmagyarázzam. Ettől elválasztva, tömören igyekeztem az adott módszer matematikai hátterét és számítástechnikai megvalósítást is összefoglalni a Magyarázat füleken.

Mi ez az egész projekt?

Az utóbbi évtizedekben egyre többet és többet megértettünk azokból a tényezőkből, melyek a járványok kitörését és lefutását meghatározzák. Kialakult egy új tudományterület, a biostatisztika, az epidemiológia, a biomatematika elemeiből építkezve, mely arra a felismerésre épül, hogy az e tényezők – biológiaitól egészen a szociológiaiakig – összhatásaként kialakuló járványlefutás matematikai eszközökkel leírható. Ennek a pontossága elért arra a szintre, hogy ez az eszköztár többé már nem csak az elméleti alapkutatóknak érdekes, hanem a létező legkonkrétabb gyakorlati kérdések eldöntésében is létfontosságú segítséget tud adni a szakembereknek.

Mekkora egy járvány kitörésnek a veszélye? Ha kitört, milyen lefutásra számíthatunk, tehát hány betegre és milyen időbeli eloszlásban? Az egyes beavatkozások hogyan módosítják ezt? Ennek alapján: mi az optimális eszköz a járvány megfékezésére, vagy legalábbis lelassítására? Ilyen és ehhez hasonló kérdésekben mind segítik a választ a megfelelő módszerek; talán már ennyi is mutatja, hogy miért nagyon is lényeges a gyakorlati alkalmazásuk.

Az immár Magyarországot is elért koronavírus-járvány sajnálatosan jó alkalmat ad ezen módszerek gyakorlatba átültetésére. Itt a feladat egy már kitört járványra történő válaszadás (angol szóval: outbreak response). Ezen a weboldalon ennek az eszközeit igyekszem felhasználni

  • jól kezelhető formában (weboldal, melyen teljesen testreszabhatóak a számítások, de közben semmilyen programozási ismeret nem igényel),
  • átfogóan (lehetőleg teljeskörűen megvalósítva az outbreak response-hoz fontos számításokat),
  • teljesen transzparensen, a 'nyílt tudomány' jegyében.

E módszerek kapcsán egyre fontosabb kérdést jelent a számítási háttér is. Szerencsére a technika fejlődése lehetővé teszi, hogy a szükséges számításokat gyakorlatilag folyamatosan, valós időben futtassuk.

Bár a konkrét cél a koronavírus-járványra adott válasz támogatása, valójában a kifejlesztett kódom bármilyen más járványnál is felhasználható, csak az esetszámokat kell kicserélni. Éppen ezért azt remélem, hogy az itt leírt ismeretek, illetve ez keretrendszer később is fogja tudni támogatni a magyar járványügyiseket.

Cikkeim, interjúim a témában

Adatok forrása

Az adatokat egyelőre kézzel gépelem be az NNK adatközlései alapján, naponta.

(Személyes megjegyzés zárójelben: egy szégyen az országnak, hogy miközben a macedón (macedón!) közegészségügy ilyet működtet (most a sportszerűség kedvéért a nyugati példákat nem is idézem…), addig Magyarországon oda nem sikerült eljutni, így a járvány harmadik hetére, hogy egy életkori, vagy nemi bontás nyilvánosan elérhető legyen. De még a napi esetszámot is kézzel kell kivonni az egyedül közölt kumulált számból, és átpötyögni egy táblázatba. Mindezt 2020-ban. Szerintem ez így szegénységi bizonyítvány az egész magyar népegészségügyre nézve. Mert ez tényleg szándék kérdése, ne mondja nekem senki, hogy akkora erőforrásigénye lenne kirakni egy Excel-táblát napi esetszámmal és életkori/nemi bontással.)

Frissítés (2020. július 29.): Hosszas gondolkodás után végülis átállítottam az oldal adatforrását a Johns Hopkins adatbázisra, így az oldal innentől teljesen automatikusan és naponta frissül. Jobban örültem volna az ECDC vagy WHO használatának (egy fokkal mégis csak “hivatalosabbak”), de mindkettőben vannak hibák - ami amúgy szintén megérne egy misét… - míg a Johns Hopkins hónapokra visszamenően helyes számokat tartalmaz.

Az elvégzett tesztek számának adatforrása az Our World in Data (OWID).

A többlethalálozási számításokhoz a heti halálozási adatok forrása a Központi Statisztikai Hivatal (STADAT évközi 1.2).

Mik a fontos eredmények?

Alapvetően két célunk van outbreak response során. Az egyik, hogy leírjuk a járvány aktuális helyzetét, megfelelően választott mutatószámokkal, mely jelzi a jelenlegi helyzetet. Másrészt, és talán ez a még fontosabb, hogy ez alapján előrejelzéseket tegyünk a jövőre nézve. Ezen előrejelzések egy része empirikus: nincs ismeret mögötte arról, hogy a háttérben lévő folyamatok hogyan működnek, mik az ok-okozati kapcsolatok, egyszerűen csak “meghosszabbítjuk” a múltbeli viselkedést. Az előrejelzések más része mechanisztikus, modell-alapú: feltételez valamit a valóságos jelenség viselkedéséről, esetleg úgy, hogy annak néhány paramétere még ismeretlen, és azokat megpróbálja a múltbeli tényadatokból megbecsülni.

Ez azért borzasztóan fontos, mert ha van egy modellünk, mégpedig egy jól validált modellünk (így szokták hívni, ha a modell tényleg jól működik, olyan értelemben, hogy amit mond arra nézve, hogy mi fog történni, az történik a valóságban is), akkor a számítógép előtt ülve le tudjuk játszatni a jövőbeli történéseket. Meg tudjuk mondani, hogy milyen lesz a járvány lefutása, de ami még sokkal fontosabb: ki tudjuk próbálni (még egyszer: a számítógép előtt ülve, teát szürcsölgetve), hogy mi történik akkor, ha egy bizony beavatkozást érvénybe léptetünk. Hogyan hat a lefutásra, ha bezárjuk az egyetemeket? És ha a közoktatást is? És ha mindkettőt? És ha a mozikat is? És ha 30% távmunkában kezd el dolgozni? És ha 20? És ha 40? Valóságból csak egy van, nem tudjuk mint egy videójátékban elmenteni a helyzetet, és kipróbálni ezeket a lehetőségeket mindig visszatérve a mai mentéshez – de a modellek lehetővé teszik, hogy valamilyen értelemben mégis csak ezt csináljuk! Lehetővé teszik, hogy kockázat nélkül kipróbáljuk a különféle intézkedések hatását, ami, mondani sem kell, azért nagyon fontos, mert lehetővé teszi a járványügyi intézkedések racionális alapon történő megválasztását.

A reprodukciós szám

Térjünk vissza egy pillanatra az aktuális helyzet jellemzéséhez. Itt ugyanis van egy fogalom, amivel mindenképp meg kell ismerkedni: a reprodukciós szám. Ez azt jelenti, hogy egy ember átlagosan hány másiknak adja át a fertőzést. Egy nagyon ragályos betegségnél ez lehet \(R=10\), egy jóval kevésbé ragályosnál lehet \(R=2\). (Ez természetesen egy átlag: lehet, hogy valaki egynek sem adja át, más meg 100-nak.) Egy dolgot kell világosan látni: egy járvány addig terjed önfenntartó módon, amíg \(R>1\). Hiszen 1 beteg 2-t “hoz létre”, a 2 mindegyike 2-2-t, így a következő – ahogy az epidemiológusok mondják – generációban már 4 betegünk lesz, aztán 8, aztán 16, és így tovább. A járvány önfenntartó módon felfut. Ezzel szemben ha \(R=0,\!5\), akkor 16 beteg már csak 8-at fog létrehozni, azután már csak 4 lesz a következő generációban – a járvány kialszik. (Hogy lehet az \(R\) értéke nem egész szám? Minden további nélkül, az \(R=1,\!1\)-et fogjuk fel úgy, hogy 10 beteg 11 másodlagos fertőzést kelt.)

A különböző intézkedések tehát az \(R\) értékét igyekeznek csökkenteni. Hogy honnan indulunk, az alapvetően a kórokozó biológiájától (hogy mennyire ragályos) és a társadalom éppen aktuális szociális viszonyaitól függ (például a lakásviszonyok zsúfoltsága, tehát, hogy milyen gyakran nyílnak fertőzés átadására alkalmas utak). Ezt szokták néha elemi reprodukciós számnak (\(R_0\)) is nevezni, ami a reprodukciós szám akkor, ha a fertőzöttet csupa fogékony veszi körül, és semmilyen korlátozó intézkedést nem hozunk. Ezt csökkentheti a védőoltás, ha elérhető, a már meglevő természetes immunitás a betegség ellen, például kiállt korábbi megbetegedés révén, ha van ilyen, és a különféle egyéb intézkedések, iskolák bezárása, éttermek és szórakozóhelyek bezárása és így tovább. (Néha szokás az így kialakuló értéket megkülönböztetésül effektív reprodukciós számnak nevezni, én most nem bonyolítom a szóhasználatot, hanem egyszerűen reprodukciós számnak hívom. Az outbreak response során ez lesz a fontos.)

Az \(R\) azért ilyen alapvető mutató, mert egyszerre mutatja a jelenlegi helyzetet – amiben persze a múltbeli intézkedések hatása tükröződik – és ad előrejelzést arra nézve, hogy mi várható a jövőben. Hogy a járvány milyen gyorsan fog felfutni (túlterheli-e az egészségügyi rendszert?), hogy hány betegre kell összesen számolnunk (bármikor is betegszenek meg), tehát a lakosság mekkora részét fogja érinteni a járvány végeredményben, és a fentiek fényében azt is, hogy van-e lehetőség a kitörés elfojtására.

A közösségi immunitási küszöb

Egy pillanatra még érdemes visszatérni az \(R_0\) értékére, tehát a reprodukcióra akkor, ha mindenki fogékony és nem hozunk semmilyen intézkedést, ugyanis ez is meghatároz egy nagyon fontos dolgot. Ha semmilyen intézkedés nincs, akkor a járványok terjedése eleinte nagyon gyors, és egyre csak gyorsul: a terjedést egyedül az korlátozza, hogy mennyi fertőző forrás van. Ez eddig nem meglepő, az érdekesebb rész akkor jön, ha egy kicsit továbbmegyünk. Egy ponton túl ugyanis bejön egy korlát: ha már nagyon sok betegségen átesett ember van (tételezzük most fel, hogy ez védettséget ad a betegség ellen), akkor az le fogja lassítani a terjedést, mert a fertőzöttek környékén, akiknek ők átadnák a betegséget, egyre sűrűbben lesznek védettek, akik irányába mégsem történik átvitel, és nem jön létre új megbetegedés. Ez – minden intézkedés nélkül is – csökkenti az \(R\) értékét.

Ezt úgy érdemes felfogni, hogy az \(R_0=4\) azt jelenti, hogy egy beteg átlagosan négy embert “kínál meg” a betegséggel. De ha az emberek fele védett, akkor valójában csak 2 új megbetegedés jön létre, hiszen a “megkínáltak” fele védett volt! Tehát ekkor az \(R\) már csak 2. És valami nagyon fontos dolog történik akkor, ha a védettek aránya eléri a háromnegyedet: ekkor az \(R\) lemegy 1-re, hiába is volt 4 az \(R_0\). Azaz: olyan sűrűn vannak a védettek, hogy már nem tud kialakulni önfenntartó járvány, hiába – és ez nagyon fontos! – nincs semmilyen korlátozó intézkedés. Ezt a helyzetet szokás közösségi immunitásnak (régebbi szóval nyájimmunitásnak) nevezni.

Jól látszik, hogy van egy küszöb, amit ha elér a védettek száma, akkor nem csak lelassítjuk a betegséget, hanem egyáltalán nem tud önfenntartó járvány kialakulni, és az is érzékelhető, hogy ez a küszöb annál magasabban van, minél nagyobb az \(R_0\). (Pici végiggondolással belátható, hogy ennek az értéke \(1-1/R_0\).) A koronavírus esetén jelenlegi tudásunk szerint 2-3 körül van az \(R_0\), az elemi reprodukciós szám, tehát más intézkedés hiányában akkor nem tör ki járvány, ha a lakosság 60-70%-a védett. Amíg nincs védőoltás, és senki nem rendelkezik eleve immunitással, ez magyarul azt jelenti, hogy ennyi embernek kell átesnie a betegségen, hogy külön intézkedés nélkül se törjön ki járvány! (És akkor még feltételeztük, hogy a betegség átvészelése tartós immunitást ad, ami igazából még nyitott kérdés.)

Ez gondolatilag is fontos: ha az \(R\)-et lecsökkentjük (de nem 1 alá), akkor a járvány lelassul ugyan, de amint feloldjuk a csökkentő intézkedéseket, újra el fog indulni, és mindez addig tart, amíg el nem érjük a közösségi immunitási küszöböt. Ezen csak a védőoltás segít, vagy a betegség teljes felszámolása, hiszen ha egyetlen beteg sincs, akkor mindegy mekkora az \(R\), nem fog járvány kitörni. (Persze ez egy borzasztó törékeny állapot, hiszen a mai viszonyok mellett egy pillanat alatt megérkezhet a kórokozó külföldről, mint ahogy a koronavírus is megérkezett mindenhová, teljesen mindegy, hogy ki mit csinált. Ennek kizárására tehát nem lehet reálisan építeni, hogy mást ne mondjunk, még Észak-Koreába is megérkezett a vírus, úgyhogy a dolog csak akkor működik, ha nem egy országban, hanem az egész világon kiirtjuk a kórokozót. Erre eddig egy állatgyógyászati példa volt, a fekete marhavész, és egy humán, a feketehimlő.)

Járványok dinamikája, a generációs idő

Fontos látni, hogy az \(R\) viszont semmit nem mond a járvány dinamikájáról, tehát időbeli lefutásáról. A példa kedvéért elképzelhetőek olyan körülmények, melyben az influenzának és a HIV-nek egyaránt 2 a reprodukciós száma. Csak míg az előbbi úgy jön ki, hogy a betegek időegység alatt sok embert tesznek ki a fertőzésnek, ám rövid időn keresztül, addig az utóbbi esetében időegység alatt kevesebbet, ám hosszabb időn keresztül. De ha a reprodukciós számuk ugyanaz, akkor ezen a szemüvegen keresztül ugyanúgy viselkednek, például –- védettség hiányában -– mindkettő önfenntartó járványt fog okozni. Ami igaz is, csak hogy egészen más jellegűt: az influenza nagyon gyorsan fel fog futni (majd le is cseng), addig a HIV-nél sokkal-sokkal elnyújtottabb módon gyűlnek a fertőzöttek.

Az időbeli dinamika egyik fontos mérőszáma a generációs idő: az az idő, ami egy ember megbetegedésétől eltelik addig, amíg ő megbetegít másokat. (Ennek a lemérése a valóságban problémás, hiszen általában nem tudhatjuk, hogy ki mikor betegedett meg. Éppen ezért a generációs idő helyett a fogalmilag eltérő, de a gyakorlatban vele jól egyező – és ténylegesen lemérhető – serial interval-t használják, ez az eset tüneteinek jelentkezése és az általa megbetegített emberek tüneteinek jelentkezése között eltelő idő.) Megint csak: ez sem egy konkrét szám, hanem egy eloszlás, néha kevesebb idő telik el, néha több. Gyakran feltételezzük, hogy az eloszlás alakja adott, csak bizonyos paramétereit – várható értékét, szórását – adjuk meg az adott konkrét betegségre, járványügyi helyzetre.

Halálozási arány és az aluldetektálás

Egy betegség “veszélyességének” legalapvetőbb mérőszáma a halálozási arány. Egy éppen zajló járvány esetében azonban egyáltalán nem nyilvánvaló, hogy ennek mi a megfelelő számítása; a naiv számítás torzított eredményt ad. Éppen ezért fontos végiggondolni ezt a kérdést, és igyekezni kiküszöbölni ezt a torzítást.

Bár elsőre meglepőnek hangozhat, de ez az eredmény aztán arra is felhasználható, hogy igyekezzünk jellemezni az aluldetektálást, tehát azt, hogy a betegek egy részéről nem tudjuk, hogy betegek, azaz nem jelennek meg a jelentett számban. (Vagy azért, mert vannak tüneteik ugyan, de mégsem tesztelték őket, vagy azért, mert tüneteik sincsenek; persze kellően széleskörű teszteléssel az ilyen esetek egy része is felderíthető lenne.)

Mik a projekt egyes komponensei?

A projekt több pontból épül fel, melyek közül a bal oldali menüben lehet választani.

  • A Járványgörbe mutatja a megbetegedések számának időbeli alakulását, azaz a járvány lefutását. Felhasználható a járvány alakulásának áttekintésére, illetve különféle görbék illeszthetők a tényadatokra (ez utóbbi azért is fontos, mert e görbék adatai később más számítások fontos bemenő paraméterét jelentik).
  • Az Előrejelzés pont összefoglalja a különféle módszerekből nyerhető előrejelzéseket az esetszám jövőbeli alakulására vonatkozóan. Persze ezek nem biztos értékek, úgyhogy az eredmények jellemzik a kapott előrejelzések bizonytalanságát is. Végezhető szcenárióelemzés is: megnézhetjük mi történik, ha a jelenlegi adatokból számolható helyett valamilyen más, általunk beállított érték szerint alakul a jövő.
  • Az reprodukciós szám becslése pont – különféle statisztikai módszerekkel ad becslést az \(R\)-re. Választható a valós idejű becslés, mely igyekszik folyamatosan nyomon követni az időben változó reprodukciós számot, illetve a görbe egy szakaszából vagy egészéből számított becslés (egyetlen egy szám) is; ez utóbbinak olyan szakasz esetén van értelme, ahol feltehető, hogy az \(R\) állandó. Itt is igaz, hogy az eredményekhez hozzátartozik a kapott becslésben lévő bizonytalanság jellemzése is.
  • A Halálozási arány és aluldetektálás pont a járvány halálozási rátáját követi, elvégzi korrigálását arra tekintettel, hogy egy éppen zajló járványban vagyunk és nem minden eset zárult le, illetve egy ettől külön – de módszertanában erre építő – problémakörként lehetővé teszi a betegek aluldetektálására történő következtetést.
  • Az Automatikus jelentésgenerálás a legfontosabb, fenti pontokon keresztül elérhető eredményeket automatikusan összeállítja egy PDF formátumú jelentésben és azt letölthetővé teszi.

Alapgondolat

A járványok alakulásának legalapvetőbb leírója a járványgörbe, ami megadja a betegek számának időbeli alakulását. Ez így egy mondatban leírva olyan egyszerűen hangzik, mint a pofon, de valójában már most, e ponton, rögtön a legelején több csapda van elrejtve, amiket értenünk kell ahhoz, hogy megfelelően tudjuk értelmezni a járványgörbét.

Az első és a legfontosabb, hogy a koronavírus esetén a jelentett esetszám drasztikusan, és ezt tényleg szó szerint kell érteni – akár nagyságrendileg! – eltérhet a tényleges esetszámtól. Ennek az oka a betegség biológiája: sok ember van, ráadásul most még a pontos arányukat sem ismerjük, akiknél tünetszegényen, más betegséggel könnyen összetéveszthetően, vagy akár teljesen tünetmentesen zajlik a megbetegedés. Ez nem olyan, mint a kanyaró, hogy minden betegnek tünetei vannak, és szinte minden esetben ordítóan egyértelmű tünetei.

Az előbbi pont közvetlen folyománya: a jelentett esetszámokat nagyon veszélyes önmagukban, az elvégzett tesztek száma nélkül értelmezni. Hiszen a tünetmentes, vagy nem egyértelmű tüneteket mutató, nem súlyos eseteket csak a teszt fogja megtalálni! Ennek következtében, ha egy ország sokat tesztel, több ilyet is meg fog találni és jelent, míg aki keveset, azoknál ezek nem kerülnek bele a jelentésbe. Egyfelől tehát az országok közti összehasonlításnál erre mindig tekintettel kell lenni (simán lehet, hogy ha egy országban magasabb a jelentett esetszám az , mert azt jelenti, hogy sokat megtalálnak, míg ha valahol alacsony, az baj!), másrészt egy országon belül, időben is változhat a tesztelési aktivitás. Ha felfut a tesztek száma, megnőhet az esetszám, miközben a járványügyi helyzet nem lett rosszabb (ellenkezőleg, végre jobb képet kapunk), vagy fordítva, ha nem nő eléggé a tesztek száma, azt hisszük, hogy nincs is nagy baj (miközben nagyon is van). Ezzel a kérdéssel a Halálozási arány és aluldetektálás pont foglalkozik részletesebben.

Fontos lehet a halálozások idősorának vizsgálata is, hiszen az jóval kevésbé van kitéve a fentiekből eredő bizonytalanságnak. Hozzá kell tenni, hogy valójában ez sem tökéletesen igaz: egyfelől előfordulhat, hogy gyanús halálesetnél sem végeznek tesztet, másfelől vannak definíciós problémák is (ha egy terminális rákbeteg meghal pozitív teszttel, az minek számít, rákhalálozásnak vagy a fertőző betegség okozta halálozásnak?), de mindenesetre elmondható, hogy sokkal kevésbé esetleges adat. Éppen ezért minden elemzésnél kiválasztható végpontként a halálozások száma is.

Az előbbi miatt felmerülhet az a kérdés, hogy akkor egyáltalán mi értelme az esetszámokra alapozott járványgörbét nézni? Van értelme, ugyanis bár lehet, hogy az abszolút számok rosszak, de a relatív viszonyok egy országon belül rendben lesznek, mindaddig persze, amíg a tesztelési aktivitás maga nem változik meg lényegesen. Lehet, hogy tízszer annyi eset van a valóságban, de ha a jelentett számok nőnek/nem nőnek/csökkennek, akkor a valós számok is nőnek/nem nőnek/csökkennek, mindaddig, amíg a 10-es szorzó állandó. (Az természetesen joggal felvethető ennek fényében, hogy ha hirtelen elkezdünk sokkal többet tesztelni, akkor megugrik az esetszám anélkül, hogy a hátterében valódi változás lenne a járványügyi helyzetben, ez csakugyan jogos észrevétel, ha ilyen történne, arra tényleg tekintettel kell lenni.)

Meg kell különböztetni a járványgörbét a szerint, hogy a dátum a betegség jelentésének a dátuma, vagy a tünetek fellépésének a dátuma. Az e pontban látható járványgörbe – más elérhető nyilvános magyar adat híján – az előbbi, de a kettő nem ugyanaz: eltéríti őket a lappangási idő. Ez egyébként egy borzasztó fontos járványügyi kérdésre is felhívja a figyelmet: azt, hogy bármilyen intézkedést is hozunk, annak a hatása kb. 2 hét múlva fog érvényesülni, és fordítva, amit látunk, az a két héttel ezelőtti intézkedéseink eredménye. Ha például bevezetünk egy korlátozást, akkor lehet, hogy az új fertőzések száma azonnal lecsökken, de a lappangási idő alatt lévő betegeket ez nem érinti, ezért a jelentett betegek száma – mint a rendszer egyfajta tehetetlensége – egy ideig még nem fog lemenni. Talán látványosabb ezt egy konkrét példán is szemléltetni, a következő ábra a német helyzetet mutatja, ahol nyilvánosan is elérhetőek adatok erre:

Német helyzet

A kék oszlopok a tünetek fellépése szerinti, a sárgák a jelentés dátuma szerinti görbét adják ki. Gyönyörűen látszik, hogy az új betegségkezdetek már március közepe óta csökkenek, miközben a jelentett esetszám még két hétig nem változik.

A hivatalos adatközlések gyarkan azt adják meg, hogy adott időpontig összesen hány beteg volt – ennek a szép neve: kumulált esetszám – az epidemiológiai vizsgálatokhoz általában a napi esetszámra kell áttérni.

Elvileg a függőleges tengelyen az incidenciát, tehát a lakosság lélekszámával leosztott (pl. százezer főre jutó) esetszámot illene ábrázolni. Ha azonban a járvány gyors (hogy a születések és az egyéb okból bekövetkező halálozások ne változtassanak sokat) és nem extrém nagy halálozású (hogy magában a betegségben meghaltak ne változtassanak sokat), akkor nem követünk el nagy hibát, ha egyszerűen az esetszámot tüntetjük fel.

Az itt szereplő görbén a fekete pontok a tényadatokat jelentik, a kék görbe pedig a rájuk illesztett ún. simítógörbét. Ez egy olyan görbe, ami a véletlen ingadozásokat kisimítva, a görbe alaptrendjét igyekszik követni, de a nélkül, hogy bármit fel kellene tennünk arról, hogy mi a valódi alakja.

Más feladatokhoz viszont fontos lehet az is, hogy találjunk valamilyen, matematikailag ismert alakú függvényt, ami jól leírja a görbe alakulását. Ez két szempontból fontos. Egyrészt, ha a pontokra illeszkedik valamilyen görbe, akkor azt – szemben a simítógörbével! – meg tudjuk “hosszabbítani”. (Hiszen ismerjük a függvényt, egyszerűen beleírunk egy jövőbeli dátumot.) Magyarul: előre tudunk vele jelezni! Fontos, hogy az ilyen előrejelzések inkább csak rövid távra alkalmasak; ennek részletei az Előrejelzés pontnál szerepelnek.

A másik fontos ok a függvényillesztésre az, hogy ha a pontok tényleg az adott függvényt követik, csak épp a véletlen miatt szóródva körülötte, akkor az illesztett függvény paraméterei bizonyos értelemben tisztán, az esetszámokban lévő ingadozás jelentette zajtól megtisztítva mutatják, hogy mi a helyzet, sőt, sok esetben ezeknek a paramétereknek valamilyen értelmes jelentése is van. (Például, ha a betegek száma exponenciálisan nő, akkor annak a növekedési rátája meghatározza a duplázódási időt: hogy hány naponként emelkedik kétszeresére a napi esetszám. Exponenciális növekedésnél ez ugyanis egy adott, állandó érték.)

Ebben a pontban illeszthető exponenciális függvény (ez tipikusan a betegségek kezdeti szakaszában megfelelő), hatványfüggvény, mely az exponenciálishoz hasonlóan folyamatosan nő, de lassabb ütemben, és logisztikus, mely egy platót leíró görbe, tehát a növekedés ütemében van egy csúcspont, ami után már egyre kevesebb az új beteg. (Tehát az összes eset száma továbbra is nő, de lassulva nő.)

Ami nagyon fontos lehet, hogy pontosan mely pontokra illesztjük a függvényt: szinte mindig igaz, hogy a járványgörbét nem egy nagyon függvényt írja le, hanem különböző szakaszai vannak. Például a járvány legeleje még máshogy viselkedik, ezért azt le kell választani a becslésből. Az is elképzelhető, hogy több szakasza van a járványnak, melyeknél külön-külön egy exponenciális görbére illeszkednek a pontok, de a különböző szakaszoknak más és más meredeksége. Az ilyen és ehhez hasonló helyzetekre használható az ablakozás: ekkor továbbra is valamennyi pontot látunk, de a görbe illesztése csak az ablakon belül lévő pontok alapján történik. (Így például lehagyható az első néhány pont, vagy kiválasztható egy adott szakasz.)

A simítógörbe azért is jól jön, mert lehetőséget ad a függvényillesztés jóságának a megítélésére: ha az illesztett függvény (mely adott függvényformához kötött) követi a simítógörbét (mely nem kötött függvényformához, szabadon követi a pontokat) az annak a jele, hogy jó függvényformát választottünk. Hogy ez jobban látszódjon, az ablakozás bekapcsolásakor halvány háttér jelzi, hogy mely területre illesztünk.

Beállítható, hogy a függőleges tengely logaritmikus beosztású legyen, ez azt jelenti, hogy ha felfelé lépdelünk a tengely mentén, akkor minden lépés ugyanannyiszoros (és nem ugyanannyival) történő növekedést jelent; ez azért fontos, mert az exponenciálisnak megvan az a tulajdonsága, hogy ilyen skálázás mellett egy egyenes vonal lesz. (És emberi szemmel sokkal könnyebb egy egyenesre való illeszkedést megítélni.)

Minden esetben megjeleníthető az ún. konfidenciaintervallum, ez arról szolgáltat információt, hogy mennyire bizonytalan a görbe becslése. Hiszen ezeket a görbéket véges sok pont alapján határozzuk meg, amik helyzetében véletlen ingadozás is van, így a belőlük számolt görbékben is. Ezt szemlélteti a konfidenciaintervallum: minél szélesebb, annál bizonytalanabb ott a görbe értéke. (Precízen: a konfidenciaintervallum pontjai azok az értékek, amikre igaz, hogy ha az lett volna a valódi érték, akkor még kényelmesen kijöhetett – a véletlen ingadozásra tekintettel – az, ami a valóságban ténylegesen ki is jött. A konfidenciaintervallum megbízhatósági szintje szabályozza, hogy mit értünk “kényelmesen” alatt.)

Matematikai részletek

Függvényforma

Három függvényforma választható görbeillesztésre.

Exponenciális függvény

Jelölje a megbetegedések számát \(t\) időben \(X\left(t\right)\), ekkor a “növekedési ütem” magyarul a derivált, tehát az a kijelentés, hogy “a növekedési ütem a betegek számával arányos”, így írható le matematikai formában: \[ \frac{\mathrm{d}X\left(t\right)}{\mathrm{d}t}=rX\left(t\right). \] Ez egy egyszerű differenciálegyenlet, melynek megoldása: \[ X\left(t\right)=ae^{rt}, \] ahol az \(r\) paraméter a növekedési ráta. Azaz valóban exponenciális függvényt kaptunk.

Hatványfüggvény

Az exponenciálistól elmaradó (szubexponenciális) növekedések egyik népszerű választása a hatványfüggvény: \[ X\left(t\right)=a t^b, \] ahol \(b\) a hatványkitevő.

Itt kicsit nehezebb mechanikai magyarázatot adni arra, hogy hogyan jöhet ez ki a járvány kezdeti szakaszában is, TODO

Logisztikus

TODO

Becslés

Alapvetően két út között választhatunk. Az egyik lehetőség, hogy eltekintünk az adatok diszkrétségétől, és úgy vesszük mintha az esetszám folytonos változó lenne, és így egyszerű lineáris regressziót használunk. Ehhez persze – hogy tényleg lineáris legyen – az esetszámot logaritmálni kell. Ezt lognormális modellnek fogjuk hívni, utalva a hibatag eloszlására (ha a lineárizált modellben normális, akkor az exponenciálás után, tehát az eredeti esetszámok szintjében lognormális lesz a hibatag eloszlása).

A másik lehetőség, hogy figyelembe vesszük, hogy az esetszámok értékei a \(\left\{0,1,\ldots\right\}\) halmazból kerülnek ki (“count data”), és ténylegesen ezt a diszkrétséget figyelembe vevő modellt illesztünk. Ez már nem kezelhető lineáris modellként, de szerencsére az általánosított lineáris modell (GLM) keretrendszerébe egyszerűen és kényelmesen illeszkedik. Az exponenciális görbe illesztése az által fog megvalósulni, hogy link függvényként a logaritmust választjuk. Egyedül az eredményváltozó eloszlásáról kell mondani még valamit; ez ilyen adatoknál legtipikusabban Poisson, vagy – hogy meg tudjuk engedni, hogy a variancia eltérjen a várható értéktől – negatív binomiális.

Lognormális modell

Az illesztés hagyományos legkisebbek négyzetek (OLS) elven történik, a logaritmált adatokon. Elvileg lehetne az eredeti adatokra is exponenciálisat illeszteni nemlineáris legkisebb négyzetek (NLS) módszerével; a kettő csak látszólag ugyanaz, valójában véges mintából becslés esetén nem teljesen, hiszen a más skálán lévő eredményváltozó miatt a reziduumok más súlyt kapnak. A gyakorlatban azonban – ha lehet algebrailag linearizálni, márpedig itt lehet – mindenképp preferált az OLS, hiszen összehasonlíthatatlanul stabilabb.

Poisson és negatív binomiális modell

A GLM modellek maximum likelihood (ML) elven becsülhetőek, tipikusan iteratívan újrasúlyozott legkisebb négyzetek (IWLS, IRLS) módszerével. Negatív binomiális eloszlás esetén a plusz paraméter becslése miatt kicsit bonyolultabb a helyzet, de lényegében ott is ML becslés történik.

Simítás

E módszer lényege, hogy nem tételezünk fel semmilyen függvényformát, hanem “követjük az adatokat” (nem-paraméteres regresszió). A simítás spline-regresszióval történik, thin plate spline-t használva, negatív binomiális eredményváltozót feltételezve.

Számítástechnikai részletek

Az ábrázoláshoz a ggplot2 csomagot használtam. A lognormális modell becslése lm-mel, a Poisson-regresszió glm-mel, a negatív binomális modell becslése MASS::glm.nb-vel történik. A simítás mgcv::gam-mal történt (amit a geom_smooth hív meg).



Alapgondolat

A többlethalálozás gondolatához legegyszerűbb úgy eljutni, hogy a halálozási szám azon problémájából indulunk ki, hogy érzékeny arra, hogy mi a haláloki besorolások definíciója. Amint láttuk, ez a haláloki adatgyűjtések szükségszerű problémája, nem egy kiküszöbölhető hiba. Akkor mi lenne, ha egyáltalán nem törődnénk a halálokkal, egyszerűen csak azt számolnánk, hogy hányan halnak meg (bármi miatt is)…? Ez az össz-halálozás (angolosan szólva minden okból bekövetkező – all cause – halálozás), elérhető napi, de legrosszabb esetben heti felbontással, nem és életkor szerint bontva.

A kérdés, ami azonnal felvetődik, hogy rendben, de akkor honnan tudjuk, hogy mi a járvány hatása? Ha 100-an belehalnak egy nap a vizsgált betegségbe, az tudjuk, hogy rossz, de ha 100-an halnak meg összesen egy nap? Akkor az mit jelent? Ha egyébként 200-an halnának meg, akkor az kimondottan jó, ha 50-en, akkor egyáltalán nem. A válasz a kérdésre: hasonlítsuk a dolgot a múltbeli adatokhoz! Ez a legjobb kapaszkodónk arra, hogy “egyébként hányan halnának meg”! Természetesen egy sor dologra oda kell figyelnünk, például, hogy a halálozásoknak van egy jellegzetes éven belüli mintázata – mindig télen van a legtöbb, nyáron a legkevesebb – ezt szokás szezonális mintázatnak nevezni, ezért nem hasonlíthatunk akármilyen időponthoz a múltból, a halálozásoknak van hosszú távú trendje is, amire figyelni kell, ha előrevítünk, hogy idén hány lett volna, ha nincs járvány és így tovább. A lényeg, hogy az így előrevetített “várt” halálozások számát kivonva a ténylegesen megfigyelt számból kapjuk meg a többlethalálozást.

Ez a megoldás azonnal és komplettül megoldja a haláloki besorolás problémáját, hiszen ilyen besorolásra nincs is szükség. A másik nagy előnye, hogy azonnal és ez már tényleg komplettül megoldja a tesztelési aktivitástól való függés problémáját.

Cserében viszont van egy nagyon nagy ára is, ami a fentiekből már érzékelhető: az, hogy nettó mutató, ami a járvány összes, direkt és indirekt hatását egybeméri. Hiszen a járványnak nem csak a direkt hatása van (azaz, hogy van aki belehal), hanem indirekt hatásai is. Ráadásul ezek lehetnek pozitívak és negatívak is. Például pozitív indirekt hatása, hogy a bevezett intézkedések, távolságtartás, kézmosás stb. segítenek megelőzni az összes többi légúti betegség terjedését is. De akár extrémebb dolgokra is gondolhatunk, például, hogy az otthonmaradásra való buzdítás miatt a közúti balesetben meghaltak száma is csökken. Igen ám, de vannak indirekt negatív hatások is: az egészségügyi rendszer átállítása, részben leállítás miatt más betegségben szenvedők ellátása nehezedik meg, szenved halasztást, szűrőprogramok lehetetlenednek el stb., de itt is gondolhatunk még áttételesebb – de sajnos nem irreális – dolgokra, például, hogy nő az öngyilkosságok száma, vagy, hogy a munkanélküliség növekedése is jól ismerten rontja az egészségi állapotot.

A többlethalálozás mindezek elkülönítését nem teszi lehetővé, csak a “végeredményt” látjuk. Éppen ezért használata is inkább arra korlátozódik, hogy megítéljük, hogy “nagyon nagy baj nincs-e”. (Értsd: nem szökik-e fel nagyon a többlethalálozás. Persze kis baj lehet, hiszen azt az indirekt hatások kompenzálhatják. A fordított eset is elképzelhető, tehát, hogy az indirekt hatások adnak sok halottat, de ez kevésbé valószínű.) Mindemellett persze az a limitáció is ott van, hogy az egész egy becsült előrejelzésen nyugszik – azt valójában senki nem tudhatja biztosan, hogy mennyi halálozás lett volna, ha nem lett volna járvány! – ebből is látszik, hogy az eredmények miért kezelendőek óvatosan.

A többlethalálozás adatnak még egy baja van: az, hogy lassú, a leglassabb az összes mutatónk között. És itt most nem csak a biológiai késleltetésekről beszélünk. Értelemszerűen minden olyan biológiai késleltetés (lappangási idő, kórházba kerülésig eltelő idő, kórházban a halálig eltelő idő), ami a halál késleltetését adja, az megjelenik itt is, csakhogy itt még megjelenik egy nagyon komoly adminisztratív késleltetés is: amíg a betegségbe belehaltak száma relatíve gyorsan elérhetővé válik a halál bekövetkezése után (hiszen a betegség miatt kórházban levőkről van közel valós idejű adat), addig az összes elhunytról csak a halottvizsgálati bizonyítványok összesítéséből vagy az elektronikus anyakönyvi rendszer adataiból fogunk értesülni. Ennek késleltetése tetemes (több hét, akár hónap), ami még hozzájön pluszban a többi késleltetéshez.

Matematikai részletek

A valószínűségi modellünk: \[ Y_t \mid \varepsilon_t \sim \text{Poi}\left(\mu_t\left[1+f\left(t\right)\right]\varepsilon_t\right), \] ahol \(\varepsilon_t\) nem feltétlenül fehérzaj, lehet autokorrelált, az adatok autokorreláltságának elszámolására (a napi adat erősen az, a heti nem feltétlenül); legyen többváltozós normális AR(\(p\)) szerinti kovarianciamátrixszal. Ezen felül \[ \mu_t = N_t \exp\left[\alpha\left(t\right)+s\left(t\right)+w\left(t\right)\right], \] ahol \(\alpha\left(t\right)\) a hosszú távú – lassan változó – trend, \(s\left(t\right)\) az éven belüli mintázat (szezonalitás), \(w\left(t\right)\) pedig a hét napja hatás (ha napi adatunk van), és \(N_t\) a háttérpopuláció. \(f\left(t\right)\) lesz a keresett többlet (szorzóként, hiszen log link mellett multiplikatív az egész modell). A modell becslése cseles, ML, de óvatosan kell eljárni (\(\varepsilon_t\) is elég általános, és \(f\left(t\right)\) is nézhet ki furcsán, pl. szakadása van).

Számítástechnikai részletek

Az ábrázoláshoz a ggplot2 csomagot használtam, a többlethalálozás modellezése az excessmort csomaggal történt.

Irodalmi hivatkozások


Alapgondolat

A tesztpozitivitás azt mutatja meg, hogy adott napon az elvégzett tesztek mekkora hányada lett pozitív.

Első ránézésre (“pozitívak aránya”) ez valamiféle súlyosság mérőszáma, de erről nincs szó, hiszen függ a teszteléstől is, ami viszont – bizonyos korlátokon belül – döntés kérdése, megnövelésével tetszőlegesen lecsökkentő az arány, ugyanazon járványügyi helyzetben is.

Ez azonban épp azt mutatja meg, hogy akkor mire jó a mutató: a tesztelés elégségességének mérésére. Így nézve pont szerencsés, hogy egyszerre határozza meg az esetek és a tesztek száma, hiszen azt mondja, hogy ha nagyon el is szabadul a járvány, akkor is megjavítható a mutató, ha többet tesztelünk – ami épp az, amit tenni kell, ha elszabadul a járvány. A tesztpozitivitás tehát lényegében azt méri, hogy a tesztelési aktivitás arányban áll-e a járványügyi helyzet súlyosságával.

Ha azt tapasztaljuk, hogy a tesztpozitivitás megnő, az arra utal: a rendszer nem képes még arra sem, hogy a detektált esetek növekedésével arányban emelje a tesztek számát. Minél magasabb a tesztpozitivitás, annál nagyobb részét nem találjuk meg vélhetően az eseteknek (és ezért annál kevésbé megbízható a detektált esetek járványgörbéje és minden abból számolt mutató!). Az Egészségügyi Világszervezet ajánlása 5%-os tesztpozitivitást irányoz elő; az ábrán ezt jelöli a vízszintes piros vonal. Természetesen fontos újra hangsúlyozni, hogy nem csak a tesztpozitivitás aktuális értéke, hanem a trendje is fontos.

(Valójában persze ez sem igaz tökéletesen, hiszen a tesztelések számán túl az is fontos kérdés, hogy milyen mintázat szerint tesztelünk, például mennyire megszorítóan értelmezzük a kontaktus-személyek tesztelését, és ez akár időben is változhat még ugyanazon országon esetében is, de ezeket a kérdéseket már csak finomabb és több adatot igénylő elemzéssel lehetne vizsgálni.)

Fontos, hogy a tesztpozitivitást ne keverjük össze a népesség átfertőzöttségével (tehát, hogy az emberek mekkora hányada fertőzött). A tesztpozitivitás csak akkor mérné az átfertőzöttséget, ha a teszteket a lakosság egy véletlenszerűen kiválasztott részén végeznék, és bár néha ilyenre is van példa, mint Magyarországon a H-UNCOVER vizsgálat esetében, de a tesztek túlnyomó részét egy nagyon nem véletlenszerű csoporton végzik (tünetei vannak, ismert fertőzött kontaktus-személye stb.). Az ő körükben természetesen sokkal magasabb a fertőzöttek aránya, mint általában a lakosságban.

Matematikai részletek

A tesztpozitivitás egyszerűen a napi esetszám és a napi teszt-szám hányadosa. A simítógörbét spline-regresszióval határoztam meg, binomiális eredményváltozót feltételezve (ahol az \(n\) a tesztek, a \(k\) a pozitívak, tehát az esetek száma volt).

Számítástechnikai részletek

Az ábrázoláshoz a ggplot2 csomagot használtam, a simítógörbe becslése mgcv::gam-mal történt (amit a geom_smooth hív meg).

Irodalmi hivatkozások

  • World Health Organization. (2020). Public health criteria to adjust public health and social measures in the context of COVID-19: annex to considerations in adjusting public health and social measures in the context of COVID-19, 12 May 2020. World Health Organization. (https://apps.who.int/iris/handle/10665/332073 accessed 04 September 2020).

Görbeillesztés paraméterei



Alapgondolat

Az előrejelzések többféle módszeren is alapulhatnak. Egy részük empirikus: nem törődik azzal, hogy mi a háttérben lévő jelenség működése, egyszerűen a tapasztalt múltbeli viselkedést “meghosszabbítja” a jövőre nézve. Ilyen módszerekkel jellemzően rövid távú előrejelzések adhatóak.

A módszerek másik része figyelembe veszi a háttérben lévő folyamatok mechanizmusát (ilyen értelemben szokták ezeket “mechanisztikus” modelleknek nevezni). Számos különböző elven alapuló mechanisztikus modellt próbáltak ki és használtak több-kevesebb sikerrel az epidemiológiában: a legklasszikusabb és máig tartóan legnagyobb hatásúak a kompartment modellek (ezekről részletesebben lesz szó később), újabban népszerűek a mikroszimulációk, melyek minden egyes ember viselkedését szimulálják valamilyen szabályszerűség alapján, és a hálózatelméleten alapuló modellek, melyek az embereket és a köztük lévő, fertőzés átadására alkalmas kapcsolatokat a matematikai gráf fogalmának feleltetik meg, és az ottani ismereteket alkalmazzák a járványok terjedésének leírására.

Amit minden előrejelzésnél meg kell érteni: nincs olyan, hogy ez “a” lefutása a járványnak (amit mi előrejelzünk). Különösen hosszabb távon, meghatározó módon fog számítani, hogy mit teszünk: mik a kormányzati intézkedések, milyen az emberek viselkedése. E nélkül értelme sincs mit mondani, csak a “ha-akkor” típusú kijelentéseknek, tehát a szcenárióelemzéseknek van értelme.

Empirikus előrejelzés

Ez a módszer a talán legkézenfekvőbb: a tényadatokra illesztett görbét (lásd a Járványgörbe pontnál!) egyszerűen meghosszabbítjuk. Statisztikailag precízebben szólva: ha megvan a modellünk – melyet a jelenlegi és múltbeli dátumok adatai alapján becsültünk –, lekérjük a becsléseit jövőbeli dátumokra is.

Jelenleg ez a pont az exponenciális görbe illesztését és előrevetítését támogatja.

Ennek pontosságához természetesen fontos, hogy maga az illesztés jó legyen; ehhez beállíthatjuk, hogy a görbe melyik részére illesztünk (ablakozás). Fontos, hogy az ablakozás helyességét, értelmességét itt nem láthatjuk, azt minden esetben a Járványgörbe pont alapján ellenőrizzük!

Az eredményeket megjeleníthetjük grafikonon vagy táblázaton és beállíthatjuk az előrejelzett napok számát is. A Járványgörbe ponthoz hasonlóan logaritmikussá tehetjük a függőleges tengelyt, és megjeleníthetjük a konfidenciaintervallumot is.

Van mód szcenárióelemzésre is e pont alatt, azaz megtehetjük, hogy megvizsgáljuk, hogy akkor mi történik, ha a jövőbeli növekedés nem annyi, mint ami a meglevő esetszámokból következne, hanem annál több vagy kevesebb. Ezzel különféle – optimistább vagy pesszimistább – forgatókönyvek is felvázolhatóak.

Kompartment modell

A kompartment modellek az epidemiológia legnépszerűbb modellje fertőző betegségek terjedésének leírására, előrejelzése. Az alapgondolat, hogy az embereket (például egy ország lakosságát) csoportokra bontjuk, mégpedig hézag- és átfdedésmentesen: mindenki pontosan egy csoportba tartozik, nincs olyan, akik kettőbe, vagy olyan aki egyikbe se. Ezek a csoportok egymástól különböznek, mindjárt pontosan ki is derül, hogy miben, de magukon belül homogének: a benne lévő embereket mind pontosan ugyanolyannak feltételezzük, amik között nincsenek különbségek (például életkorban, nemben, lakhelyben). Azt is feltételezzük, hogy a csoportok tökéletesen keverednek egymással, tehát nem fordulhat elő, hogy egy csoportba tartozó emberek elvonulnak egy megyébe és csak egymással érintkeznek. Az ilyen csoportokat hívjuk kompartmentnek.

Az epidemiológia legklasszikusabb ilyen modellje a SIR-modell, mely épp a kompertmentek tulajdonságáról kapta a nevét. Ez a modell az embereket három ilyen csoportba osztja: vannak fogékonyak (S, susceptible), fertőzöttek akik egyúttal fertőzőképesek is (I, infectious) és gyógyultak vagy más szóval “eltávolítottak” (R, recovered vagy removed); a modell szempontjából ugyanis mindegy lesz, hogy valaki úgy kerül ki a fertőzött csoportból, hogy meghal vagy meggyógyul, a lényeg, hogy többé nem fertőz és nem is fogékony a fertőzésre. Én a továbbiakban gyógyultat fogok mondani az egyszerűség kedvéért.

És akkor most jöjjön a lényeg: a viselkedés! Mert ugye ez a modell attól mechanizmus-alapú, hogy mond valamit a jelenség működéséről. Íme, amit a SIR-modell mond.

Először is: a fogékony csoportból az emberek csak a fertőzött csoportba tudnak kerül, onnan pedig csak a gyógyult csoportba. Már ez is mond valamit arról, hogy mit feltételezünk a betegség mechanizmusáról: a fogékony előbb mindenképp beteg kell legyen, de ami még sokkal fontosabb, hogy a beteg nem válhat újra fogékonnyá! Magyarra lefordítva: ezzel azt feltételezzük, hogy a betegség élethosszig tartó immunitást ad. Vannak fertőző betegségek, melyek nem ilyenek és többször is el lehet őket kapni, ez esetben a SIR-modell nem lesz helytálló. (Használható helyette például SIS-modell, aminek – a nevével ellentétben – csak két kompartmentje van, ám a I-ből vissza lehet jutni újra az S-be.)

Másodszor: a SIR-modell nyilatkozik a dolog dinamikájáról, tehát időbeli lefutásáról is, arról, hogy az emberek időben tekintve hogyan kerülnek át egyik csoportból a másikba. A SIR-modell lényege ugyanis, hogy nyomon követi az egyes kompartmentekben lévő emberek számát! Ez három szám lesz, hány fogékonyunk van adott pillanatban, hány fertőzöttünk van adott pillanatban, hány gyógyultunk van adott pillanatban; és mindezek időben változnak (szebben szólva: az idő függvényei lesznek).

A SIR-modell kulcsa, hogy megadja, hogy az átmenetek, fogékonyből fertőzött lesz, fertőzöttből gyógyult lesz, milyen ütemben történnek. (Egész pontosan azt adja meg, hogy az egyes csoportok létszáma milyen gyorsan változik.) A másodikra azt feltételezi, hogy ez az ütem egyenesen arányos a fertőzöttek létszámával: az, hogy milyen gyorsan fogynak a fertőzöttek – vagy, ami ezzel egyenértékű, milyen gyorsan gyűlnek a gyógyultak – attól függ, hogy mennyi fertőzött van. Jelölje ezt az arányossági tényezőt \(\gamma\). Ez magyarra lefordítva azt jelenti, hogy a fertőzöttek gyógyulása nem függ semmilyen külső körülménytől, állandó rátájú. Félreértés ne essék, hogy ki mennyi idő alatt gyógyul meg, az nem egy fix érték! Van aki lassabban, van aki gyorsabban, tehát a gyógyulási időnek eloszlása van, de a fenti kikötés belátható, hogy azt jelenti, hogy ez az eloszlás egy nevezetes eloszlás (az exponenciális), és hogy ennek a gyógyulási időnek, ami egyúttal a fertőzőképesség hossza is, a várható értéke épp \(1/\gamma\). Mondjuk, ha \(\gamma=0,\!2\), akkor a betegek átlagosan 5 nap alatt gyógyulnak meg (persze van aki több, van aki kevesebb). Megfordítva: ha a betegek átlagosan 5 nap alatt gyógyulnak meg, akkor megtudtuk, hogy \(\gamma=0,2\).

Érdekesebb a helyzet a megfertőződéssel. Itt ugyanis az ütem (hogy milyen gyorsan fogynak a fogékonyak és – ami ezzel egyenlő – milyen gyorsan szaporodnak a fertőzöttek) már két dologtól is függ: a fogékonyak számától és a fertőzöttek számától. Egész egyszerűen azért, mert a fertőzés létrejöttéhez egy fogékony és egy fertőzött ember érintkezése kell! Ha feltesszük, hogy tényleg tökéletes a keveredés a csoportok között, akkor belátható, hogy a megfertőződés ütem a fogékonyak és a fertőzöttek számának szorzatával lesz arányos. (Ez intuitíve érthető: a szorzat kicsi, ha bármelyik tagja kicsi. Akkor is lassan szaporodnak a fertőzöttek, ha kevés fogékony van, hiszen limitált, hogy hány emberből tud egyáltalán fertőzött lenni, és akkor is, ha kevés a fertőzött, hiszen ekkor korlátozott számú góc kelti csak az újabb fertőzéseket.) Jelöljük az arányossági tényezőt \(\beta\)-val. Ez annak a mérőszáma, hogy egy embernek egy időegység alatt hány fertőzés átadására alkalmas kontaktusa van. De ami talán még érdekesebb, hogy ebben a modellben igaz lesz a következő összefüggés: \(R=\frac{\beta}{\gamma}\), tehát a reprodukciós szám igen egyszerűen kiadódik ebből a két paraméterből! Avagy, megint csak megfordítva, ha ismerjük a reprodukciós szám értékét, akkor ismerjük \(\beta\)-t is (feltéve, hogy \(\gamma\)-t már meghatároztuk).

És kész is, ezzel teljesen specifikáltuk a SIR-modellt!

Az ilyen modelleket tipikusan grafikusan szokták megadni, ami nagyon jól áttekinthetővé tesz őket. A kompartmentek kis dobozok, a köztük lehetséges mozgási irányokat nyilak jelzik, az adott nyíl mentén történő mozgás ütemét pedig a nyílra írva felirat. Ilyen módon valóban minden fenti komponens rajta van az ábrán. Íme a SIR-modell a fenti megadásban:

SIR modell

Íme, ezzel kész is vagyunk: ez a legegyszerűbb kompartmentális epidemiológiai modell. Természetesen milliónyi egyszerűsítése van, kezdve a fent felsoroltakkal, hogy a csoportok tökéletesen keverednek, tehát, hogy nincsen semmilyen (életkori, nemi stb.) strukturáltság, hogy a betegség átvészelése végleges immunitást ad, de idevehetjük azt is, hogy nincs születés, és nincs – betegségen kívüli okokból – halálozás… Ennek ellenére jó kiindulópont, és egyben építőkő a bonyolultabb, de cserében realisztikusabb modellek felé.

Ez a pont egy ún. diszkrét idejű, diszkrét állapotterű, sztochasztikus SE2I3R modellt használ; ebből a sok vicces kifejezésből most egy dolog fontos: hogy sztochasztikus. A fent kifejtett modell alapváltozata determinisztikus: ha megadjuk a kezdőértékeket (hány fogékony van kezdetben, hány beteg, hány gyógyult) az egyértelműen meghatározza a teljes lefutást, tehát minden egyes csoport létszáma minden egyes napon egyetlen, első pillanatban pontosan meghatározott érték. Csakhogy a valóság nem ilyen. Vannak véletlenszerű jelenségek, arra, hogy egy nap hányan betegednek meg, nem jó azt, mondani, hogy “123-an!”. Igen, lehessen a várható értéke 123, de engedjük meg, hogy – véletlentől függően! – éppen 122 vagy 124 legyen a tényleges érték. Ha viszont ezt tesszük, onnantól kezdve a csoportok létszámának alakulása is véletlen: egyszer lefuttatva a modellt kapunk egy alakulást, még egyszer lefuttatva egy másikat, harmadszor futtatva egy harmadik. Éppen ezért az itt látható eredmények úgy készültek, hogy a modell nagyon sokszor (300-szor) lefut, és a közepes értéket – a pontonkénti mediánt – mutatja a vastag görbe, körülötte a halványabb sáv az a tartomány, amiben a futtatások 95%-a esett az adott pillanatban. Hogy a dolog jobban érzékelhető legyen, 100 konkrét futás eredménye is ábrázolva van, vékony vonallal.

Adódik a kérdés, hogy akkor most nemsokára napi 300 ezer betegünk lesz?! (Napi?) Igen, mert a modell nem tételez fel semmit az \(R\) változásáról! Amit itt látunk, az lényegében az az eset, hogy elindítjuk a dolgot, ráadásul egy elég nagy, 2 feletti \(R\)-ről, és utána nem csinálunk semmit, hagyjuk, hogy alakuljon a járvány, ahogy magától alakulna. Egy ilyen, kontroll nélküli kitörésnél tényleg ennyire extrém lenne a helyzet. De pont ezért persze nem is ez az igazán érdekes, hanem a szcenárióelemzés: az ábra jobb oldalán lévő táblázatban összeállíthatjuk az \(R\) alakulását, és a szimuláció ennek megfelelően fog lefutni. (A változtatások dátumát függőleges fekete vonalak fogják jelölni az ábrán.)

Matematikai részletek

Empirikus előrejelzés

Ennek legyártása egyszerű predikció. A konfidenciaintervallumot az általánosított modellek esetében először link skálán határozom meg, \(n-2\) szabadságfokú \(t\)-eloszlással, majd exponenciálom. (Mivel az exponenciálás szigorúan monoton transzformáció, így a konfidenciaintervallum széleit nem kell módosítani, megőrzi a lefedést.)

Kompartment modell

A használt modell egy SE2I3R kompartment modell, ami annyiban módosítja a szokásos SEIR modellt (itt az E a lappangó betegek csoportja, akik már fertőzöttek, de még nem fertőzőek), hogy két E és három I kompartmentet fűz egymás után:

SEIR modell

Ennek nagyon egyszerű az oka: egy kompartment esetében a kompartmentben töltött idő – állandó rátájú kilépés esetén – exponenciális eloszlású, több esetén pedig emiatt exponenciálisok összege (azaz gamma eloszlás, ebben a speciális esetben szokták Erlang eloszlásnak is nevezni), és egész egyszerűen az empirikus adatok azt mutatják, hogy a fertőzőképesség, illetve a betegség hosszának az eloszlása a valóságban tényleg nem exponenciális. Azért választottam \(k=2\)-t a lappangási idő eloszlására, és \(k=3\)-at a betegség időtartamának eloszlására, mert Wearing és mtsai egy 2005-ös cikkükben ezt javasolták a SARS-ra.

A fenti modell szokásos felírása a következő differenciálegyenletekből áll:

\[ \begin{equation*} \frac{\mathrm{d}S}{\mathrm{d}t} &= -\beta S \left(I_1+I_2+I_3) \ \frac{\mathrm{d}E_1}{\mathrm{d}t} &= \beta S \left(I_1+I_2+I_3) - 2\alpha E_1 \ \end{equation*} \]

A szokványos SIR/SEIR modellek problémája, hogy folytonos idejűek és folytonos állapotterűek. Az előbbi a kisebb gond, végül is az idő tényleg folytonos – csak az a baj, hogy a járványügyi adatok gyűjtése viszont diszkrét, legjobb esetben is napi. Ezért a folytonos idejű modelleknél már eleve trükközni kell, hogy ehhez igazodni lehessen a becslésnél. Még nagyobb probléma a diszkrét állapottér: persze egymillió betegnél nem nagyon számít, ha a modell szerinte egymillió és fél beteg van, de az 1,5 beteg az probléma lehet. További gond a SIR/SEIR modelleknél, hogy a közvetlen jellemző a fertőzöttek száma egy adott pillanatban, márpedig a járványügyi adatszolgáltatások primer módon általában inkább a napi esetszámról adnak információt.

Az általam használt SEIR modell ezért egy olyan variáns mely diszkrét idejű, és diszkrét állapotterű, tehát az idő a természetes számok halmazán van értelmezve, csakúgy mint az egyes kompartmentek létszáma.

A másik alapvető különbség, hogy a szokványos SIR/SEIR-modellek determinisztikusak. Szerencsére ez könnyen feloldható a fenti diszkrétségi közelítéssel is kombinálva:

A becslés részben megfigyelt Markov-folyamatok elméletén alapszik. Ebben



Alapgondolat

Abban a szakaszban, amikor a járványgörbe felfutása exponenciális, az azon a szakaszon kimért növekedési ráta felhasználható a reprodukciós szám becslésére. Ez intuitíve is logikus: minél gyorsabban fut fel egy járvány, annál nagyobb az \(R\). A valóságban az összefüggés ennél kicsit bonyolultabb, számít az is, hogy egy fertőzött milyen gyorsan adja át a betegséget, de Wallinga és Lipitsch 2007-es cikkükben részletesen kidolgozták ennek a matematikáját. Nagyon leegyszerűsítve az alapgondolat: ha az illesztett görbe alapján a duplázódási idő 5 nap, és a betegség serial interval-a szintén 5 nap, akkor \(R=2\). Hiszen 5 nap alatt jönnek létre a másodlagos fertőzések, és az kétszer annyi beteget jelent, akkor mindenki átlagosan két embernek adta át a fertőzést. Ha a duplázódási idő 5 nap, de a serial interval csak 3, akkor az \(R\) kisebb mint kettő, hiszen 5 nap alatt egy átadási generációnál több is történik, mégis csak kétszer annyi beteg van – egy beteg tehát 2-nél kevesebb betegnek adta át a kórt. Fordítva, ha a serial interval hosszabb mint a duplázódási idő, akkor az \(R\) nagyobb mint 2, mert még az első generáció sem jöhetett létre teljesen, mégis már kétszer annyi beteg van – egy beteg tehát 2-nél többnek adta át a kórt átlagban.

Ez a pont ezt a gondolatot használja fel az \(R\) becslésére. Ne feledjük: a kulcskérdés, hogy az \(R\) értéke hogyan viszonyul az 1-hez.

Kiválasztható a teljes görbére illesztett exponenciális, vagy ez ablakozható is. Az ablakozás szerepe itt is ugyanaz: kikereshetjük a releváns időtartományt, ahol tényleg exponenciálisan viselkedik a járványgörbe. Fontos, hogy az ablakozás helyességét, értelmességét itt nem láthatjuk, azt minden esetben a Járványgörbe pont alapján ellenőrizzük!

Amennyiben időben változik az \(R\) (és így a növekedési ráta is), egy kézenfekvő megoldás a folyamatosan változó dinamika követésére a csúszóablak: a 7. naptól kezdve minden egyes napra kiszámoljuk a megelőző 7 nap adataiból számolt növekedési rátát, és abból az \(R\)-et. (Innen kapta a módszer a nevét: mintha egy hét nap szélességű ablakot végigtolnánk a görbén, és mindig az ablakban látott adatokból számolnánk.) Így mindig az aktuális helyzetről kapunk képet, annak árán, hogy bizonytalanabb lesz a becslésünk, hiszen mindig csak 7 napnyi adatot használunk fel, bármilyen hosszú is a járványgörbe. Természetesen az ablak szélessége állítható: a hosszabb ablak stabilabb becslést eredményez, de összemoshat különböző dolgokat, a szűkebb ablakban gyorsabban tudja követni az \(R\) változásait, de a kevesebb adat miatt bizonytalanabb becslés a dolog ára.

Mindenesetre ezzel a módszerrel az időben változó \(R\)-et (például: járványügyi intézkedések hatása) is nyomon tudjuk követni.

Matematikai részletek

Elsőként az Euler–Lotka-egyenletet vezetjük le.

TODO

A csúszóablak szélességének a megválasztása, illetve annak dilemmája a statisztikában jól ismert bias-variance trade-off egy példája.

TODO

A konfidenciaintervallum számításához a regressziós modellből vettünk újra és újra mintákat, felhasználva a növekedési ráta standard hibáját (lényegében poszterior szimulációt végeztünk).

TODO

Számítástechnikai részletek

A növekedési ráta átszámítására Wallinga és Lipitsch cikkének gondolatát közvetlenül felírtam gamma eloszlásra (r2R0gamma és lm2R0gamma_sample függvények). A cikk melléklete a szükséges formulát közvetlenül is tartalmazza. A csúszóablakot a zoo::rollapply valósítja meg.




Alapgondolat

Egy betegség “veszélyességének” legalapvetőbb mérőszáma a halálozási arány, különösen, ha az nem elhanyagolhatóan kicsi. A halálozási arány számítása egy éppen zajló járvány közben nem nyilvánvaló feladat. A kézenfekvő formula (“összes halálozás osztva az összes esettel”) jól működik a járvány után, ha már minden eset – így vagy úgy – de lezáródott.

(Kitérő megjegyzés: valójában ez sem teljesen igaz. És ez a probléma nem csak a járványokra, pláne nem csak konkrétan erre a járványra, hanem általában bármilyen okspecifikus, tehát a halált adott okhoz hozzárendelő vizsgálatra vonatkozik. Mert mit jelent az, hogy valaki a koronavírusba halt bele? Azt, hogy a halálakor pozitív volt? (Akkor is ezt mondanánk, ha egy autó ütötte el?) Mi van egy terminális rákossal? Lehet, hogy amúgy is meghalt volna? Lehet, hogy meghalt volna, de csak egy héttel később, és a fertőzés ennyivel meggyorsította a halálát? Ezekben az esetekben akkor ő mibe is halt bele? – anélkül, hogy bármi további részletben elmerülnék, remélem tudtam érzékeltetni ezekkel a kérdésekkel, hogy már az adott okból történő halálozások számának a meghatározása sem nyilvánvaló kérdés; részben ráadásul filozófiai és nem is csak orvosi szempontokat felvetve. Az esetek száma, tehát a nevező, szintén nem problémamentes, hiszen mi van azokkal, akik nem mentek orvoshoz a tüneteikkel? Vagy orvoshoz mentek, de nem tesztelték le őket? Vagy, mondok jobbat, egyáltalán nem is voltak tüneteik? (Mert ilyen is előfordul egy sor fertőző betegségnél.) Az előbbi kérdéstől most eltekintünk, adottnak vesszük, hogy mi egy ország definíciója erre, de az utóbbi problémára még hangsúlyosan visszatérünk.)

Ami azonban bizonyos, hogy ez a képlet a járvány közben nem alkalmazható. A probléma, hogy az “összes eset” egy része még zajlik, szép szóval élve: aktív, vagy nem lezárt eset, ott fekszenek a kórházban, és mi sem tudhatjuk mi lesz a kimenetük. A képlet csak akkor lenne helyes, ha kivétel nélkül mindegyikük meggyógyul, de ha bárki meghal közülük, akkor a képlet már torzított lesz, hiszen akkor ennek a halálozásnak a számlálóban is szerepelnie kellett volna, hiszen a neki megfelelő beteg a nevezőben szerepelt… de nem lesz ott, mert most még mi sem tudhatjuk, hogy meg fog halni. Azaz a képlet alá fogja becsülni a halálozási rátát, hiszen a vetítési alapban szereplő betegek egy része sajnos majd még meg fog halni, de a jövőben, így a képlet ezekkel nem számol.

Szerencsére, ha van információnk a betegség fellépésétől a halálozásig eltelő idő eloszlásáról, azon esetek révén akik végül meghaltak, akkor ez a torzítás statisztikai eszközökkel kiküszöbölhető. (Gondoljunk arra, hogy ha ez az idő nagyon rövid, akkor kicsi a torzítás, hiszen csak a nagyon új betegeknél jelentkezik ez a probléma, az összes esetben szereplő kicsit is régebbi eseteknél már nem, hiszen ilyenkor ők már lezáródtak, így vagy úgy. Ha az idő hosszabb, akkor egyre romlik a helyzet. A korrekciós képlet ezt ragadja meg számszerűen.)

Nevezzük a naiv számítás eredményét nyers halálozási aránynak, a fenti korrekcióval kapott értéket pedig korrigált halálozási rátának.

Ez utóbbi biztos jobb, hiszen eltüntetett egy alábecslést, de még mindig van egy, teljesen más problémakör: az, hogy hány esetet találunk meg. Tételezzük fel, hogy a súlyos eseteket (pláne a halálozásokat) mind megtaláljuk, de az enyhébbek, urambocsá' tünetmentesek kérdésesek, erősen múlnak azon, hogy az ország mennyit tesztel. (Magyarország például nemzetközi összehasonlításban jelenleg keveset.) Könnyen látható, hogy ha valaki nagyon kiterjedten tesztel, rengeteg enyhe esetet is megtalál, akkor az ő hányadosában jó nagy lesz a nevező – de ez nem baj, hiszen ez a valódi érték. Viszont ha valaki kevésbé tesztel, kevesebb enyhe esetet talál meg, akkor a nevezője kisebb lesz, és így a halálozási rátája abnormálisan nagy lesz.

Ezt a gondolatot egy kicsit tovább is vihetjük, és így egy lehetséges eszközt nyerünk az “aluldetektálás” (tehát az esetek, például nem kellően kiterjedt tesztelés miatti, nem megtalálásának) a mérésére.

Az ötlet a következő. Vegyünk egy országot, ami nagyjából hasonlít a miénkhez, de sokkal többet tesztel. (Pl. Németországot hazánk esetében.) Azt látjuk, hogy ott jóval kisebb a korrigált halálozási arány. Vajon minek tudható ez be?

  • A vírus valamilyen biológiai okból veszélyesebb nálunk (szinte kizárt)
  • Az egészségügyi ellátásunk ennyivel rosszabb (ebben a tekintetben nem valószínű, különösen, hogy ennek a betegségnek amúgy sincs oki terápiája, és egyik egészségügyi rendszer sincs most még túlterhelve)
  • A betegek ennyivel kockázatosabbak nálunk, például idősebbek vagy több a társbetegségük (szóba jöhet, de azért nagy különbség sem a korfában, sem a társbetegségek arányban nincs)

Akkor mi marad magyarázatként? Az, hogy a németek –- a több tesztelés hatására –- több beteget találtak meg, pontosabban szólva, jobban megtalálták az összes beteget. Azaz azért jobb náluk a halálozás, mert a nevezőjük (a reálisnak megfelelően) nagyobb!

Most jöjjön a központi feltevés: tételezzük fel, hogy mivel a fenti három okot kilőttük, így valójában a mi halálozási arányunk is ugyanannyi, mint a németeké. (Itt természetesen már korrigált arányról beszélünk.) Nevezzük ezt a valódi értéket, amit, újra ismételjük meg, egy hozzánk – korösszetételében, társbetegségében, fejlettségében – hasonló, de nagyon sokat tesztelő ország adatként fogunk megszerezni, benchmark halálozási aránynak. Legyen mondjuk ez 1% a példa kedvéért. Kiszámoljuk a korrigált halálozási arányunkat, és 10%-ot kapunk. Mi a magyarázat? Innen már világosan látszik az okfejtés vége: az, hogy a mi nevezőnk tizedakkora, mint a valóság! Ezért lett ilyen nagy az arány; ha 10-szer annyi betegre osztanánk rá, akkor máris 1% lenne nálunk is. Elfogadva tehát, hogy a benchmark mortalitás a valódi érték nálunk is, ezzel a logikával tudunk következtetni az aluldetektálásra. Ha pedig ennek az értéke megvan, akkor ezzel beszorozva a jelentett esetszámainkat, arra is kapunk becslést, hogy mi a tényleges – de kellő tesztelés híján sajnos nem detektált – esetszám.

Matematikai részletek

TODO

Jelentés letöltése (PDF)

Írta: Ferenci Tamás (Óbudai Egyetem, Élettani Szabályozások Kutatóközpont), v0.31