Tässä esimerkissä tarkastellaan koneoppimismallien käyttöä terveysdatan analysointiin, erityisesti sellaisten tilastojen arviointiin kuin vuosittaiset menetetyt terveydelliset elinvuodet (DALYs) trooppisten sairauksien, kuten denguekuumeen ja rabieksen, osalta. Analyysi tehdään käyttäen kahta suosittua työkalua: R:n mlr3-pakettia XGBoostin kanssa sekä H2O-pakettia rabiesdatan käsittelyyn.

XGBoost on tehokas ja suosittu työkalu regressiomallinnuksessa, joka voi käsitellä monimutkaisia ja suuria tietomääriä. Tässä esimerkissä käytämme mlr3-kirjastoa R:ssä, joka on suunniteltu koneoppimisen mallien kehittämiseen ja arviointiin. mlr3-paketti mahdollistaa useiden eri mallien luomisen, arvioinnin ja vertailun yhdellä komennolla.

Ensimmäinen askel on määrittää tehtävä ja valita malli. Tässä tapauksessa käytämme regressiomallia, joka ennustaa DALYs-arvoja. Määrittelemme datan ja tehtävän seuraavasti:

r
task <- TaskRegr$new(id = "DALYs", backend = dalys_dengue, target = "DALYs")

Datasta poistetaan puuttuvat arvot ja kategoriset muuttujat, ja sen jälkeen se on valmis mallinnukseen. Seuraavaksi määritämme oppijat (mallit), joita vertailemme:

r
learner_cv_glmnet <- lrn("regr.cv_glmnet", alpha = 0.5, s = 0.1)
learner_xgboost <- lrn("regr.xgboost", nrounds = 1000, max_depth = 6, eta = 0.01)

Nyt voimme määritellä ristiinvalidoinnin (cross-validation) ja luoda benchmarkin, joka vertailee XGBoost- ja GLMNet-malleja:

r
resampling <- rsmp("cv", folds = 5)
design <- benchmark_grid(tasks = task, learners = list(learner_cv_glmnet, learner_xgboost), resamplings = resampling)

Seuraavaksi suoritetaan benchmark:

r
set.seed(19052024)
bmr <- benchmark(design, store_models = TRUE, store_backends = TRUE)

Mallien suorituskykyä arvioidaan käyttämällä keskivirhettä (MSE) sekä muita mittareita, kuten RMSE (juuri keskivirhe) ja MAE (keskineliövirhe). Tulokset voidaan tarkastella seuraavalla komennolla:

r
bmr$score()[, .(learner_id, task_id, iteration, regr.mse)]

Kun mallit on koulutettu ja arvioitu, voidaan niiden suorituskykyä verrata visuaalisesti. Esimerkiksi seuraava koodi tuottaa kuvan, joka näyttää mallien ennusteet todellisten arvojen verrattuna:

r
dat %>% ggplot(aes(x = truth, y = response, group = learner)) + geom_abline() + geom_point(aes(color = learner)) + scale_color_manual(values = c("regr.cv_glmnet" = "navy", "regr.xgboost" = "orange"))

Tässä vaiheessa voimme myös vertailla erilaisten mallien suorituskykyä ja arvioida niiden tarkkuutta, erityisesti sellaisten metrikkojen avulla, kuten RMSE ja MAE, jotka antavat selkeän kuvan siitä, kuinka hyvin malli on kyennyt ennustamaan todelliset DALYs-arvot.

Seuraavassa vaiheessa, esimerkissä rabiesdatan käytössä H2O-paketin avulla, on tarpeen ensin alustaa H2O-klusteri ja ladata data:

r
library(h2o) h2o.init()

Rabiesdatan käsittelyssä käytämme H2O:n kykyä jakaa data koulutus- ja testijoukkoihin sekä luoda malleja lineaarisella regressiolla, Gradient Boosting -menetelmällä (GBM) ja satunnaismetsällä (Random Forest). Mallit koulutetaan seuraavasti:

r
model_lm <- h2o.glm(x = predictors, y = response, training_frame = train, family = "gaussian")
model_gbm <- h2o.gbm(x = predictors, y = response, training_frame = train, validation_frame = test, ntrees = 1000, max_depth = 6, learn_rate = 0.01)
model_rf <- h2o.randomForest(x = predictors, y = response, training_frame = train, ntrees = 100, max_depth = 20)

Kun mallit on koulutettu, niitä voidaan arvioida ja verrata toisiinsa. H2O tarjoaa erinomaiset työkalut sekä mallien arviointiin että visualisointiin. Yksi esimerkki on ggplot2-paketin käyttö visualisoimaan ennusteiden ja todellisten arvojen välistä eroa.

Yhteenvetona, on tärkeää huomata, että eri mallien suorituskyky voi vaihdella riippuen datan luonteesta ja valituista hyperparametreista. Tämän vuoksi on aina suositeltavaa kokeilla useita eri malleja ja säätää niitä, jotta saavutetaan paras mahdollinen ennustetarkkuus. On myös tärkeää ymmärtää, että koneoppimismallien suorituskyky ei aina ole suoraan verrannollinen niiden monimutkaisuuteen. Vaikka XGBoost ja muut monimutkaiset mallit saattavat tuottaa hyviä ennusteita, yksinkertaisemmat mallit, kuten lineaarinen regressio, voivat joskus olla riittäviä ja selkeämpiä tulkita.

Miten sosiodemografinen indeksi (SDI) auttaa terveysennusteissa?

Sosiodemografinen indeksi (SDI) on keskeinen mittari, joka auttaa ymmärtämään terveysindikaattoreiden kehityksen taustalla vaikuttavia tekijöitä. SDI:n taso kuvastaa yhteiskunnan ja väestön sosioekonomista tilaa, ja sitä voidaan käyttää ennustemalleissa sairauksien taakan, kuolleisuusasteiden ja muiden terveyteen liittyvien mittareiden arvioimiseen. Esimerkiksi sairauden ilmaantuvuutta voidaan mallintaa logistisen regressiomallin avulla, jossa SDI toimii yhtenä ennustavista muuttujista. Mallissa logit-funktio muuntaa todennäköisyyden logaritmisiksi kertoimiksi, joiden avulla voidaan arvioida kuinka SDI ja muut tekijät vaikuttavat sairauden ilmaantumiseen. Tämä mahdollistaa terveydenhuollon resurssien kohdentamisen ja riskiryhmien tunnistamisen ennakoivasti.

SDI-dataa voidaan analysoida pitkittäisaikasarjana, jolloin havaitaan yhteiskunnan sosiodemografisten olosuhteiden muutoksia vuosien saatossa. Esimerkkinä voidaan tarkastella vuosien 1990–2019 SDI-arvoja globaalisti ja eri maissa kuten Saksassa, Ranskassa ja Italiassa. Näissä maissa SDI:n keskiarvot vaihtelevat, ja korkeimmat arvot on havaittu Saksassa, mikä viittaa parempiin sosioekonomisiin oloihin ja siten usein parempiin terveysennusteisiin.

Aikasarja-analyysi, esimerkiksi Ranskan SDI:n osalta, paljastaa taustalla vaikuttavat trendit ja kausivaihtelut. STL-dekomponointimenetelmä (Multiple Seasonal Decomposition by Loess) jakaa aikasarjan kolmeen pääkomponenttiin: trendi, kausivaihtelu ja jäännöskomponentti. Trendikomponentti kuvaa pitkän aikavälin kehityssuuntaa, kausikomponentti toistuvia säännöllisiä vaihteluita, kuten vuosittaisia muutoksia, ja jäännöskomponentti selittää satunnaisvaihtelua, jota ei voida selittää trendillä tai kausivaihtelulla.

Aikasarjamallien rakentamisessa on oleellista huomioida muuttujien autokorrelaatio, eli se, kuinka paljon aiemmat arvot vaikuttavat tuleviin arvoihin. Autokorrelaatio antaa viitteitä muuttujan pysyvyydestä ja ennustettavuudesta. Jos SDI:n arvo tänään on läheisesti yhteydessä arvoon eilen tai viime vuonna, se tarkoittaa korkeaa autokorrelaatiota, mikä voi parantaa ennustemallien tarkkuutta.

SDI:n aikasarja voi olla additiivinen tai multiplikatiivinen riippuen siitä, miten sen komponentit vuorovaikuttavat. Additiivisessa mallissa trendi, kausi ja jäännös ovat toisistaan riippumattomia ja summautuvat, kun taas multiplikatiivisessa mallissa komponentit vaikuttavat toisiinsa suhteellisesti ja niiden vaikutus kasvaa tai pienenee yhdessä. Logaritmimuunnos mahdollistaa multiplikatiivisen mallin käsittelyn additiivisena logaritmisella asteikolla, mikä on hyödyllistä erityisesti eksponentiaalisen kasvun tai heteroskedastisuuden tapauksessa.

SDI:n analysointi ja mallintaminen tarjoaa arvokasta tietoa siitä, miten sosiodemografiset tekijät muovaavat terveysolosuhteita. Näin voidaan kehittää tehokkaampia terveyspolitiikkoja, kohdentaa interventioita ja ennakoida tulevia terveysongelmia.

Lisäksi on tärkeää ymmärtää, että SDI ei ole ainoa tekijä, joka vaikuttaa terveystuloksiin. Sairauksien ilmaantuvuuteen vaikuttavat myös monet biologiset, ympäristöön liittyvät ja käyttäytymiseen perustuvat tekijät, jotka tulisi sisällyttää ennustemalleihin monipuolisesti. Aikasarja-analyysissä on huomioitava, että trendit ja kausivaihtelut voivat muuttua ajan myötä esimerkiksi poliittisten päätösten, teknologisen kehityksen tai sosiaalisten rakenteiden muuttuessa, mikä korostaa mallien jatkuvan päivittämisen merkitystä. Ennustemallit, jotka perustuvat pelkästään SDI:hin, eivät siksi voi täysin selittää tai ennustaa terveystulosten monimutkaisuutta ilman laajempaa kontekstia ja monitieteellistä lähestymistapaa.