fi fi fi sv fi fi fi fi sv fi fi fi fi zh fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi en fi fi fi fi fi fi da fi fi fi fi fi fi fi fi es es es tr en fi fi fi en fi fi fi fi fi fi en en fi fi sv fi fi en en en en en en en en en fa en en en en en en en en fi fi fi fi fi
Näin laskentakoodeja käytetään koronamallintamisessa - THL-blogi
Avaa haku Sulje haku Avaa valikko Sulje valikko
Jaa somessa Jaa Facebookissa Jaa Twitterissä Jaa LinkedInissä Jaa WhatsAppissa
Koronaepidemia, Tiedonhallinta sosiaali- ja terveysalalla
Koronavirusepidemian mallintamista on esitelty THL:n webinaareissa. Tässä kirjoituksessa esitellään mallintamisen laskentakoodeja, eli laskennan lähdekoodeja, joita kohtaan on myös ilmennyt kiinnostusta.
Kiteytetysti, laskentakoodien avulla toteutetaan mallit, jotka koronamallinnusryhmän webinaareissa on esitelty.
Ruoanlaittoon verrattuna mallit vastaavat reseptejä ja koodit kattiloita ja muita ruoanlaittovälineitä. Koodit itsessään eivät tuo mallin kuvaukseen varsinaisesti uutta sisältöä. Reseptiä eli mallin kuvausta seuraten taitava kokki voi tehdä aterian.
Jotta saadaan jotakin suuhunpantavaa, tarvitaan reseptin ja kattiloiden lisäksi tietenkin myös ruokatarvikkeet. Malleille näitä ovat erilaiset aineistot.
Yksinkertaisimmillaan aineisto voi muodostua yksittäisistä parametreista, luvuista joita malliin syötetään, mutta aineistot voivat olla myös esimerkiksi sairaaloiden potilasaineistoja.
Koronamallinnusryhmän koodien sisällön voi jakaa karkeasti kolmeen ryhmään.
Ensiksikin, varsinaiset laskentakoodit, jotka toteuttavat mallien laskentakaavat.
Toinen ryhmä on koodit, jotka lukevat aineistot eri tietolähteistä ja muokkaavat niiden tietosisällön laskentakoodin käyttämään muotoon. Ruoanlaittovertausta jatkaen nämä koodit ikään kuin käyvät kaupassa hankkimassa tarvikkeet, purkavat kauppakassit ja pilkkovat raaka-aineet kokin tarvitsemalla tavalla. Tätä osuutta eivät tosin tee pelkästään mallinnusryhmän koodit, vaan siihen osallistuu paljon asiantuntijoita esimerkiksi THL:n tietohallinnosta.
Koodien kolmas ryhmä on tulosten esittäminen ja tallentaminen. Jotta laskennasta olisi kenellekään mitään hyötyä, tulokset on luonnollisesti esitettävä erilaisina taulukkoina ja kaaviokuvina. Jokainen osaa itse kuvitella, mikä olisi tämän kohdan vastaavuus kokkailussa.
Minkälaisia malleja, sellaisia koodeja
Koronaepidemian alkuvaiheessa analyyseissä käytettiin ulkomaiseen vertailualueeseen perustuvaa mallia. Tällä hetkellä käytetään myös kotimaista korona-aineistoa hyödyntävää ”oppivaa mallia”.
Mallien avulla voi laskea erilaisia tulevaisuuden skenaarioita, eli arvioita tulevien tautitapausten ja hoidon tarpeen määristä sen mukaan, mitä tulevaisuutta koskevia parametreja malleille syötetään. Mallit eivät arvioi tällaisten skenaarioiden toteutumisen todennäköisyyttä, eivätkä esimerkiksi anna vastausta kysymykseen ”toisen aallon” saapumisesta.
Molemmat käytetyt mallit perustuvat samanlaiseen hyvin yksinkertaiseen epidemiologiseen SEIR-malliin (S = Susceptible, altis; E = Exposed, tartunnan saanut; I = Infectious, tartuttava; R = Removed, aiemmin tartuttava). Parametrien erilaisesta käsittelystä johtuen mallit eroavat kuitenkin ohjelmistoina toisistaan suuresti.
Vertailualueeseen perustuva malli on käytännössä pelkkä SEIR-malli, johon parametrit syötetään. Sellaisen voi ohjelmoida vartissa (Kuva 1) – blogia varten kokeilin tätä ja otin aikaa! Itse koodin kirjoittaminen mallin kuvauksesta on tässä tapauksessa siis hyvin yksinkertaista, lähes taskulaskintasoa.
Varsinainen työ vertailualuetta käytettäessä olikin parametrien selvittämisessä. Tätä puolta selitettiin webinaarissa.
Oppiva malli oppii parametrit kertyvästä aineistosta
Oppiva malli tarkoittaa, että malli estimoi (”oppii”) parametrit kertyvästä kotimaisesta korona-aineistosta ja muodostaa näin tilannekuvan. Tämän pohjalta voidaan paitsi saada ymmärrystä epidemiasta myös laskea lyhyen tähtäimen ennuste, esimerkiksi tulevalle viikolle. Lisäksi tilannekuvaa voi käyttää lähtökohtana erilaisille pitkän tähtäimen skenaarioille.
Oppivan mallin tapauksessa ohjelmisto sisältää kaikki alussa kuvatut vaiheet aineiston lukemisesta ja on siksi oleellisesti laajempi. Sen rakennetta on kuvattu alla tarkemmin.
Malleja ja koodeja on kehitetty pitkälti rintarinnan, muuttuvien käyttötarpeiden mukaan. Siksi mallinnusryhmän koodit ovat eräänlaisia prototyyppejä, eivätkä käytettävyydeltään yleisessä tai teollisuudessa käytössä olevien ohjelmien tasoa. Tyypillisesti ohjelmistoa kykenee käyttämään tutkija itse tai kollega perehdytyksen jälkeen.
Ryhmän tavoitteena ei ole ollut koodien hiominen yleiseen käyttöön. Sellainen vaatisi oman ohjelmistoprojektinsa, millaisessa vaadittava osaaminen on erilaista kuin mallinnusryhmän matemaattiseen laskentaan painottuva osaaminen.
Kuva 1. SEIR-mallin koodi. Tätä blogia varten vartissa koodaamani SEIR-malli. Siinä palautetaan SEIR-tilojen lisäksi päivittäinen infektion ilmaantuvuustermi insI, johon voi tarvittaessa liittää vakavien tautien todennäköisyydet ja sairaalahoitojaksojen kestot. Tässä koodissa tilojen väliset siirtymät on toteutettu siirtymätodennäköisyyksillä, jolloin tilat pysyvät varmasti positiivisina kiinteässä aika-askelluksessa. Perustartuttavuusluku R0 syötetään ajasta riippuvana vektorina, jolloin voi kokeilla eri tavoin jaksotettujen R0 vaikutusta.
Oppivasta mallista on laadittu kolme eri laskentaohjelmistoa, kolmella eri ohjelmointikielellä.
Usean version etuna on, että laskennan toimivuutta on mahdollista tarkistaa vertailemalla tuloksia toisiinsa. Kaksi malleista on riippumattomasti toteutettuja prototyyppejä. Kolmas, vielä keskeneräinen versio on tarkoitettu jatkossa ryhmän yhteiskäyttöön.
Alla olevassa kuvassa (Kuva 2) on esitetty oppivan mallin ohjelmiston rakennetta. Siniset laatikot kuvastavat koodin osia ja punertavat nuolet tiedon siirtymistä.
Aineiston lukemisen komponentti (1) lukee ja muokkaa päivittäin kertyvän aineiston varsinaisen laskentakomponentin käyttämään muotoon. Laskentakomponentti jakaantuu kahteen osaan. Ensimmäinen osa (2) estimoi mallin parametrit aineistosta ja muodostaa näin epidemian laskennallisen tilannekuvan. Toinen osa (3) määrittelee tulevaisuuden skenaarion ja laskee tilannekuvalle pohjautuvan ennusteen kyseiselle skenaariolle.
Molempien laskentaosien ytimessä on edellä esitetyn kaltainen SEIR-mallin koodi. Suomessa kevään ensimmäinen epidemia-aalto keskittyi suurelta osin pääkaupunkiseudulle. Oppivaa mallia ajatellen muualta Suomesta kertyi niin vähän aineistoa, että malli ei kykene siitä oppimaan koronavirusepidemian ominaisuuksia. Siksi laskentakomponentit (2-3) on toteutettu pääkaupunkiseudun alueelle.
Osissa (4-5) on laskentakomponenttien laajennus Suomen muille alueille toteutettu niin, että alueellisia aineistoja yhdistetään pääkaupunkiseudulta estimoituihin parametreihin.
Voisiko oppivan mallin koodeja päästä kokeilemaan?
Python-ohjelmointikielellä toteutetun version voi ladata alla olevasta linkistä.
Linkin takaa löytyvässä versiossa aineistona on simuloimalla tuotettu aineisto, jonka avulla mallin ajamista voi kokeilla.
Tietosuojan vuoksi todellista sairaala-aineistoa ja siihen liittyviä aineiston lukuohjelmia ei ole mahdollista laittaa sellaisenaan jakoon.Lupaa eri aineistojen tutkimuskäyttöön voi hakea normaalin menettelyn mukaisesti Findatan kautta.
Kuva 2. Oppivan mallin ohjelmiston rakenne.
Simopekka Vänskä erikoistutkija Infektiotautien torjunta ja rokotukset
Jaa somessa Jaa Facebookissa Jaa Twitterissä Jaa LinkedInissä Jaa WhatsAppissa
Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *
Tallenna nimeni, sähköpostiosoitteeni ja kotisivuni tähän selaimeen seuraavaa kommentointikertaa varten.
THL-blogissa asiantuntijamme ottavat kantaa ajankohtaisiin aiheisiin, tulkitsevat yhteiskunnallisten ilmiöiden merkityksiä sekä esittävät uusia näkemyksiä ja ratkaisuehdotuksia. THL:n kannan esittää laitoksen johto. Blogia ylläpitää THL:n viestintäyksikkö.
Evästeet auttavat meitä kehittämään verkkopalveluamme ja parantamaan sen sisältöjä ja saavutettavuutta. Osa evästeistä on välttämättömiä, jotta sivut toimivat oikein. Voit palata asetuksiin myöhemmin Tietoa sivustosta -sivulla. Hallinnoi evästeasetuksiasi.
Evästeet auttavat meitä kehittämään verkkopalveluamme ja parantamaan sen sisältöjä ja saavutettavuutta. Osa evästeistä on välttämättömiä, jotta sivut toimivat oikein. Voit hyväksyä kaikki evästeet tai vain välttämättömät.
Osa evästeistä on välttämättömiä, jotta sivut toimisivat tarkoitetulla tavalla. Välttämättömiä evästeitä hyödynnetään esimerkiksi toiminnallisuuksissa, joissa käyttäjä tekee valintoja, kuten evästesuostumusasetukset. Välttämättömät evästeet tallentuvat selaimeesi automaattisesti, kun käytät verkkopalvelua, emmekä pyydä niiden käyttöön erikseen suostumustasi. Välttämättömät evästeet säilyvät selaimessasi enintään vuoden ajan.
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Sivustolla on käytössä Google Analytics -ohjelmalla tehtävä sivuston kävijäseuranta. Google Analyticsin evästeiden tallentamia tietoja ovat esimerkiksi mitä kautta käyttäjät sivulle tulivat (hakukone, suora linkki tms.), millä sivuilla käyttäjät kävivät ja kuinka pitkään käyttäjät sivuilla olivat.