maanantai 27. toukokuuta 2013

Kuinka luoda Google-kysely askel askeleelta

Ohjeiden tavoitteena on luoda lomakepohjainen kysely, joka on mahdollista upottaa muun muassa Yle Uutisten -sivuille. Kysely toteutetaan Google Form -työkalun avulla. Ohjeet on tehty alunperin Yle Uutisten Internet-koulutukseen osallistuneille.

Google Form mahdollistaa monipuolisesti erilaisten kyselyiden toteuttamisen. Kysymykset voivat olla muodoltaan esimerkiksi monivalintoja tai tekstikenttiä. Kyselyn voi nykyään jakaa usealle sivulle ja kysymykset voivat olla toisilleen ehdollisia.

Tärkeä huomio on, että kyselylomake ja lista yksittäisistä vastauksista tallennetaan Google Drive -palvelussa erillisiin dokumentteihin. Kyselylomake on Google Form -dokumentti ja se pitää sisällään kysymykset sekä yhteenvedon vastauksista. Yksittäiset vastaukset tallennetaan erilliseen Google Spreadsheet -dokumenttiin. (Kuva 1)

Eri tyyppiset dokumentit tunnistaa niiden erilaisista ikoneista. Myös dokumenttien nimeämistä kannattaa hyödyntää. (Kuva 1)
Google Drive -dokumenttien jakaminen muiden käyttäjien kesken onnistuu aina oikeasta ylänurkasta ("Share"-painike). On hyvä muistaa ja tarkistaa, että sekä kyselylomake, että vastaustaulukko tulevat jaetuiksi kaikille joille haluat ne jakaa.

Ohjeet on tehty perustuen englanninkieliseen käyttöliittymään, mutta kaikki termit kääntyvät melko suoraviivaisesti suomeksi. Ohjeiden tarkoitus ei ole olla täydellisiä vaan niitä seuratessa on tarkoituksenmukaista välillä ymmärtää mitä on tekemässä. Suosittelen lukemaan ohjeet ensin kertaalleen läpi alusta loppuun.
  1. Avaa Google Drive ja kirjaudu palveluun.
  2. Valitse vasemmalta painike "Create" ja sen takaa avautuvastta valikosta "Form". (Kuva 2)

    Uuden Google Form:n luominen onnistuu osoitteessa http://drive.google.com. (Kuva 2)
  3. Sinua pyydetään antamaan kyselylle nimi. Tämä nimi näytetään otsikkona kyselyn alussa. Voit myös valita kyselylle ulkoasun/teeman, mutta oletuksena valittuna oleva "Default" on usein toimivin vaihtoehto. Valitse "OK".
  4. Syötä lomakkeen kuvaus eli "Form Description". Voit esimerkiksi kertoa miksi kysely on olemassa ja mihin vastauksia käytetään. Kuvaus näytetään kyselyn otsikon alla ja sen voi jättää myös tyhjäksi.
  5. Seuraavaksi määritellään mitä kysytään. Voit lisätä eri tyyppisiä kysymyksiä, muokata yksittäisten kysymysten kuvauksia, lisätä uusia kysymyksiä ja vaihtaa kysymysten järjestystä haluamallasi tavalla. "Add item" painikkeen avulla voit lisätä uusia kysymyksiä. (Kuva 3)

    Voit lisätä kysymyksiä, muokata ja poistaa olemassa olevia sekä raahaamalla muuttaa kysymysten järjestystä. (Kuva 3)
  6. Kun olet saanut syötettyä kaikki kysymykset muokkaa alla olevaa kohtaa "Confirmation Page". Kirjoita kohtaan "Confirmation message" lomakkeen täyttäjälle lomakkeen lähettämisen jälkeen näytettävä viesti. Voit esimerkiksi kiittää vastaamisesta. (Kuva 4)
  7. Useimmin kannattaa poistaa ruksi kohdasta "Show link to submit another response". Myös muut ruksit on usein hyvä olla pois päältä. On kuitenkin hyvä ymmärtää ja ehkä kokeilla mitä ne tarkoittavat. (Kuva 4)

    Kyselyn muokkausnäkymän näkymän lopussa määritellään mitä tapahtuu kun käyttäjä lähettää lomakkeen. (Kuva 4)
  8. Kun olet syöttänyt kaikki kysymykset voit määrittää painikkeen "Choose response destination" avulla mihin Google Spreadsheet -dokumenttiin yksittäiset vastaukset tallennetaan. Tämä kannattaa tehdä vasta kun olet määrittänyt kaikki kysymykset ja niiden järjestyksen. (Kuva 5)

    Itse kysely ja yksittäiset vastaukset tallennetaan erillisiin dokumentteihin. Tässä kerrotaan mihin dokumenttiin yksittäiset vastaukset halutaan tallentaa. (Kuva 5)
  9. Kun olet valmis voit tarkastella lopullista kyselyä valitsemalla "View live form". (Kuva 6)

    Kyselyä kannattaa esikatsella ja testata ennen kuin sen julkaisee. (Kuva 6)
    Jos haluat upottaa kyselyn toiselle sivulle (esimerkiksi Yle Uutisten sivuille) valitse valikosta "File" kohta "Embed". Kopioi avautuvasta ikkunasta löytyvä koodinpätkä leikepöydällesi. Koodin tulee alkaa "<iframe". Tämä on upotuskoodi, jonka avulla lomake voidaan tuoda osaksi periaatteessa mitä tahansa sisällönhallintajärjestelmää. Voit joko sijoittaa tämän upotuskoodin itse haluamaasi kohtaan käytössäsi olevassa järjestelmässä tai jakaa sen sähköpostilla sivuston ylläpidolle, joka hoitaa upotuksen. (Kuva 7)

    Kun kysely halutaan upottaa osaksi jotain olemassa olevaa verkkopalvelua halutaan käyttää "Embed"-toimintoa. (Kuva 7)
    Lomake on myös mahdollista jakaa vastaajille esimerkiksi sähköpostilla. Tämä onnistuu valitsemalla oikeasta ylänurkasta "Send form" ja kopioimalla aukeavasta ikkunasta löytyvä linkki. Tämä linkki voidaan liittää vastaajille lähetettävän sähköpostin oheen saatesanoilla varustettuna. Esimerkiksi jos haluat lähettää kyselyn kaikille kansanedustajille on tämä toimiva tapa. (Kuva 8)

    Jos kysely halutaan esimerkiksi lähettää sähköpostilla rajatulle joukolle voidaan käyttää "Send form" -toimintoa. (Kuva 8)
  10. Valinnainen: Muuta upotuskoodissa width-attribuutin arvo 100 %:iin ja lisää osoitteeseen parametri &hl=fi. Näiden avulla lomake käyttää koko käytettävissä olevan leveyden ja toimii suomeksi. Mikäli joudut itse hoitamaan upottamisen täytyy myös height-attribuutin arvoa muokata sen mukaan miten pitkä kyselysi on.
Lomaketta kannattaa kokeilla itse ennen kuin sen ottaa käyttöön. Vastaa lomakkeeseen kuin olisit täyttämässä sitä ja mieti toimiiko se jouhevasti ja toisaalta teknisesti oikein. Voit vielä tässä vaiheessa tehdä muutoksia kuten vaihtaa kysymysten järjestystä ja lisätä tai poistaa kysymyksiä. Voit testauttaa lomaketta myös kavereillasi. Testaamisen jälkeen voit joko poistaa koevastaukset tai huomioida ne tehdessäsi lopullista analyysiä.

Google tallentaa kaikki muutoksesi automaattisesti. Kuten huomaat lomaketta tehdessäsi lukee ylhäällä "All changes saved in Drive". Aina kun teet muutoksia lukee samaisessa kohdassa hetken "saving...". (Kuva 9)

Voit seurata kyselyysi tulevia vastauksia reaaliajassa Google Spreadsheet -dokumentista johon tallentuvat yksittäiset vastaukset. Dokumentti päivittyy automaattisesti aina kun joku vastaa kyselyyn. Yhteenvedon vastauksista näet Google Form -dokumentista kun valitset kohdasta "Responses" valinnan "Summary of responses". (Kuva 9)

Kun haluat lopettaa kyselyn avaa Google Form -dokumentti ja poista valikon "Responses" kohdassa "Accepting responses" oleva ruksi. Kun ruksia ei ole lomakkeeseen ei ole mahdollista vastata. Jos olet upottanut lomakkeen kannattaa lomakeen upottaminen käydä poistamassa ja jättää sivulle mahdollisesti myöhemmin eksyville viesti, että kysely on päättynyt. (Kuva 9)

Responses-valikosta näet vastanneiden summittaisen määrän. Lisäksi voit sulkea kyselyn ja katsoa yhteenvedon vastauksista. (Kuva 9)
Google Form on tehokas työkalu tehtäessä erilaisia joukkoistuksia. Sitä käytettäessä tulee kuitenkin huomioida, että kyselyiden manipulointi on mahdollista eikä tuloksia tule pitää tieteellisinä totuuksia. Uutistoiminnassa Google Form -kyselyt voitaneen rinnastaa torikyselyihin eli niiden tarkoitus ei ole esimerkiksi väittää, että niillä saadut tulokset olisivat koko kansan mielipide. Tulokset kuvaavat uutissivulla tietyllä hetkellä vieraileiden ja kyselyyn vastanneiden mielipidettä.

Esimerkkejä onnistuneista kyselyistä:


Nämä ohjeet on tehty mukaillen Esa Mäkisen kirjoittamia ohjeita.

perjantai 24. toukokuuta 2013

Karttatoteutuksista ja koordinaatistoista

Olemme PlusDeskin ensimmäisten neljän kuukauden aikana toteuttaneet muiden muassa suuret määrät erilaisia karttavisualisointeja. (Kuva 1)

Olemme tehneet niin yksittäisiin pisteisiin perustuvia Google Maps -pohjaisia karttoja kuten:
kuin myös erilaisia aluisiin perustuvia Google Maps -karttoja kuten:

Kartat ovat oiva visualisointikeino kun halutaan kuvata datan spatiaalista merkitystä kuten tässä esimerkissä, jossa ilmiön voidaan keskittynyt rannikolle. (Kuva 1)
Toisinaan olemme myös piirtäneet kartalle yhtäaikaisesti yksittäisiä pisteitä ja alueita kuten Bostonin tapahtumat -jutun yhteydessä, jossa maratonin reitti piirrettiin yhtenäisenä viivana kun taas räjähdykset ja muut tapahtumapaikat yksittäisinä pisteinä.

Google Maps:n lisäksi olemme hyödyntäneet kartoissa OpenStreetMap-palvelua kuten esimerkiksi jutussa, jossa kerroimme mistä löytyy keskimäärin paras sää hiihtolomakaudella.

Mainittujen palveluiden lisäksi olemme toteuttaneet karttoja räätälöidyillä SVG-pohjaisilla ratkaisuilla kuten näissä esimerkeissä:
Räätälöidyissä toteutuksissa olemme hyödyntäneet Raphaël-nimistä JavaScript-kirjastoa, joka sopii hyvin tarpeisiimme, koska se toimii myös vanhemmilla Internet Explorer -selaimilla. Tavoitteemme kun on, että Yle Uutiset ja sen sisällöt toimivat mahdollisimman laajasti kaikilla laitteilla.

Interaktiivisten ja klikattavien karttojen lisäksi olemme julkaisset staattisia kuviin perustuvia karttoja kuten tässä euroviisupisteiden jakautumista maiden välillä kuvaavassa jutussa.

Se mitä työkalua ja ratkaisua kulloinkin hyödynnämme ohjaa ensisijaisesti se minkälaista dataa olemme visualisoimassa. Joskus toiset työkalut soveltuvat paremmin toisille datoille. Esimerkiksi käsiteltäessä suuria datamassoja on Google Maps usein toimiva työkalu.

Välillä eteen tulee tilanteita, jolloin meillä on olemassa tarvittava karttapohja (kuten sairaanhoitopiirien rajat) valmiina vain SVG-toteutusta varten, joka rajaa meitä käyttämästä Google Maps:n kaltaisia palveluita, koska ne perustuvat SVG:n käyttämien pikseleiden sijaan koordinaatistotietoon.



Julkaisimme viime maaliskuussa jutun koskien lakkautettuja kouluja Suomessa vuosina 2006–2012. Jutun taustalla on Tilastokeskukselta tilaamamme kouluaineisto, johon olimme pyytäneet mukaan koulujen paikkatiedot. Ajatuksenamme oli visualisoida lakkautettavat koulut kartalle käyttäen OpenStreetMap-palvelua. (Kuva 2)

Toteutuksesta oli mahdollista tarkastella lakkautettuja kouluja Suomen kartalta valitulla aikajaksolla ja oppilasmäärällä. (Kuva 2)
Saimme datan Excel-tiedostona, johon oli listattu kaikki lakkautetut koulut vuosittain yhdessä koordinaattitietojen kanssa. Ongelma oli, että koordinaattitiedot olivat kartastokoordinaattijärjestelmässä (KKJ), joka on erityisesti Suomeen kehitetty koordinaattijärjestelmä, jota edellä mainitut Google Maps ja OpenStreetmap-palvelut eivät tue.

KKJ jakaa Suomen neljään projektiokaistaan ja projektiokaistoilla on oma koordinaatistonsa. Projektiokaistojen tehtävä on käsittääkseni poistaa maan kaarevuudesta aiheutuvaa vääristymää. (Kuva 3)

KKJ:ssa Suomi on jaettu neljään projektiokaistaan. (Kuva 3)
KKJ-järjestelmän eri projektiokaistojen käyttäminen on siinä määrin monimutkaista etenkin rajakohdissa, että siitä on kehitetty yksinkertaistettu versio nimeltään yhtenäiskoordinaatistojärjestelmä (YKJ).

YKJ tunnetaan myös nimellä KKJ3, koska se vastaa kartastokoordinaattijärjestelmän projektiokaistaa kolme jatkettuna itään ja länteen niin, että se kattaa koko Suomen. YKJ-koordinaateille on ominaista, että kolmoskaistalle sijoittuviin koordinaatteihin ei lisätä alkuun projektiokaistan merkitsevää numeroa kolme.

YKJ-koordinaatit ovat siis muotoa:
  • p=6700000, i=3500000
tai lyhyemmin muotoa:
  • 6700000, 3500000.
Itäinen koordinaatti lasketaan metreinä keskimeridiaanille ja pohjoinen koordinaatti kertoo matkan päiväntasaajalta pohjoiseen.

Kuten sanottua ongelma KKJ- ja YKJ-koordinaatistoissa on, etteivät kartastopalvelut tue niitä. Esimerkiksi Google Maps tukee GPS:lle kehitettyä WGS84-koordinaatistojärjestelmää, ja tämän vuoksi meidän täytyi muuntaa koordinaattien järjestelmä.

Googlen avulla löysin Luonnontieteellisen keskusmuseon ylläpitämän palvelun nimeltä Luomus, joka mahdollistaa koordinaattijärjestelmien välisen muunnoksen. Palveluun on mahdollista syöttää muunnettavat YKJ:n mukaiset itä- ja pohjoiskoordinaatit, jonka jälkeen palvelu palauttaa muunnoksen tuloksen.

Esimerkiksi kysely http://www.luomus.fi/projects/coordinateservice/?orig_system=ykj&north=6982696&east=3541961 palauttaa vastauksen:

<CoordinateData>
<result>
<new_system>etrs89</new_system>
<north>62.94538003831</north>
<east>27.823170453332</east>
</result>
<orig_system>ykj</orig_system>
<version>2.0</version>
<disclaimer>
This is coordinate translation system provided by Finnish Museum of Natural History (FMNH). Copyright FMNH and National Land Survey of Finland. FMNH makes best effort to keep the data and conversions as accurate as possible.
</disclaimer>
</CoordinateData>


Vastauksen kohdista <north>62.94538003831</north> ja <east>27.823170453332</east> ovat luettavissa annettuja YKJ-koordinaatteja vastaavat WGS84-koordinaatiston mukaiset koordinaatit.

Muunnettavia koordinaattitietoja minulla oli 26 185 Excel-rivin edestä, joten rakensin Python-ohjelmointikielellä yksinkertaisen koodinpätkän, joka automatisoi tämän muunnostyön. Toteutus on saatavilla kirjoituksen lopusta. (Kuva 4)

Tekemäni koodi muunsi YKJ-koordinaatistossa olleet tasokoordinaatit WGS84-koordinaatissa oleviksi maantieellisiksi koordinaateiksi. (Kuva 4)
Mikä on kuitenkin myös luettavissa vastauksesta on kohta <new_system>etrs89</new_system>. Eli kohdejärjestelmä ei tässä siis olekaan WGS84 vaan ETRS89. Tästä seuraavaksi.



Käsiteltäessä karttatietoa koordinaatistojärjestelmät eivät ole ainoa huomioitava asia vaan koordinaatit voidaan eri järjestelmien lisäksi esittää myös eri formaateissa yhden järjestelmän sisällä. Yleisiä esitysformaatteja ovat ainakin tasokoordinaatit ja maantieteelliset koordinaatit. YKJ- ja KKJ-koordinaatit ilmoitetaan kokemuksieni mukaan yleisimmin tasokoordinaatteina kun taas Google Maps tukee maantieteellisiä koordinaatteja.

Ero tasokoordinaattien ja maantieteellisten koordinaattien välillä on esitystapa. Tasokoordinaatit kertovat matkan pohjoiseen ja itään kun maantieteelliset koordinaatit kertovat leveys- ja pituuskoordinaatit. Tasokoordinaatit ovat siis kokonaislukuja ja maantieteelliset koordinaatit asteita.

Koordinaatistoformaatteihin ja niiden muunnoksiin pääsin tutustumaan kun teimme äskettäin jutun painorajoitettavista silloista Suomessa. Saimme Liikennevirastolta tiedot 391:stä tulevaisuudessa uuden painorajoituksen saavasta sillasta ja mukana olivat siltojen paikkatiedot. Paikkatiedot olivat saamassamme Excel-tiedostossa ETRS89-koordinaatiston suomalaisen EUREF-FIN-nimisen projektion mukaisia. ETRS89-koordinaatit vastaavat käytännössä WGS84-koordinaatteja (ero on alle metrin).

Koordinaattitiedot olivat kuitenkin tasokoordinaatistoformaatissa, jotka eivät tietääkseni ole tuettuja Google Maps -työkalussa. Tässä tapauksessa minun ei kuitenkaan tarvinnut muuntaa koordinaattijärjestelmää toiseen vaan kuten edellä vaan vaihtaa vain koordinaattien esitystapa. Luomus.fi-palvelusta ei harmikseni löytynyt työkaluja formaattimuunnoksiin, mutta löysin ratkaisun Karttapaikka.fi-palvelusta Juho Salmisen avustuksella.

Karttapaikka.fi-palvelusta löytyvän Karttapaikka-nimisen työkalun avulla on mahdollista tehdä monipuolisesti erilaisia koordinaatteihin liittyviä muunnoksia. Palveluun voi syöttää koordinaatteja niin taso- kuin maantieteellisessä formaatissa, jonka jälkeen palvelu palauttaa tiedot kattavasti. Tarjolla ovat kaikki Suomessa yleisesti käytetyt koordinaatistojärjestelmät ja -formaatit.

Tein myös tässä tapauksessa samanlaisen yksinkertaisen koodinpätkän, jolla automatisoin formaattimuunnoksen tekemisen kaikille hallussani olleille koordinaateille. Tämäkin toteutus on saatavilla kirjoituksen lopusta. (Kuva 5)

Tekemäni koodi muunsi kaikki painorajoitettujen siltojen tasokoordinaatit maantieteellisiksi koordinaateiksi. (Kuva 5)
Itseasiassa ensimmäisessäkin esimerkissä lähdeaineistomme oli aluksi tasokoordinaatistoformaatissa. Eli Luomus.fi-palvelu teki itseasiassa muunnoksen niin koordinaattijärjestelmän kuin myös koordinaattiformaatin osalta.



Yhteenvetona voitaneen todeta, että paikkatieto ja sen esittäminen on melko moninaista, mutta kokemuksieni mukaan Suomessa paikkatietodata julkaistaan useimmin tasokoordinaatteina joko YKJ- tai KKJ-järjestelmässä, jotka siis ovat hankalia käytössä olevien karttapalveluiden kannalta.

2000-luvulla Suomessa on pyritty siirtymään ETRS89-järjestelmään, mutta esimerkiksi Tilastokeskuksen ruututietokanta on siirtynyt siihen vasta vuonna 2011. Suunta on kuitenkin kohti ETRS89:ää, joka vastaa siis melkein WGS84-järjestelmää. Eli ETRS89-koordinaatteja on mahdollista käyttää esimerkiksi Google Maps:ssä kunhan ne vain ovat maantieteellisessä formaatissa.



Tämän kirjoituksen myötä julkistan Yle Plus -GitHub-repositorion. Repositorion tarkoitus on toimia julkaisukanavana Yle Uutisten ja ainakin PlusDeskin tekemille avoimille lähdekoodille. (Kuva 6)

Tulemme käyttämään Yle Plus-repositoriota toteuttamiemme koodien julkaisemiseen avoimena lähdekoodina. (Kuva 6)
Ensimmäisinä työkaluina julkaisemme tässä kirjoituksessa mainittujen koordinaattimuunnosten lähdekoodit, jotka siis mahdollistavat YKJ-tasokoordinaattien muuntamisen WGS84-järjestelmän maantieteellisiksi koordinaateiksi sekä ETRS89-tasokoordinaattien muuntamisen maantieteellisiksi koordinaateiksi.

Lähdekoodit julkaistaan CC-BY-SA-lisenssillä, joka mahdollistaa koodien hyödyntämisen niin yksityisessä kuin kaupallisessakin käytössä. Ainoat rajoitteet ovat, että käytettäessä alkuperäinen lähde (Yle Uutiset) on mainittava ja että kaikki mahdolliset jatkototeutukset on jaettava samalla lisenssillä.

perjantai 17. toukokuuta 2013

Palkataan datajournalisti!

Kirjoitin taannoin aiheesta "Osaaja haussa, tiedätkö ketään?". Sain tuolloin paljon viestejä, koskien mahdollisia avoimia työpaikkoja. Nyt sellainen olisi tarjolla.

Svenska Yle hakee kehitystiimiinsä web-teknologioista kiinnostunutta datajournalistia tai datajournalistia, joka hallitsee web-teknologiat. Miten asia sitten halutaankin ilmaista.

Työ vaatii tietoteknistäosaamista yhdistettynä journalistiseen ajattelutapaan. Keskiössä on yhteistyö eri osaajien kanssa. Haettavan datajournalistin tehtävä eiole käsitykseni työstää dataan perustuvia yksin vaan toimia yhdessä toimittajien kanssa. Valittava henkilö tulisi luultavasti tekemään yhteistyötä myös suomenkielisen toimituksen kanssa.

Olin itse vuoden Svenska Yle:llä ennen siirtymistäni nykyiseen työhöni PlusDesk:ssä ja voin lämpimästi suositella kyseistä työyhteisöä. Organisaatio on ulospäin suuntautunut ja erittäin ketterä oppimaan uutta. Työilmapiiri on onnistumisiin kannustava.

Ruotsinkieli ei ole vaatimus työssä, mutta mikäli kielitaito ei aivan tikissä ole niin sitä pääsee kyllä kehittämään. Esimerkiksi itse tulin kielitaidon suhteen täysin pystymetsästä.

Työpaikkailmoitus ja hakemuslomake löytyy täältä. Hakuaikaa on 28.5.2013 asti.

Lisätietoja saa mm. Kristoffer Söderlundilta ja Johanna Törn-Mangsilta sekä Svenska Yle:n kehitysblogista. Vastaan mielelläni myös itse mahdollisiin kysymyksiin koskien Yle:ä työpaikkana mikäli sellaisia ilmenee.

Tervetuloa Suomen Yleisradioon!

tiistai 14. toukokuuta 2013

Vierailuluentoja: Haaga-Helia, Bryssel, Hervanta

Olin huhti- ja toukokuun aikana puhumassa kolmessa eri paikassa datajournalismista. Tässä kootusti näiden luentojen materiaalit.

Ensinnäkin 14.4. vedin parin tunnin mittaisen luennon Haaga-Helia:ssa journalistiopiskelijoille otsikolla "Haluatko Datajournalistiksi". Kurssin nimenä oli Dataa, Ei dadaa ja sitä veti Heidi Kähkönen. Kantava ajatus esityksessä oli, että myös journalisti voi halutessaan ottaa tekniikkaa haltuun ja oppia tekemään esimerkiksi visuaalisia esityksiä olemassa olevilla työkaluilla dataan perustuen. (Kuva 1)

Klikkaamalla kuvaa pääset selaamaan esityksen materiaaleja. (Kuva 1)

Lauantaina 4.5. olin kollegani Juha Rissasen kanssa Brysselissä DataHarvest 2013 -konferenssissa. Esittelimme siellä tunnin mittaisella luennolla toimituksemme PlusDesk:n toimintaa sekä kävimme lyhyestä läpi toteuttamamme säästölaskuri- ja kaivoskartta-toteutukset. (Kuva 2)

Klikkaamalla kuvaa pääset selaamaan esityksen materiaaleja. (Kuva 2)

Brysselistä kotiuduttuani palasin vihdoin "kotiin". Tiistaina 7.5:ttä luennoin ensimmäistä kertoo omalla yliopistollani TTY:llä mihin Jukka Huhtamäki minut oli kutsunut. Yleisönä oli minulle ensimmäistä kertaa enemmän teknisiä henkilöitä ja yritin siten myös kohdentaa sisältöä enemmän tähän suuntaan. Luennosta ja sen sisällöstä sekä datajournalismista yleisesti julkaistaan myös juttu yliopiston Rajapinta-lehden toimesta. (Kuva 3)

Klikkaamalla kuvaa pääset selaamaan esityksen materiaaleja. (Kuva 3)

Seuraava koulutustilaisuus, jota olen vetämässä on Ylen sisäinen ja järjestetään tämän kuun aikana, mutta tulen materiaalit myös tästä tilaisuudesta jakamaan tässä blogissa.

lauantai 11. toukokuuta 2013

Verkostovisualisointi gone wrong

Ensinnäkin täytyy kiittää ja onnitella Helsingin Sanomia ja Tuomas Peltomäkeä todella hienosta jutusta koskien eduskunnassa kuultavina olleita tahoja, joka perustui itse hankittuun dataan. Tämä on juuri sen kaltaista datajournalismia, jonka parissa toivoisin itsekin viettäväni enemmän aikaa. Tähän kuitenkin loppuvat tällä erää kiitokset sillä haluan keskittyä muutamaan epäkohtaan, jotka havaitsin jutun verkkoversion yhteydessä julkaistusta verkostovisualisoinnista.

Aluksi kuitenkin muutama huomio verkostoanalyysistä yleisesti.

Verkostoanalyysi on visualisointikeino, joka mahdollistaa ja jolla voidaan kuvata asioiden (solmu, node) välisiä yhteyksiä (edge, yhteys). Verkostoanalyysilla voidaan kuvata esimerkiksi Facebook:ssa olevien käyttäjien välisiä kaverisuhteita. Verkostoanalyysin avulla on siis mahdollista visualisoida millä tavalla Facebook-kaverini ovat kavereita keskenään. Kuvassa 1 nähtävästä verkostovisualisoinnista, jossa solmut ovat Facebook-kavereitani, voidaan lukea mm. että:
  • Sukulaiseni ovat Facebook:ssa keskenään kavereita, mutta eivät juuri ole kavereita muiden kavereitteni kanssa.
  • Muutamat yliopistokaverini ovat kavereita lapsuuden kavereitteni kanssa, mutta pääosin näiden ryhmien jäsenet ovat kavereita vain keskenään.
  • Muutamilla minulle keskeisimmät ihmiset ovat kavereita kaikkien verkostossa nähtävien pääryhmien kanssa.

Parhaimmillaan verkostovisualisointi on erittäin tehokastyökalu asioiden välisten yhteyksien ymmärtämisessä. (Kuva 1)
Verkostovisualisointeja on karkeasti mahdollista manipuloida kolmella eri tavalla, jotka ovat:
  • Ladonta-algoritmi
  • Solmun koko
  • Yhteyden voimakkuus
Mahdollisia ladontatapoja ovat mm. paino-ohjattuladonta kuten Force Atlas ja spatiaalinen ladonta, joka voi perustua esimerkiksi geokoordinaatteihin. Solmun koko taas voidaan määritellä esimerkiksi solmuun tulevien yhteyksien määrällä tai se voidaan esimerkiksi määrittää asukasluvun perusteella jos yksittäisen solmu kuvaa valtiota. Solmujen välinen yhteys voi olla joko nolla, yksi tai jokin lukuarvo. Eli toisin sanoen joko yhteyttä ei ole, yhteys on olemassa tai sitten yhteydellä on jokin arvo, joka kuvaa yhteyden voimakkuutta suhteessa muihin yhteyksiin. Yhteys voidaan määritellä myös suunnattuna tai suuntaamattomana.

Esimerkiksi edellisessä Facebook-esimerkissä yhteys on suuntaamaton, koska yksisuuntaiset kaveruussuhteet eivät ole Facebook:ssa mahdollisia (ainakaan teknisessä mielessä). Twitter-seuraajia visualisoitaessa yhteydet taas ovat suunnattuja, koska Twitter:ssä käyttäjän ei tarvitse seurata toista, jotta toinen voi seurata häntä.

Mikä sitten meni vikaan Helsingin Sanomien julkaisemassa verkostovisualisoinnissa. Se, että se ei noudattanut verkostovisualisointien lainalaisuuksia vaan siinä oli tehty visualisointiteknisiä ratkaisuja graafisin perustein. Minulle verkostoanalyysia ja verkostovisualointeja tehneenä tämä tarkoittaa samaa kuin, että pylväsdiagrammista leikattaisiin pala pois, jotta visualisoinnista saataisiin graafisesti miellyttävämmän näköinen tai paremmin luettava. Kuvassa 2 nähdään erittäin banaali esimerkki pylväsdiagrammista, joka on visualisointiteknisesti pielessä, koska arvon 900 omaavan pylvään tulisi olla korkeampi kuin arvon 700 omaava pylväs.
Pylväsdiagrammissa pylvään korkeuden mielletään kuvaavaan asian suuruutta eikä kyseisen kaltainen pylväiden esitystapa ole siten luonnollinen. (Kuva 2)
Facebook:n Finnish Open Data Ecosystem ryhmässä keskusteltiin kyseessä olevasta Helsingin Sanomien jutusta ja sen yhteydessä käytetystä datasta sekä tehdystä visualisoinnista. Toivomuksena keskustelussa oli, että kerätty data pistettäisiin avoimesti jakoon. Peltomäki ei ollut kuitenkaan valmis suoraan valmis jakamaan dataa vaikka toteutus olikin julkaistu CC-lisenssillä.

Käydystä keskustelusta innostuneena päätin kaivaa datan suoraan toteutuksesta, jotta halukkaat voisivat sitä käyttää. Kaivoin siis verkostovisualisoinnissa käytetyn datan suoraan toteutuksen lähdekoodin uumenista. Toteutuksessa käytetty data oli .json-formaatissa, joka oli toteutuksessa käytetyn Sigma.js:n käyttämä formaatti ja jotta datalle oli mahdollista tehdä mitään järkevää jatkojalostusta oli se siis muunnettava johonkin toiseen formaattiin.

Itselleni luontevin tavoitetila oli .gexf-formaatti, koska tällöin data oli mahdollista avata Gephi-verkostovisualisointityökalussa. "Reverse engineerasin" datan siis verkostoformaattiin, jossa itseasiassa luulen datan alunperinkin olleen ennen sen muuntamista .json-formaattiin, koska itse toteutus näytti hyvin paljon Gephi:n Sigma.js-lisäosalla toteutetulta. Sinällään molemmat tiedostomuodot (.json ja .gexf) ovat muodoltaan hyvin rakenteisia ja kuvaavat erikseen solmut ja erikseen niiden väliset yhteydet, joten muuntaminen onnistui käytännössä muutaman etsi-korvaa komennon avulla.

Avattuani muuntamani datan (.gexf) Gephi:ssä minua alkoi kuitenkin ihmetyttämään miten en saanut aikaan samankaltaista lopputulosta kuin se, joka oli nähtävissä Helsingin Sanomien toteutuksessa. Tutkittuani numeroita tarkemmin huomasin, ettei toteutuksessa olleet visuaaliset komponentit kuten solmujen koko määräytynytkään niin kuin olin ajatellut. Oletin, että solmun koko olisi määräytynyt kuulemiskertojen mukaan ja juteltuani kollegoitteni kanssa oli tämä ollut myös heidän tulkintansa visualisoinnista.

Jutussa mainittiin, että Elinkeinoelämän keskusliittoa oli kuultu useimmin, yhteensä 1 761 kertaa. Alkuperäisen visualisoinnin perusteella seuraavaksi eniten oli kuultu Suomen Yrittäjiä, yhteensä 927 kertaa. Kuitenkin visualisoinnissa nämä kuvattiin noin samankokoisina solmuina vaikka kuulemiskertoja EK:lla on siis yli kaksi kertaa vähemmän. Samalla huomasin, että visualisoinnissa valionkunnat oli normalisoitu samankokoisiksi solmuiksi riippumatta niiden kuulemiskertojen määrästä. Enimmillään valiokuntia oli kuultu yhtä monta kertaa kuin EK:ta eli n. 1 700 kertaa. Toteutuksessa oli siis haluttu korostaa ulkopuolisten tahojen kuulemisia.

Keskusteltuani Peltomäen kanssa sain selville myös, että verkostosta oli rajattu pois ne kuultavat joita oli kuultu vähemmän kuin 50 kertaa (tämä kerottiin myös visualisoinnin lisätietoja kohdassa). En kuitenkaan saanut selville mitä muuta verkostosta on rajattu pois, koska jos tämä olisi ollut ainoa rajaus olisivat käsitykseni mukaan jäljelle jääneiden kuultavien kaikki kuulemiskerrat olleet edelleen mukana verkostossa.

Näin ei kuitenkaan ollut vaan jutussa mainittujen kuulemiskertojen määrä ei täsmännyt kuultavista lähteneiden yhteyksien määrään. Esimerkiksi visualisoinnin mukaan Finnet-liitto ry:tä on kuultu 59 kertaa, mutta tämä määrä ei vastaa verkostossa nähtäviin kuulemiskertoihin eli solmusta lähteneiden yhteyksien määrään.

Verkostosta ei ollut siis luettavissa yksittäisen kuultavan kaikkia kuulemiskertoja, joka kertoo minulle, että verkostosta oli täytynyt tiputtaa pois myös lakialoitteita, joissa kuulemisia on tapahtunut. Yritin selvittää Facebook-ryhmän keskustelussa taustoja näihin epäselvyyksiin, mutta en jankkaamisenkaan jälkeen saanut tyhjentäviä vastauksia.

Verkostovisualisoinnit ovat lähtökohtaisesti monille vaikealukuisia ja hankalasti hahmoteltavia, koska ne eivät ole meille tuttuja, mutta niiden helpompaa tulkintaa ei tulisi kuitenkaan lähteä ohjaamaan puhtaasti graafisin perustein, koska tällöin niiden tulkinta tulee mahdottomaksi tavallisen kansan lisäksi myös ammattilaisille jollaiseksi nyt tässä itseni omahyväisesti lasken.

Miten sitten esimerkiksi tässä tapauksessa oli kannattanut toimia, jotta verkostosta oltaisiin saatu helpompilukuinen ja samalla pidetty kiinni siitä, että ei määriteltäisi verkoston muuttujia joillakin muilla kuin matemaattisilla perusteilla. Itse olisin lähestynyt ongelmaa siten, että olisin romahduttanut verkoston "yksinoodiseksi".

Nyt toteutuksessa oli mukana kahdenlaisia solmuja. Ensinnäkin verkostossa olivat mukana eduskunnassa kuultavina olleet tahot ja toiseksi lakialoitteet joissa kuulemiset olivat tapahtuneet. Yhteyksiä solmujen välillä oli vain eri tyyppisten solmujen välillä eli kuultavina olleista lähti yhteyksiä lakialoitteisiin. Kuultavina olleet solmut tai lakialoitteet eivät olleet suoraan yhteydessä toisiinsa. Toisin sanoen lakialoitteet solmivat yhteen eri kuultavina olleet tahot.

Verkosto olisi siten ollut mahdollista romahduttaa valitusta kaksinoodidesta esitystavasta yksinoodiseksi niin, että verkostoon olisi piirretty vain kuultavina olleet tahot ja yhteydet näiden välille olisi piirretty sen perusteella miten tahot olivat olleet kuultavina samoissa lakialoitteissa. Näin tieto siitä missä lakialoitteissa kukin taho oli ollut kuultavana olisi koodattu yhteyksiin eikä erillisiin solmuihin.

Tämä esitystapa olisi myös paljastanut verkostoteknisesti selkeämmin mitkä tahot ovat sellaisia, että heitä molempia kuullaan kun eri lakialoitteita valmistellaan ja toisaalta mitkä tahot ovat sellaisia, että he ovat lakialoitteissa ainoita kuultavana olevia. Tässä esitystavassa ainoat kuultavina olevat tahot olisivat piirtyneet verkoston reunoille kun runsaasti kuultavina toisten tahojen kanssa olisivat piirtyneet verkoston ytimeen. Näin siis etenkin kun verkosto olisi ladottu painovoimaohjatusti.

Vaikka siis verkostovisualisoinnit ovat viehättävännäköisiä ja usein niitä tulkitaan enemmänkin suurella kunnioituksella kuin asiantuntijuudella tulisi niitä toteuttaessa olla yhtä tarkka tiedon oikeellisuudesta kuin muidenkin visualisointitekniikoiden kanssa.

Toivottavasti tämä herättää keskustelua ja lopputuloksena on edelleen entistä parempaa (data)journalismia, joka varmasti kaikkien etu. Toivottavasti saamme myös alkuperäisen datan jossain vaiheessa aktiivisesti jakoon avoimena datana kuten eduskunta on ilmeisesti luvannut, jotta me kansalaiset pääsemme siitä nauttimaan.

Muokkaus 13.5.2013 klo 18:58

Lisätty linkki .gexf-muotoiseen dataan, joka on siis tuotettu HS:n toteutuksen .json-tiedostosta.