Aineiston visualisointimenetelmiä Petri Koistinen Matematiikan ja tilastotieteen laitos Helsingin yliopisto http://www.rni.helsinki.fi/ pek/rekmen05/ R-esimerkkejä tiedostossa http://www.rni.helsinki.fi/ pek/rekmen05/rvis.txt 5. 4. 2005
Yleistä tilastoaineiston visualisoinnista Tilastoaineistojen visualisoinnissa tahdotaan löytää tai havainnollistaa numeerisessa aineistossa ilmeneviä abstrakteja yhteyksiä. Tilastoaineiston visualisointi on luonteeltaan aivan erilaista kuin konkreettisten kolmiulotteisten esineiden ja ilmiöiden visualisointi. Visualisoinnin lähtökohtana voi olla alkuperäinen aineisto, tai siitä muokkaamalla saatu numeerinen esitys. Esimerkkejä aineiston muokkaamisesta: muuttujiin sovelletaan muunnoksia esitetään muuttujien korrelaatiomatriisi kuvana tarkastellaan residuaaleja mallin sovituksen jälkeen. Moniulotteinen skaalaus: alkuperäisten havaintojen sijasta visualisoidaan kaksi- tai kolmiulotteinen pisteistö, jossa samanlaiset havainnot kuvautuvat lähekkäin ja erilaiset kauemmas toisistaan. Eri menetelmissä määritellään eri tavoilla, milloin alkuperäiset havainnot ovat samanlaisia ja milloin ne ovat erilaisia.
Tämän esitelmän tavoitteet Tehdään katsaus erilaisiin tilastoaineiston visualisointimenetelmiin ja katsellaan niistä esimerkkejä. Keskitytään menetelmiin, joista on hyötyä kartoittavassa (explorative) dataanalyysissä. yleisönä on tutkija itse ajatuksena on hyödyntää ihmisen näköjärjestelmän kykyä löytää nopeasti säännönmukaisuuksia kuvista tarkasteltavia kuvioita voi olla suuri määrä, ja ne voivat olla mitä tahansa tutkijalle tuttua tyyppiä suurta osaa kuvioista katsellaan vain hetkinen, joten yhden kuvan laatimiseen ei kannata haaskata paljoa aikaa. Suuremmalle yleisölle tarkoitetun tilastografiikan tuottaminen on luonteeltaan erilaista: kuvioiden pitää olla yksinkertaisia ja yleisölle tuttua tyyppiä. Yhden kuvan hiomiseen voidaan käyttää tunteja tai päiviä.
Työkalut Demonstroin tilastokuvioita R-ohjelmointiympäristössä. R:n etuja ovat mm. seuraavat. R on ilmainen, sen lähdekoodi on saatavilla ja R on saatavilla erilaisiin käyttöjärjestelmiin. R on suosittu akateemisissa piireissä, minkä takia siihen saadaan nopeasti implementaatiot uusille tilastomenetelmille. R:ssä on (toistaiseksi) vähän työkaluja dynaamisen kolmiulotteisen grafiikan käyttöön. Tämän takia demonstroin tiettyjä dynaamisen visualisoinnin käsitteitä ja menetelmiä ilmaisella ggobi-ohjelmalla.
Eräitä R:n erikoispiirteitä R on komentopohjainen ohjelma. Etu: voit ohjelmoida omia funktiota. Haitta: hankalampi oppia kuin valikkopohjainen ohjelma, joka tarjoaa vain rajatun määrän eri vaihtoehtoja. Muuttujan nimessä saa esiintyä piste (esim. oma.ihana.muuttujani); skandinaavisia merkkejä sekä alaviivaa kannattaa välttää. Vektoreita muodostetaan funktiolla c() (esim. v = c(1, 4, 2, 5)) ja niitä indeksoidaan hakasuluilla. Esim. v[1] indeksinä skalaari v[1:3] indeksinä numeerinen vektori v[v < 3] indeksinä totuusarvoinen vektori. Vektorit voivat olla esim. numeerisia, totuusarvoisia tai faktoreita (kategorisia muuttujia).
Useimmat komennoista ovat funktiokutsuja, ja niistä saa avustusta. Esim. funktioista barplot() saa avustusta komennolla help(komento) tai?komento. Funktioiden argumenteilla voi olla oletusarvoja, ja nimetyt argumentit voi antaa mielivaltaisessa järjestyksessä. Esim. barplot(x, horiz = T). Tilastollisia malleja ja joitakin tilastokuvioita spesifioidaan erityisellä kaavakielellä. Esim. lauseke y ~ x tarkoittaa grafiikkakomennossa sitä, että muuttuja y piirretään muuttujan x funktiona. Lauseke y ~ x f voi grafiikkakomennossa tarkoittaa sitä, että muuttuja y piirretään muuttujan x funktiona, kun ehdollistetaan faktorin f arvoilla. (Käytännössä tällöin piirretään monta kuviota.)
R:n datakehikot Havaintoaineistot esitetään tavallisesti tietotyyppinä, jonka nimi on datakehikko eli data frame. R:ssä on valmiina lukuisia aineistoja, jotka saa käyttöön komennolla data(aineiston.nimi). Esimerkki: > data(iris) > str(iris) data.frame : 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1... $ Species : Factor w/ 3 levels "setosa","versic..",..: 1 1 1 1 1 1 1 1 1 1 > iris Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa... Tässä aineistossa on 150 havaintoa viidestä muuttujasta, joista yksi (Species) on faktori ja muut numeerisia. Muuttujan Sepal.Length 150 arvoa saadaan näkyviin antamalla komento iris$sepal.length.
Grafiikka R:ssä Melkein kaikki asiat voidaan R:ssä tehdä monella tavalla, niin myös grafiikan tuottaminen. Perusgrafiikkakirjastosta löytyy esim. funktio plot, jolla voidaan tehdä kaksiulotteisia piste- ja viivakuvioita. Tälle funktiolle voidaan antaa paljon erilaisia argumentteja, joista osa on dokumentoitu funktion plot ja osa funktion par avustustekstissä. Funktiolla par hallinnoidaan perusgrafiikan parametrejä. Kirjastosta MASS löytyy mm. funktio truehist, joka tuottaa histogrammeja monipuolisemmin kuin perusgrafiikkakirjaston funktio hist. Kirjasto lattice tarjoaa edellisistä erillisen ja erittäin monipuolisen lähestymistavan tilastokuvioiden tekoon. Erillisyys tarkoittaa mm. sitä, että par-funktio ei vaikuta lattice-kirjaston graafisiin parametreihin, vaan niitä voi asettaa eräällä toisella funktiolla. Kirjasto tarjoaa komentoja, jotka ovat samantapaisia kuin S-Plus-ohjelman Trellis-funktiot.
Yksiulotteinen kategorinen aineisto Kategorisen muuttujan saamien arvojen frekvenssit voidaan taulukoida, ja frekvenssejä voidaan visualisoida pylväskuviona tai piirakkakuviona. Piirakkakuviosta on vaikea hahmottaa frekvenssien eroja.
Yksi numeerinen muuttuja: pistekuvio Pieni yksiulotteinen aineisto voidaan havainnollistaa piirtämällä siitä pistekuvio. Jos luvut ovat pyöristettyjä, pisteet piirtyvät helposti päällekkäin (overplotting). Asiaa voidaan auttaa täristämällä (jitter) pisteitä eli lisäämällä koordinaatteihin vähän kohinaa. Jos aineistossa on numeerisen muuttujan lisäksi kategorinen muuttuja (faktori), niin numeerisen muuttujan jakaumaa eri kategorisen muuttujan määräämissä luokissa voidaan tutkia ehdollistamalla pistekuviot kategorisen muuttujan arvoilla.
Yksi numeerinen muuttuja: laatikkokuvio Laatikkokuviossa (boxplot, box-and-whiskers plot) aineiston jakauma esitetään laatikkona, joka ulottuu alakvartiilista yläkvartiiliin, ja jonka keskelle vielä merkitään mediaanin kohta. Lisäksi piirretään viikset kohtiin, joiden ulkopuolella olevia havaintoja voidaan (tietyn kriteerin mielessä) pitää vieraina havaintoina (outlier), ja vieraat havainnot voidaan vielä esittää erikseen pisteinä.
Yksi numeerinen muuttuja: histogrammi Histogrammeja on montaa eri lajia. Tavanomaisessa eli frekvenssihistogrammissa piirretään pylväät osoittamaan eri luokkaväleihin sattuneiden havaintojen frekvenssit. Tiheyshistogrammissa luokan frekvenssi jaetaan otoskoolla sekä luokkavälin leveydellä, jolloin saadaan tiheysfunktioestimaatti. Tulos riippuu kummassakin tapauksessa voimakkaasti sekä luokkavälin leveydestä että histogrammin aloituspisteestä.
Yksi numeerinen muuttuja: tiheysfunktioestimaatit Tiheyshistogrammi on havaintojen tiheysfunktion eräs estimaatti. On olemassa parempia tapoja estimoida tätä tiheysfunktiota. ASH (averaged shifted histogram) -menetelmässä eli histogrammien siirtokeskiarvo -menetelmässä lasketaan keskiarvo lukuisista samalla luokkavälin leveydellä mutta eri aloituspisteillä lasketuista tiheyshistogrammeista. ASH on käytössä esim. ggobi-ohjelmassa. Tiheysfunktion ydinestimaatissa estimaatti lasketaan kaavalla ˆf(x) = 1 n n i=1 1 h K ( ) x xi jossa K on jokin sopiva tiheysfunktio eli ydin, x 1,..., x n ovat havaitut arvot ja h on nimeltään silotusparametri (smoothing parameter) tai kaistanleveys (bandwidth). Tulos riippuu oleellisesti h:n arvosta, ja h:n valintaan on kirjallisuudessa esitetty lukuisia eri menetelmiä. Funktiossa density käytetään oletusarvoisesti erästä yksinkertaista peukalosääntöä, joka usein toimii ihan mukavasti. h
Yksi numeerinen muuttuja: kvantiilikuvio Kvantiilikuviolla (QQ plot) voidaan verrata aineiston empiiristä jakaumaa johonkin teoreettiseen jakaumaan, useimmiten standardinormaalijakaumaan N(0, 1), jolloin puhutaan normaalijakaumakuviosta (normal probability plot). Jakauman kvantiilifunktio on sen kertymäfunktion käänteisfunktio. Fakta: jos X on satunnaismuuttuja, ja Y = ax + b, jossa a, b vakioita ja a > 0, niin niiden kvantiilifunktioiden q X ja q Y välillä on yhteys q Y (u) = aq X (u) + b, u. Tämän takia vertaamalla annettua kvantiilifunktiota esim. standardinormaalijakauman N(0, 1) kvantiilifunktioon saadaan saman tien verrattua annettua jakaumaa kaikkien normaalijakaumien kanssa. Kvantiilikuviossa toinen verrattavista kvantiilifunktioista on aineiston perusteella laskettu empiirinen kvantiilifunktio. Eri tilasto-ohjelmissa saatetaan empiiriselle kvantiilifunktiolle käyttää vähän erilaisia määritelmiä.
Kaksi tai kolme numeerista muuttujaa: hajontakuvio Hajontakuviossa (parvikuvio, pistekuvio,...) (scatter plot) muuttujien saamat arvot eri otosyksiköissä piirretään kaksi- tai kolmiulotteisen avaruuden pisteinä. Jos aineistossa on numeeristen muuttujien lisäksi kategorinen muuttuja, niin voidaan erotella kategorisen muuttujan eri arvot käyttämällä eri pistetyyppejä. Kolmiulotteisen hajontakuvion hahmottamista auttaa ratkaisevasti, jos katselusuunnan pääsee valitsemaan interaktiivisesti.
Kaksi tai useampia kategorisia muuttujia: mosaiikkikuvio Kun muuttujien saamat arvot ristiintaulukoidaan, tuloksena saatava taulukko voidaan visualisoida mosaiikkikuviona, josta voidaan yrittää arvioida esim. muuttujein mahdollista riippumattomuutta.
Useita numeerisia muuttujia: monta näkymää Aineistosta tehdään monta kuvaa tai näkymää (multiple views), jotka ovat yhteydessä (linked) keskenään. Staattisen grafiikan tapauksessa näkymät tyypillisesti yhdistetään sillä tavalla, että niissä käytetään yhteistä asteikkoa (ainakin jollakin akselilla). Dynaamisen grafiikan tapauksessa yhdistävänä tekijänä voi olla sileä liike animaatiossa. Kuvioita voidaan yhdistää myös sillä tavalla, että aineistoon avataan monta näkymää, jotka käyttävät eri visualisointimenetelmiä, ja kun jossakin näkymässä valitaan (brushing, suom. harjaaminen) osa aineistosta, tämä osa korostetaan grafiikan keinoin yhtenäisesti kaikissa näkymissä.
Useita numeerisia muuttujia: ehdollistetut hajontakuviot Edellä on jo mainittu ehdollistaminen kategorisen muuttujan arvoilla (tai useampien kategoristen muuttujien arvoilla). Voidaan myös edollistaa numeerisen muuttujan arvolla siten, että sen vaihteluväli jaetaan osaväleihin, jotka voivat haluttaessa mennä hieman päällekkäin. Kirjastossa lattice tällainen jako toteutetaan tietorakenteessa, jonka nimi on shingle (suom. mm. kattotiili, paanu). Jokaista osaväliä kohti piirretään hajontakuvio siitä osasta aineistoa, jossa ehdollistavan muuttujan arvo sattuu kyseiseen osaväliin.
Useita numeerisia muuttujia: hajontakuviomatriisi Hajontakuviomatriisissa (scatter plot matrix, splom, vanhempi nimitys draugtman s plot, draftman s plot) esitetään kaikki eri muuttujaparien hajontakuviot matriisin muotoon järjestettynä. Ruuduissa (i, j) ja (j, i) olevat hajontakuviot ovat toistensa peilikuvia. Eri ruudut on yhdistetty toisiinsa siten, että yhdellä vaakarivillä olevilla ruuduilla on yhteinen pystyakselin asteikko ja yhdellä pystyrivillä olevilla ruuduilla on yhteinen vaaka-akselin asteikko. Kategorisia muuttujia ei kannata ottaa mukaan hajontakuviomatriisiin, vaan niiden arvot kannattaa (mahdollisuuksien mukaan) esittää eri pistetyypeillä tai eri väreillä. Toinen mahdollisuus on piirtää useita hajontakuviomatriiseja, jotka on ehdollistettu kategoristen muuttujien eri arvokombinaatioille.
Useita numeerisia muuttujia: rinnakkaiskoordinaatit Jos aineistossa on k muuttujaa, niin rinnakkaiskoordinaattikuviossa (parallel coordinate plot) piirretään rinnakkain k koordinaattiakselia, ja kukin havainto esitetään viivana, joka yhdistää havainnon koordinaatit toisiinsa.
Liikaa muuttujia: kuvaukset alempiin dimensioihin Jos muuttujia on satoja, mikään edellisistä tekniikoista ei enää ole käyttökelpoinen. Tällöin täytyy aineisto kuvata visualisointia varten jollakin tavalla alempaan ulottuvuuteen, jossa visualisointi onnistuu. Esimerkkejä: Traditionaalisia ratkaisuja: visualisoidaan vaan osaa muuttujista, visualisoidaan muutamaa ensimmäistä pääkomponenttia. Grand tour: visualisoidaan aineistoa dynaamisesti siten, että se projisoidaan kaksiulotteiselle tasolle, jonka suunta vaihtuu sileästi animaation kuluessa. Projektion haku (projection pursuit): projisoidaan aineisto aliavaruuteen, jonka suunta etsitään siten, että projektio näyttää mahdollisimman mielenkiintoiselta (jonkin kriteerin mielessä). Moniulotteinen skaalaus: alkuperäisten havaintojen sijasta visualisoidaan kaksitai kolmiulotteinen pisteistö, jossa samanlaiset havainnot kuvautuvat lähekkäin ja erilaiset kauemmas toisistaan. BayMiner-ohjelmassa käytetään apuna erästä uutta ja sofistikoitunutta toteutusta moniulotteisesta skaalauksesta.