26. juuni 2026 · 9 min
Sammud ja kalorid: kuidas mõista seoseid kahe tunnuse vahel
Kuidas korrelatsioon, hajuvusdiagramm ja õigesti valitud regressioonjoon aitavad kahe tunnuse vahelist seost terviklikumalt tõlgendada.
Kirjutasin hiljuti sellest, kuidas tulpdiagramm peidab ära jaotuse kuju. Sama lugu kordub, kui vaatad kahe arvu vahelist seost: kõige lihtsam mõõdik — korrelatsioon — annab küll ühe ilusa numbri, aga pahatihti võib see jätta väga petliku mulje.
Kasutame näitena andmestikku, kus on näha inimese päevased sammud ja kulutatud kalorid. Osa päevi on käidud jooksmas, osa päevi ujumas ning ülejäänud päevadel niisama puhatud. Need on "mängu andmed" ehk siis masina poolt just selle artikli jaoks genereeritud.
Alustuseks üks number: korrelatsioonikordaja
Kõige kiirem viis kahe arvulise tunnuse seose mõõtmiseks on korrelatsioonikordaja. Selle väärtus jääb −1 ja +1 vahele: +1 tähendab täiuslikku positiivset seost (üks suureneb, teine ka), −1 täiuslikku negatiivset seost, 0 tähendab seose puudumist.
Aga ka korrelatsiooni on võimalik arvutada mitmel moel. Neist kõige tuntumad on Pearsooni ja Spearmani korrelatsioon.
Meie näidisandmestiku peal:
| Mõõdik | Väärtus |
|---|---|
| Pearsoni r | 0.79 |
| Spearmani ρ (roo) | 0.78 |
Mõlemad ütlevad, et sammude ja kulutatud kalorite vahel on tugev positiivne seos. Ehk siis, rohkem samme tähendab ka rohkem kulutatud kaloreid. Aga mille poolest need kaks erinevad?
Pearsoni korrelatsioon mõõdab lineaarset seost — kuivõrd hästi kirjeldab sirgjoon kahe tunnuse vahelist suhet. Ta eeldab, et mõlemad tunnused on ligikaudu normaaljaotusega ning seos on sirgjooneline. Üksikud erilised väärtused (outlier'id) võivad seda tulemust tugevalt kõrvale kallutada.
Spearmani korrelatsioon ei tööta arvude endi, vaid nende järjestuste põhjal. Igale päevale antakse koht pingereas sammude järgi ja eraldi koht pingereas kalorite järgi, ning mõõdetakse, kas need kaks pingerida on omavahel sarnased. Seepärast on Spearman tugevam mittelineaarsete seoste ja erindite suhtes: kui seos on "üldiselt kasvav, kuid mitte päris sirge", püüab Spearmani korrelatsioon selle paremini kinni.
Mida korrelatsioonikordaja ei ütle?
Korrelatsioon on tore mõõdik, aga see ei seleta
- kas seos on sirgjooneline või kaarjas
- kas andmetes on erinevad klastrid
- kas seos on sama tugev kogu andmestikus
Üks number ei asenda pilti. Vaatame nüüd, mida pildi pealt veel näha on.
Esmalt: vaatame mõlemat tunnust eraldi
Enne kahe tunnuse omavahelise seose uurimist tasub vaadata mõlemat eraldi. Sageli selgub juba siin midagi olulist.
Histogramm
Histogramm jagab väärtused "ämbritesse" ja näitab, kui palju väärtusi igas ämbris on. See on hea esmane ülevaade: näed, kas andmed koonduvad ühe keskväärtuse ümber, on kaldu paremale või vasakule, või on seal mitu eri klastrit.
Sammude histogrammil on selgelt kaks kühmu: üks madala sammude arvu juures (puhkuse- ja ujumispäevad) ja teine kõrgema juures (jooksupäevad). Kalorite histogramm on laiem ja ühtlasem.
KDE graafik näitab jaotuse kuju "silutult"
KDE (kernel density estimate, eesti keeles tuumtiheduse hinnang) on histogrammi "siludud" versioon. Selle asemel et andmeid kappidesse jagada, loob KDE pidevkõvera, mis näitab, kus andmepunktid tihedamalt paiknevad. Kõvera all olev pindala igas piirkonnas näitab tõenäosust, et juhuslikult valitud vaatlus sellesse piirkonda langeb.
KDE on histogrammist sageli informatiivsem, sest ta ei sõltu ämbrute suurusest. Sammude KDE-kõveral on selgelt näha kaks tihedusmaksimumi — see vihjab, et andmetes on kaks eraldi käitumismustrit.
Kui paneme graafikule ka antud päeval toimunud tegevused, muutub pilt oluliselt selgemaks.
Vaadates kalorikulu graafikut, näeme, et madalam kühmukene vastab puhkepäevadele, ning kõrgem kühm trennipäevadele, sõltumata sellest, kas tegemist oli jooksmise või ujumisega.
Sammude graafik näeb välja veidi teistsugune. Siin on ujumise ja jooksmise vahed juba suuremad, sest jooksmine samme juurde ei anna, olgugi et kulutab kaloreid.
Sellepärast ei olegi sammude ja kalorite vaheline seos päris sirgjooneline.
Hajuvusdiagramm: kaks tunnust korraga
Nüüd saab kaks tunnust kokku panna.
Hajuvusdiagrammi (scatter plot) x-teljel on sammud, y-teljel kalorid. Iga punkt on üks päev. Värviga oleme tähistanud tegevuse.
Näed kohe kolme erinevat piirkonda:
- Jooksupäevad (oranž): kõrge sammude arv, kõrge kalorikulutus. Seos on ligikaudu lineaarne: mida rohkem samme, seda rohkem kaloreid.
- Ujumispäevad (sinine): madal sammude arv, aga siiski kõrge kalorikulutus. Need punktid "rikuvad" lineaarse seose. Rohkem ujumist põletab küll palju kaloreid, kuid samme sellest juurde ei tule.
- Puhkepäevad (hall): siin kulub kaloreid suhteliselt vähe, ning ka samme pole kuigi palju. Ja kuigi mõnel päeval jõuame peaaegu kümne tuhande sammuni, ei anna selline rahulik, aeglane jalutuskäik kuigi suurt energiakulu.
Regressioonijoon teeb seose selgemini nähtavaks
Hajuvusdiagramm on väga hea viis, et saada arusaam andmete tegelikust jaotusest.
Kui andmepunkte on aga väga palju, siis muutub hajuvusdiagramm kiiresti suureks punktipudruks ning sellelt on juba raske midagi mõistlikku välja lugeda. Samuti ei ole hajuvusdiagrammil silmaga näha nõrgemaid seoseid.
Nende vajakajäämiste lahendamiseks saab hajuvusdiagrammi peale joonistada regressioonjoone.
Alustame lihtsamast: sirge joon
Lineaarne regressioonijoon (method = "lm", linear model) sobib, kui usud, et seos on sirgjooneline: iga lisasamm lisab alati sama palju kaloreid. Joon on lihtsalt tõlgendatav: selle kalle ütleb, kui palju suureneb y, kui x suureneb ühe ühiku võrra.
Meie andmetel näeb see korrektne välja: seos on üldiselt kasvav. Aga sirgjoon ei suuda hästi kirjeldada, mis juhtub madala sammude arvu piirkonnas: seal on palju ujumispäevi, kus kalorid on kõrged hoolimata madalast sammude arvust.
Mittelineaarne joon kirjeldab seost paremini
Et saada meie graafikut täpsemini kirjeldav joon, tuleks lubada sellel olla kõver. Võimalusi selle kõveruse lubamiseks on päris palju.
Alates sellest, et paneme lineaarse joone valemisse sisse ruutliikme, kuni selleni, et sobitame hästi palju erinevaid sirgeid jooni graafiku eri kohtadesse ja joonistame nendest kokku ühe kõveruse. Seda kõike teeb tänapäeval meie eest muidugi masin ise.
Üks elegantne viis mittelineaarset joont sobitada on üldistatud aditiivne mudel (Generalized Additive Model, GAM). GAM kirjeldab seost paindlike kõveratena — nn splainidena —, mis ühendatakse üheks sujuvaks jooneks. Sujuvuse aste leitakse andmetest automaatselt, ilma et peaksid ise parameetreid valima.
Meie näites tõuseb joon madala sammude arvu juures kõrgemale kui lineaarse joone puhul — see peegeldab ujumispäevi, kus kalorid on kõrged hoolimata madalast sammude arvust.
Ala joone ümber ehk usaldusintervall
Joone ümber on pooleldi läbipaistev ala, mida nimetatakse usaldusintervalliks (ka standard error, lühendina SE). See näitab, kui kindlalt me joone asukohta usaldame. Mida kitsam on see ala joone ümber, seda kindlamad saame olla, et joon on tõesti seal. Mida laiem see ala on, seda ebakindlamad me joone asukohas oleme.
Enamasti näed, et usaldusintervall on joone keskel suhteliselt kitsas ning joone mõlemas otsas pigem lai. Väga suure või väga väikese sammude arvu piirkonnas on meil lihtsalt vähem vaatlusi, millele toetuda ja hinnang on seal sestap ka ebatäpsem. Joone keskel on andmeid rohkem ja hinnang kindlam.
Ülesobitumine ehk overfitting
Esmapilgul tundub, et mida kõveramaks me joone teeme, seda parem, sest siis sobitub joon andmetega täpsemalt ja annab meile täpsema pildi. Päris elus on see siiski natukene keerulisem.
Kui lubad joonel olla väga kõver, siis hakkab ta ülesobituma (overfitting), ehk siis "järgima" üksikuid punkte selle asemel, et üldist trendi tabada.
Kui näiteks ilmaennustuse mudel õpib ära seose, et suvel on üldiselt soojem kui talvel, siis see on hea üldine seos.
Kui mudel õpib aga ära, et 3. veebruaril on temperatuur -10 kraadi, siis see on lihtsalt konkreetse aasta kohta käiv fakt, mis ei pruugi järgmisel aastal üldse kehtida ja toob seega kaasa ebatäpse ilmaennustuse järgmiseks aastaks.
Mida paindlikumaks joone teha, seda rohkem hakkab see "järgima" üksikuid punkte selle asemel, et üldist trendi tabada. Seda kutsutakse ülesobitumiseks (overfitting).
Liiga sirge joon lihtsustab liiga palju (underfitting). Liiga paindlik joon näeb seoseid seal, kus neid pole (overfitting). Hea valik jääb tihtilugu kusagile vahepeale.
Seega, kui keegi näitab sulle regressioonjoonega graafikut, siis mõtle korra järele, kas see joon sobitub nende andmetega. Kas see lihtsustab pilti liigselt või üritab see näidata seoseid seal, kus tegelikult on lihtsalt juhuslik müra?
Viimane lisandus: vaiba graafik teeb graafiku loetavamaks
Vaiba graafik (rug plot) lisab telgedele lühikesed kriipsud, mis näitavad iga andmepunkti asukohta vastaval teljel. See annab kohese ülevaate andmete tegelikust jaotusest: kus kriipsud on tihedalt koos, seal on andmeid palju; kus hõredalt, seal vähe.
Tänu sellele suudame nüüd ühel graafikul ära näidata mõlema tunnuse eraldiseisva jaotuse (rug plot), tunnuste ühisjaotuse (scatter plot) ning seda ühisjaotust kirjeldava regressioonjoone.
Kokkuvõtteks: millal ja mida kasutada
| Graafik | Kasuta siis, kui... |
|---|---|
| Histogramm | Tahad näha ühe tunnuse jaotust |
| KDE graafik | Tahad näha jaotuse tegelikku kuju |
| Hajuvusdiagramm | Tahad näha kahe tunnuse vahelist seost |
| Regressioonjoon | Tahad kahe tunnuse seose selgemini välja joonistada |
| Vaiba graafik | Tahad lisada hajuvusdiagrammile infot andmete tiheduse kohta |
Korrelatsioonikordaja on kasulik kiire esmamulje loomiseks, aga üksinda jätab ta pooled küsimused vastamata. Hajuvusdiagramm koos regressioonjoonega ütleb korraga, kas seos on olemas, mis kujuga see on, kus andmeid napib ja kus on erandlikud juhtumid.
Järgmine kord kui kolleeg üritab sulle midagi väita puhtalt korrelatsiooni põhjal, küsi näha ka korralikku diagrammi. See aitab sul teha paremini läbimõeldud otsuseid.