<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
  <title>rOpenGov R packages for open government data analytics</title>
  <link>http://ropengov.org/fi/</link>
  <description>Recent content on rOpenGov R packages for open government data analytics</description>
  <generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Mon, 09 Nov 2020 19:55:24 +0200</lastBuildDate>

<atom:link href="http://ropengov.org/fi/index.xml" rel="self" type="application/rss+xml" />


<item>
  <title>#minätutkin-twiittien aiheet</title>
  <link>http://ropengov.org/fi/2021/10/mina-tutkin/</link>
  <pubDate>Wed, 06 Oct 2021 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2021/10/mina-tutkin/</guid>
  <description>
&lt;style type=&#34;text/css&#34;&gt;
pre &gt; code.sourceCode { white-space: pre; position: relative; }
pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre &gt; code.sourceCode { white-space: pre-wrap; }
pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code &gt; span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code &gt; span &gt; a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {  background-color: #f8f8f8; }
@media screen {
pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ef2929; } /* Alert */
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #c4a000; } /* Attribute */
code span.bn { color: #0000cf; } /* BaseN */
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4e9a06; } /* Char */
code span.cn { color: #000000; } /* Constant */
code span.co { color: #8f5902; font-style: italic; } /* Comment */
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
code span.dt { color: #204a87; } /* DataType */
code span.dv { color: #0000cf; } /* DecVal */
code span.er { color: #a40000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #0000cf; } /* Float */
code span.fu { color: #000000; } /* Function */
code span.im { } /* Import */
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
code span.ot { color: #8f5902; } /* Other */
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
code span.sc { color: #000000; } /* SpecialChar */
code span.ss { color: #4e9a06; } /* SpecialString */
code span.st { color: #4e9a06; } /* String */
code span.va { color: #000000; } /* Variable */
code span.vs { color: #4e9a06; } /* VerbatimString */
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
&lt;/style&gt;


&lt;p&gt;Kuukausi sitten, syyskuun alussa 2021, Twitterin &lt;em&gt;#minätutkin&lt;/em&gt; oli suosittu. Itä-Suomen yliopiston akateeminen rehtori Tapio Määttä &lt;a href=&#34;https://twitter.com/tapiomaatta/status/1434449463268057092&#34;&gt;sysäsi ajatuksen liikkeelle&lt;/a&gt;, ja pian mukaan liitettiin sopiva aihetunniste. Tutkijat innostuivat tiivistämään työnsä twiitin merkkimäärään, ja suuri yleisö innostui yhtä lailla lukemastaan. Vaikka Suomesta löytyy ajantasaisia sivustoja kotimaisesta tutkimuksesta, uusimpana &lt;a href=&#34;https://www.tiedejatutkimus.fi/fi/&#34;&gt;tutkimustietovaranto&lt;/a&gt;, niiden varsinainen fokus ei ole tehdä tiedettä helposti lähestyttäväksi. Toki ne saattavat onnistua siinäkin, mutta vain välillisesti.&lt;/p&gt;
&lt;p&gt;Mistä sitten twiitattiin? Mitä olivat ne tieteenalat, joiden tutkijat ehtivät tai kiinnostuivat twiittaamaan? Kaikki eivät tietenkään edes kuulleet asiasta.&lt;/p&gt;
&lt;p&gt;Päätin tehdä pienimuotoisen testin siitä, miten Kansalliskirjaston &lt;a href=&#34;https://www.kiwi.fi/display/Finto/Finto+AI%3An+rajapintapalvelu&#34;&gt;Finto AI -rajapintapalvelu&lt;/a&gt; palvelisi twiittien automaattisessa asiasanoituksessa. Heti alkuun pitää painottaa siitä, että Finto AI/Annif on toistaiseksi pelkkä suosittelija; ihmisen on tarkoitus tehdä lopulliset asiasanavalinnat. Näin toimitaan mm. Jyväskylän yliopiston JYX-julkaisuarkistossa, jossa palvelua käytetään opinnäytetöiden kuvailun apuna:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Opinnäytetyönsä järjestelmään jättävä opiskelija saa nähtäväkseen Annifin ehdottamat asiasanat, joita hän voi halutessaan muokata. Lopulliset asiasanat hyväksyy kirjastovirkailija tarkistuksen jälkeen. Myös Kirjavälitys Oy käyttää rajapintapalvelua tuottaessaan ennakkotietoja tulevista kirjajulkaisuista. Vastaavanlaista käyttöä pilotoidaan tällä hetkellä mm. Vaasan yliopiston Osuva-julkaisuarkistossa.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tässä harjoituksessa annan kuitenkin mennä täysautomaatilla, kädet poissa ratilta.&lt;/p&gt;
&lt;p&gt;Alla olevat koodit ovat &lt;a href=&#34;https://github.com/tts/minatutkintweets&#34;&gt;GitHub-repossa&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&#34;twiittien-haku-ja-siivous&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Twiittien haku ja siivous&lt;/h3&gt;
&lt;p&gt;Kun haluaa kerätä twiittejä ilman erityisjärjestelyjä, on toimittava ripeästi. Vaikka #minätutkin-häntää on näkynyt aina näihin päiviin asti, hain tässä käsitellyt twiitit jo sunnuntaina 12.9. alkuiltapäivästä enkä sen jälkeen enää uudistanut hakua. Vilkkaimmat päivät olivat tiistai-torstai 7-9.9.&lt;/p&gt;
&lt;p&gt;Harto Pöngän &lt;a href=&#34;https://twitter.com/hponka/status/1436240568045158402&#34;&gt;10.9 keräämien tilastojen mukaan&lt;/a&gt; 5000 twiittiä vaikutti sopivalta ylärajalta. Ei uudelleentwiittauksia.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb1&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb1-1&#34;&gt;&lt;a href=&#34;#cb1-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(rtweet)&lt;/span&gt;
&lt;span id=&#34;cb1-2&#34;&gt;&lt;a href=&#34;#cb1-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;q &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;#minätutkin&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-3&#34;&gt;&lt;a href=&#34;#cb1-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;tweets &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;search_tweets&lt;/span&gt;(q, &lt;span class=&#34;at&#34;&gt;n =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;5000&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;include_rts =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;FALSE&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Siivous on enimmäkseen käsityötä. Aivan aluksi poistin selkeimpiä trollauksia, lukijoiden kiittäviä postauksia ja muita tässä yhteydessä epärelevantteja. Myöhemmin kävin vielä twiitit kertaalleen läpi ja filtteröin pois ne, jotka eivät olleet tutkijoilta itseltään vaan suurelta yleisöltä, tutkimusorganisaatiolta tai rahoittajalta. En edes pyrkinyt täydelliseen siivoukseen, ja lisäksi twiiteissä oli rajatapauksia.&lt;/p&gt;
&lt;p&gt;Osa tutkijoista postitti useita #minätutkin-twiittejä. Joiltakin oli unohtunut ensimmäisestä aihetunniste - jolloin se ei siis tarttunut haaviini - jotkut halusivat täydentää, eräät taas jatkoivat aiheen parissa muulla tavoin, innostaen kolleegoita tulemaan mukaan yms. Yhdistin ne kaikki.&lt;/p&gt;
&lt;p&gt;Tämän osuuden koodi on tiedostossa &lt;a href=&#34;https://github.com/tts/minatutkintweets/blob/main/gettweets.R&#34;&gt;gettweets.R&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;asiasanoitus&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Asiasanoitus&lt;/h3&gt;
&lt;p&gt;Finto AI -rajapintapalvelulle lähetetään asiasanoitettava teksti HTTP POST -kutsussa. Palautettavien asiasanojen lukumäärää voi säätää (limit), samoin niiden osumistarkkuuden kynnysarvoa (threshold). URL:ssa on oltava tieto &lt;em&gt;projektista&lt;/em&gt; eli siitä, minkä kielisestä tekstistä on kyse. Palvelun ohjeistus on interaktiivinen &lt;a href=&#34;https://ai.finto.fi/v1/ui/&#34;&gt;Swagger-hiekkalaatikko&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En tiedä, kuinka luotettava Twitterin palauttama &lt;code&gt;lang&lt;/code&gt;-arvo on, mutta joka tapauksessa käytin sitä. Satunnaisotannalla se näytti olevan oikeassa. Kieli ei kuitenkaan ole yksiselitteinen asia, sillä osa twiittaajista käyttää kahta kieltä samanaikaisesti.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb2&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb2-1&#34;&gt;&lt;a href=&#34;#cb2-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;make_body &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;cf&#34;&gt;function&lt;/span&gt;(tw){&lt;/span&gt;
&lt;span id=&#34;cb2-2&#34;&gt;&lt;a href=&#34;#cb2-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;list&lt;/span&gt;(&lt;/span&gt;
&lt;span id=&#34;cb2-3&#34;&gt;&lt;a href=&#34;#cb2-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;at&#34;&gt;text =&lt;/span&gt; tw,&lt;/span&gt;
&lt;span id=&#34;cb2-4&#34;&gt;&lt;a href=&#34;#cb2-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;at&#34;&gt;limit =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-5&#34;&gt;&lt;a href=&#34;#cb2-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  ) &lt;span class=&#34;ot&#34;&gt;-&amp;gt;&lt;/span&gt; body&lt;/span&gt;
&lt;span id=&#34;cb2-6&#34;&gt;&lt;a href=&#34;#cb2-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;return&lt;/span&gt;(body)&lt;/span&gt;
&lt;span id=&#34;cb2-7&#34;&gt;&lt;a href=&#34;#cb2-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;}&lt;/span&gt;
&lt;span id=&#34;cb2-8&#34;&gt;&lt;a href=&#34;#cb2-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-9&#34;&gt;&lt;a href=&#34;#cb2-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;resp &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; httr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;RETRY&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;verb =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;,&lt;/span&gt;
&lt;span id=&#34;cb2-10&#34;&gt;&lt;a href=&#34;#cb2-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                    &lt;span class=&#34;at&#34;&gt;url =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;paste0&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;https://ai.finto.fi/v1/projects/&amp;quot;&lt;/span&gt;, project, &lt;span class=&#34;st&#34;&gt;&amp;quot;/suggest&amp;quot;&lt;/span&gt;),&lt;/span&gt;
&lt;span id=&#34;cb2-11&#34;&gt;&lt;a href=&#34;#cb2-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                    &lt;span class=&#34;at&#34;&gt;body =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;make_body&lt;/span&gt;(tweet),&lt;/span&gt;
&lt;span id=&#34;cb2-12&#34;&gt;&lt;a href=&#34;#cb2-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                    &lt;span class=&#34;fu&#34;&gt;user_agent&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;https://github.com/tts/minatutkintweets&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Asiasanoitus tarkoittaa toistuvaa rajapinnan kutsua. Finto AI:n käyttöohjeissa toivotaan, ettei rajapintaa kuormitettaisi samanaikaisilla kutsuilla, mikä on ymmärrettävää. Rajapinta on toistaiseksi täysin avoin, mitään rekisteröintiä ei ole. Otin yhteyttä Finton asiakaspalveluosoitteeseen, kun aloin epäillä koodini aiheuttavan ongelmia. Yritin näet lisätä kutsujen väliin &lt;code&gt;Sys.sleep()&lt;/code&gt; -kutsun, mutta en onnistunut löytämään sille toimivaa koloa; kutsut palauttivat tyhjää. Finton vastaus oli rauhoittava: he eivät olleet huomanneet palvelussa mitään epänormaalista poikkeavaa liikennettä.&lt;/p&gt;
&lt;p&gt;Kutsuihin ja tulosten parsimiseen lainasin ison osan vastaavasta koodista &lt;a href=&#34;https://github.com/ropensci/roadoi&#34;&gt;roadoi’lta&lt;/a&gt;, joka on yksi &lt;a href=&#34;https://ropensci.org/&#34;&gt;rOpenSci-yhteisön&lt;/a&gt; piirissä ylläpidettävistä lukuisista kirjastoista. Sain olla mukana &lt;code&gt;roadoi&lt;/code&gt;’n &lt;a href=&#34;https://github.com/ropensci/software-review/issues/115&#34;&gt;hyväksyntäprosessissa&lt;/a&gt;. Siinä keskityin toiminnallisuuteen ja opasteisiin, nyt hyödynsin ensimmäistä kerran kirjaston koodia. Kysyin Najko Jahnilta, &lt;a href=&#34;https://github.com/ropensci/roadoi/issues/33&#34;&gt;mihin hän asettaisi paussin&lt;/a&gt;. Najko ehdotti, että vaihtaisin &lt;code&gt;httr&lt;/code&gt;:n tilalle kirjaston &lt;a href=&#34;https://httr2.r-lib.org/&#34;&gt;httr2&lt;/a&gt;. Tutustumisen paikka. Samoin se, miten vaihtaa &lt;code&gt;plyr::llply&lt;/code&gt; modernimpaan &lt;code&gt;purrr::map*&lt;/code&gt;-funktioperheeseen, jotta toisteisuus omassa koodissani vähenisi.&lt;/p&gt;
&lt;p&gt;Mitä Finto AI ehdotti? Sen näkee twiittikohtaisesti tästä tekemästäni &lt;a href=&#34;https://ttso.shinyapps.io/minatutkintweets/&#34;&gt;apurista&lt;/a&gt;. Valitse ensin päivä ja tunti, ja lopuksi yksi tuon tunnin aikana postitetuista twiiteistä. Kokeile myös vaihtaa palautettavien asiasanojen lukumäärää - ja klikkaa Hae!-nappia. Tulos palautuu muutamassa sekunnissa. Tässä omassa harjoitelmassani käytin kolmea asiasanaa, eikä kynnysarvoa ollut. Finto AI tarjoaa minkä tahansa omavalintaisen tekstin asiasanoitukselle &lt;a href=&#34;https://ai.finto.fi/&#34;&gt;tämän sivun&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Asiasanoituksen koodi on tiedostossa &lt;a href=&#34;https://github.com/tts/minatutkintweets/blob/main/finto_ai_keywording.R&#34;&gt;finto_ai_keywording.R&lt;/a&gt; ja interaktiivisen &lt;a href=&#34;https://github.com/rstudio/shiny&#34;&gt;Shiny&lt;/a&gt;-sovelluksen tiedostossa &lt;a href=&#34;https://github.com/tts/minatutkintweets/blob/main/app.R&#34;&gt;app.R&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ryhmittely&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Ryhmittely&lt;/h3&gt;
&lt;p&gt;Idea tähän koko harjoitukseen tuli Helsingin yliopiston Ekosysteemit ja ympäristö -tutkimusohjelman professori Sakari Kuikalta. Hän &lt;a href=&#34;https://twitter.com/Sakari_Kuikka/status/1435905714455814148&#34;&gt;ehdotti&lt;/a&gt; puolileikillään (näin ymmärsin), että twiittien perusteella katsottaisiin “mitkä tieteen alat tulivat esiin, paljonko ne saivat kannatusta ja kuinka suuri niiden rahoitusosuus Suomessa on?”&lt;/p&gt;
&lt;p&gt;Miten erottaa twiittien vapaasta kielenkäytöstä tieteenala? Vaikeasti. Ilman luonnollisen kielen käsittelyn menetelmiä erotuskyky on enintään “sinne päin”. Seuraavalla #minätutkin-kierroksella tutkijoiden tulee käyttää twiiteissään Tilastokeskuksen tieteenalaluokitusta!&lt;/p&gt;
&lt;p&gt;Vakavasti puhuen oma tavoitteeni oli saada aikaan visualisointi siitä, mistä aiheista suunnilleen twiitattiin ja mitkä niiden suhteet olivat päivittäin. Pelkkien asiasanojen käyttö ei tuntunut järkevältä. Niitä tulee liikaa. Olisin voinut pysyä tiukasti yhden asiasanan politiikassa per twiitti, jolloin kirjo olisi ollut pienempi, mutta siinä olisi luultavasti menetetty iso osa twiittien asiasisällöstä. Sitä paitsi ensimmäinen asiasana voi olla täydellinen huti.&lt;/p&gt;
&lt;p&gt;Finto-palvelu yllättää monipuolisuudellaan. En ihan heti ymmärtänyt, mitä kaikkea onkaan tarjolla. Tartuin ensimmäiseen löydökseen ja hain asiasanoille yhtä tasoa yleisemmän termin (broader term). Niitä parsiessa kävin vielä kerran läpi vaihtoehtoja ja kas, &lt;a href=&#34;https://api.finto.fi/&#34;&gt;Finto API:n&lt;/a&gt; sanastokohtaisista metodeista löytyi &lt;a href=&#34;https://api.finto.fi/doc/#!/Vocabulary45specific32methods/get_vocid_data&#34;&gt;get_vocid_data&lt;/a&gt;, joka palauttaa mm. asiasanan &lt;a href=&#34;https://finto.fi/yso/fi/groups&#34;&gt;käsiteryhmän&lt;/a&gt;, yhden tai useamman. Ryhmiäkin on paljon, mutta oleellisesti vähemmän kuin erilaisia asiasanoja.&lt;/p&gt;
&lt;p&gt;Tämän osuuden koodi on tiedostossa &lt;a href=&#34;https://github.com/tts/minatutkintweets/blob/main/finto_ontology.R&#34;&gt;finto_ontology.R&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;visualisointi&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Visualisointi&lt;/h3&gt;
&lt;p&gt;Olen seurannut R-ekosysteemin &lt;a href=&#34;https://github.com/rfordatascience/tidytuesday&#34;&gt;#tidytuesday&lt;/a&gt;-tapahtumaa. Viikolla 37 julkaistu datasetti käsitteli USA:n &lt;a href=&#34;https://github.com/rfordatascience/tidytuesday/blob/master/data/2021/2021-09-14/readme.md&#34;&gt;Billboard Top 100&lt;/a&gt; -listaa. Sen visualisoinneista huomio kiinnittyi Georgios Karamanisin näyttävään &lt;a href=&#34;https://github.com/gkaramanis/tidytuesday/tree/master/2021/2021-week37&#34;&gt;toteutukseen&lt;/a&gt;, jossa vaaka-akselilla on vuosi ja pystyakselilla jaettu pylväsgraafi musiikkityylien suhteellisista osuuksista kunakin vuonna. Otin hänen &lt;code&gt;ggplot2&lt;/code&gt;-koodistaan mallia.&lt;/p&gt;
&lt;p&gt;Karamanisilla musiikkityylit ovat nimen mukaisessa aakkosjärjestyksessä, suuruuserot käyvät ilmi kirjasimen koosta. #minätutkin-esitykseen halusin sen sijaan käsiteryhmät koon mukaisessa järjestyksessä, mielellään niin että samalla ryhmällä on aina sama väri. Ollaan faktoreiden (factor) järjestelyn alueella. Lopputuloksessa on parantamisen varaa, sillä löytämäni &lt;a href=&#34;https://stackoverflow.com/a/53598064&#34;&gt;keino tehdä tämä&lt;/a&gt; rikkoo ryhmävärityksen, kun ryhmiä on enemmän kuin 35. Näin ollen rajasin niiden lukumäärää niin, että jätin pois harvemmin esiintyneet.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    
        &lt;img src=&#34;http://ropengov.org/images/minatutkintweets.png&#34; width=&#34;800&#34;
alt=&#34;Pylväsdiagrammi, jossa jokainen pylväs kuvastaa kunkin aiheen päivittäistä osuutta 100 %:sta (englanniksi 100 % stacked columns). Tarkastelujakson ensimmäisenä päivänä (6.9.2021) psykologia, klimatologia, väestötiede ja historia ovat edustettuina suunnilleen tasaosuuksin, jonka jälkeen aiheiden määrä kasvaa seuraavina päivinä merkittävästi. Viimeisenä päivänä (12.9.2021) on havaittu ainoastaan historia-aiheisia twiittejä.&#34;  /&gt;
    
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;#minätutkin-twiittien aiheet 6-12.9.2021&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Visualisoinnin koodi on tiedostossa &lt;a href=&#34;https://github.com/tts/minatutkintweets/blob/main/viz.R&#34;&gt;viz.R&lt;/a&gt; ja visualisoinnin kohteena ollut data tiedostossa &lt;a href=&#34;https://github.com/tts/minatutkintweets/blob/main/day_group_n.csv&#34;&gt;day_group_n.csv&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;lopuksi&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Lopuksi&lt;/h3&gt;
&lt;p&gt;Finto AI ei suinkaan asiasanoita virheettä eikä sen ole nykymuodossa tarkoituskaan, se &lt;strong&gt;ehdottaa&lt;/strong&gt;. Päätelmien tekemisten kanssa on siis oltava varovainen. Joitakin havaintoja voi silti tehdä.&lt;/p&gt;
&lt;p&gt;Suhteelliset erot ovat pieniä yleisimpien käsiteryhmien välillä. Kiinnostavasti &lt;em&gt;klimatologia&lt;/em&gt; on ensimmäisen päivän neljän suuren pioneeriryhmän joukossa, mutta jää sen jälkeen sivuun. &lt;em&gt;Historia&lt;/em&gt; taas on tasaisesti edustettuna kaikkina päivinä. &lt;a href=&#34;https://finto.fi/ykl/fi/page/31.5&#34;&gt;Väestötiede&lt;/a&gt; sisältää asiasanoja, jotka liittyvät perhepolitiikkaan, aluesuunnitteluun, maahanmuuttoon ja siirtolaisuuteen.&lt;/p&gt;
&lt;p&gt;Finto AI on lupaava ehdotuspalvelu, jolle toivoo menestystä jatkossakin, ja pitkää ikää. Tarkkuus varmasti lisääntyy ajan myötä.&lt;/p&gt;
&lt;/div&gt;
</description> 
  </item>
  
<item>
  <title>Ajankohtaista avoimen hallinnollisen datan avaamisessa</title>
  <link>http://ropengov.org/fi/2021/08/ajankohtaista-avoin-data/</link>
  <pubDate>Fri, 06 Aug 2021 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2021/08/ajankohtaista-avoin-data/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/2021/08/ajankohtaista-avoin-data/index.fi_files/kePrint/kePrint.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;http://ropengov.org/fi/2021/08/ajankohtaista-avoin-data/index.fi_files/lightable/lightable.css&#34; rel=&#34;stylesheet&#34; /&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#julkisen-hallinnon-api-linjaukset&#34; id=&#34;toc-julkisen-hallinnon-api-linjaukset&#34;&gt;&lt;span class=&#34;toc-section-number&#34;&gt;1&lt;/span&gt; Julkisen hallinnon API-linjaukset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#avoimen-datan-direktiivin-täytäntöönpano-kansallisessa-lainsäädännössä&#34; id=&#34;toc-avoimen-datan-direktiivin-täytäntöönpano-kansallisessa-lainsäädännössä&#34;&gt;&lt;span class=&#34;toc-section-number&#34;&gt;2&lt;/span&gt; Avoimen datan direktiivin täytäntöönpano kansallisessa lainsäädännössä&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#viro-avaa-valtio-omisteisen-lähdekoodin&#34; id=&#34;toc-viro-avaa-valtio-omisteisen-lähdekoodin&#34;&gt;&lt;span class=&#34;toc-section-number&#34;&gt;3&lt;/span&gt; Viro avaa valtio-omisteisen lähdekoodin&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#julkisen-sektorin-avoin-lähdekoodi-suomessa&#34; id=&#34;toc-julkisen-sektorin-avoin-lähdekoodi-suomessa&#34;&gt;&lt;span class=&#34;toc-section-number&#34;&gt;3.1&lt;/span&gt; Julkisen sektorin avoin lähdekoodi Suomessa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ostolaskudatan-avaaminen-varsinais-suomessa&#34; id=&#34;toc-ostolaskudatan-avaaminen-varsinais-suomessa&#34;&gt;&lt;span class=&#34;toc-section-number&#34;&gt;4&lt;/span&gt; Ostolaskudatan avaaminen Varsinais-Suomessa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#lopuksi&#34; id=&#34;toc-lopuksi&#34;&gt;&lt;span class=&#34;toc-section-number&#34;&gt;5&lt;/span&gt; Lopuksi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;Aika ajoin on hyödyllistä koostaa yhteen paikkaan uutisia ajankohtaisista kotimaisista ja ulkomaisista datan avaamiseen liittyvistä kehityskuluista. Tähän kirjoitukseen on koottu tietoa meneillään olevista tai juuri päättyneistä lakihankkeita tai muista uutisista, joilla saattaa olla relevanssia rOpenGov-verkoston työn kannalta.&lt;/p&gt;
&lt;p&gt;Tässä kirjoituksessa esittämät näkemykset ja tulkinnat ovat omiani eikä kirjoitusta kannata käyttää autoritatiivisena lähteenä.&lt;/p&gt;
&lt;div id=&#34;julkisen-hallinnon-api-linjaukset&#34; class=&#34;section level1&#34; number=&#34;1&#34;&gt;
&lt;h1&gt;&lt;span class=&#34;header-section-number&#34;&gt;1&lt;/span&gt; Julkisen hallinnon API-linjaukset&lt;/h1&gt;
&lt;p&gt;Marinin &lt;a href=&#34;https://julkaisut.valtioneuvosto.fi/bitstream/handle/10024/161931/VN_2019_31.pdf?sequence=1&amp;amp;isAllowed=y&#34;&gt;hallitusohjelman&lt;/a&gt; Elinvoimainen Suomi -osiossa digitalisaation hyödyntäminen ja uusien yksityisen ja julkisen sektorin yhteistyön toimintamallien kehittäminen ja käyttöönotto nähdään yhtenä tulevaisuuden menestyksen rakennuspalikkana.&lt;/p&gt;
&lt;p&gt;Tavoitteeksi on asetettu, että Suomi tunnettaisiin tulevaisuudessa ”teknologisen kehityksen, innovatiivisten hankintojen ja kokeilukulttuurin edelläkävijänä”. Tavoitteen saavuttamiseksi määritellään useita keinoja, joista yksi on pyrkimys edistää julkisen sektorin teknologia- ja digitalisaatiokyvykkyyttä sekä kehittämään julkisen ja yksityisen sektorin yhteistyötä.&lt;/p&gt;
&lt;p&gt;Edellä mainitun tavoitteen alle hallitusohjelmassa on listattu useampia tiukemmin määriteltyjä osatavoitteita, esimerkiksi:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Laaditaan julkisen sektorin datan avaamisen ja hyödynnettävyyden strategia toimenpidesuunnitelmineen ottaen huomioon tietosuojavaikutukset ja mahdolliset lainsäädäntötarpeet. Lähtökohtana on, että julkiset toimijat avaavat julkiset rajapinnat, jos niitä ei ole erityistä syytä pitää niitä suljettuna.&lt;/li&gt;
&lt;li&gt;Edistetään yritysten ja yrittäjien datan jakamista ekosysteemien sisällä.&lt;/li&gt;
&lt;li&gt;Edistetään reaaliaikataloutta rakenteisten sähköisten laskujen ja kuittien laajalla käyttöönotolla.&lt;/li&gt;
&lt;li&gt;Jatketaan arjesta ja liiketoiminnasta sujuvampaa tekevän AuroraAI-verkon kehittämistä tietoturvallisesti ja eettisesti kestävällä tavalla menokehyksen sen salliessa.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Listassa ensimmäiseksi mainittua tavoitetta edistämään on erillinen Valtiovarainministeriön Tiedon hyödyntämisen ja avaamisen hallitusohjelmahanke (hierarkia on siis Hallitusohjelma &amp;gt; Strategiset kokonaisuudet &amp;gt; Tavoitteet &amp;gt; Hankkeet). Hankkeen tavoitteena on edistää ”tietojen ja toimintojen hyödyntämistä yhteneväisellä tavalla ensisijaisesti ohjelmointirajapintojen (API) kautta”, mikä rOpenGovin pakettien kehitystyön kannalta tämä onkin kiinnostavaa.&lt;/p&gt;
&lt;p&gt;API-linjausten kommentointi päättyi jo 31.1.2021. API-linjausten toimeenpano-ohjeiden valmistelu on aloitettu keväällä 2021 ja valmista pitäisi tulla vuoden lopulla.&lt;/p&gt;
&lt;p&gt;Lisätietoja &lt;a href=&#34;https://vm.fi/tiedon-hyodyntaminen-ja-avaaminen&#34;&gt;hankesivulta&lt;/a&gt; sekä API-linjauksiin liittyvästä &lt;a href=&#34;https://vm.fi/-/alustavat-api-linjaukset-ovat-nyt-avoimesti-kommentoitavissa&#34;&gt;Valtiovarainministeriön tiedotteesta&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;avoimen-datan-direktiivin-täytäntöönpano-kansallisessa-lainsäädännössä&#34; class=&#34;section level1&#34; number=&#34;2&#34;&gt;
&lt;h1&gt;&lt;span class=&#34;header-section-number&#34;&gt;2&lt;/span&gt; Avoimen datan direktiivin täytäntöönpano kansallisessa lainsäädännössä&lt;/h1&gt;
&lt;p&gt;EU:n avoimen datan direktiivi 2019/1024 on pantu täytäntöön ja tullut voimaan kansallisessa lainsäädännössä 17.7.2021 alkaen. Direktiivin tarkoituksena on edistää julkisen sektorin toimijoiden hallussa olevan ja julkisen sektorin tuottaman datan uudelleenkäyttöä kaupallisissa tai muissa kuin kaupallisissa tarkoituksissa.&lt;/p&gt;
&lt;p&gt;Hankkeen pohjalta annetut lait ovat:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.finlex.fi/fi/laki/alkup/2021/20210710&#34;&gt;710/2021 Laki julkisen hallinnon tiedonhallinnasta annetun lain muuttamisesta&lt;/a&gt; (alkuperäinen laki: &lt;a href=&#34;https://www.finlex.fi/fi/laki/ajantasa/2019/20190906&#34;&gt;9.8.2019/906&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.finlex.fi/fi/laki/alkup/2021/20210711&#34;&gt;711/2021 Laki viranomaisten toiminnan julkisuudesta annetun lain 16 ja 34 §:n muuttamisesta&lt;/a&gt; (alkuperäinen laki: &lt;a href=&#34;https://www.finlex.fi/fi/laki/ajantasa/1999/19990621&#34;&gt;21.5.1999/621&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.finlex.fi/fi/laki/alkup/2021/20210712&#34;&gt;712/2021 Laki eräitä yleishyödyllisiä palveluita tuottavien yritysten tiedon uudelleenkäytöstä&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.finlex.fi/fi/laki/alkup/2021/20210713&#34;&gt;713/2021 Laki julkisin varoin tuotettujen tutkimusaineistojen uudelleenkäytöstä&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Direktiivin täytäntöönpanon keskeiset vaikutukset on tiivistetty seuraavanlaisesti (lihavoinnit omia):&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Tiheästi tai reaaliaikaisesti päivittyvien tietojen eli niin sanotun dynaamisen datan on jatkossa oltava &lt;strong&gt;tietyin ehdoin&lt;/strong&gt; saatavilla teknisen rajapinnan kautta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arvokkaiden tietoaineistojen&lt;/strong&gt; on oltava saatavilla teknisen rajapinnan kautta maksutta. Euroopan komissio antaa myöhemmin luettelon näistä tietoaineistoista täytäntöönpanosäädöksessään.&lt;/li&gt;
&lt;li&gt;Sellaisten tutkimusaineistojen, jotka on tuotettu julkisin varoin ja jotka on asetettu julkisesti saataville tietovaraston kautta, on oltava saatavilla maksutta, sekä tietyin ehdoin koneluettavassa muodossa.&lt;/li&gt;
&lt;li&gt;Tiettyjen yleishyödyllisten palveluiden tuottamista koskevien asiakirjojen uudelleenkäytön ehtoja yhdenmukaistetaan.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tiheästi tai reaaliaikaisesti päivittyvän tiedon osalta &lt;strong&gt;tietyin ehdoin&lt;/strong&gt; vaikuttaisi viittaavan siihen, että viranomainen voi olla tarjoamatta tietoa teknisen rajapinnan kautta mikäli tämä aiheuttaisi ”kohtuutonta vaivaa taloudellisista tai teknisistä syistä”.&lt;/p&gt;
&lt;p&gt;Tällöin tiedon tulee kuitenkin olla saatavilla ”sellaisella aikavälillä tai sellaisin tilapäisin teknisin rajoituksin, jotka eivät tarpeettomasti haittaa sen hyödyntämistä”, minkä tulkitsen tarkoittavan sitä, että tiheästi päivittyneet tiedot voidaan julkaista myös jälkikäteen ja/tai säännöllisin väliajoin vaikkapa csv-muotoisina tiedostoina netissä. Tämä voinee tulla myös kyseeseen, mikäli teknisen rajapinnan toiminnassa ilmenisi väliaikaisia teknisiä ongelmia. Tiedostojen ja rajapintayhteyden eroja on käsitellyt esimerkiksi Helsinki Region Infoshare &lt;a href=&#34;https://hri.fi/fi/ohjeet/datan-avaajalle/tiedosto-vai-rajapinta/&#34;&gt;ohjeissaan datan avaajalle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Olettaisin lain hengen olevan kuitenkin sellainen, että julkisten organisaatioiden tulisi pitkällä aikavälillä budjetoida varoja rajapintojen käyttöönottoon ja riittävään tekniseen infrastruktuuriin. Tiedon loppukäyttäjien antama palaute voi toimia tässä kirittäjänä.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Arvokkaiden tietoaineistojen&lt;/strong&gt; osalta Euroopan komission täytäntöönpanosäädökset lienevät vielä tuloillaan. Arvokkaista tietoaineistosta tullaan säätämään valtioneuvoston asetuksella tai muualla lainsäädännössä.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://api.hankeikkuna.fi/asiakirjat/4e165171-966d-485c-962f-e9071beed9e1/7b1454af-defc-4b3e-940e-c0c5b815ed7c/LAUSUNTO_20201123121314.PDF&#34;&gt;Open Knowledge Finland&lt;/a&gt; nosti 23.11.2020 antamassaan lausunnossa esille, että lakiesityksessä on tehty ainoastaan minimi ja että tavoitteet on asetettu aivan liian matalalle, jotta Suomea voisi aidosti kutsua edelläkävijämaaksi.&lt;/p&gt;
&lt;p&gt;Suomen ongelmana pidetään avoimeen dataan pohjautuvan tietoperustaisen päätöksenteon puuttumista ja eri ministeriöiden alaisten organisaatioiden tekemää päällekkäistä työtä. Lainsäädäntöä ja toimintatapoja pidetään ”paperiaikaisina”, joissa viranomainen edelleen ”luovuttaa tietoa” pyynnöstä ja avoimen datan etuja ei ole täysimääräisesti ulosmitattu julkisen sektorin tietotyön kehittämisessä.&lt;/p&gt;
&lt;p&gt;Ongelmallisena pidetään myös tutkimusjulkaisujen rajaamista julkisin varoin tuotettujen tutkimusaineistojen uudelleenkäytöstä annetun lain ulkopuolelle.&lt;/p&gt;
&lt;p&gt;Lisätietoja &lt;a href=&#34;https://vm.fi/-/julkisen-tiedon-luovuttaminen-muuttuu-avoimen-datan-direktiivi-pannaan-taytantoon&#34;&gt;Valtiovarainministeriön tiedotteessa&lt;/a&gt;, &lt;a href=&#34;https://vm.fi/hanke?tunnus=VM043:00/2020&#34;&gt;hankesivulla&lt;/a&gt; ja &lt;a href=&#34;https://www.eduskunta.fi/FI/naineduskuntatoimii/kirjasto/aineistot/kotimainen_oikeus/LATI/Sivut/avoimen-datan-direktiivin-kansallinen-taytantoonpano.aspx&#34;&gt;Eduskunnan kirjaston Lakihankkeiden tietopaketit -sivuilta&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;viro-avaa-valtio-omisteisen-lähdekoodin&#34; class=&#34;section level1&#34; number=&#34;3&#34;&gt;
&lt;h1&gt;&lt;span class=&#34;header-section-number&#34;&gt;3&lt;/span&gt; Viro avaa valtio-omisteisen lähdekoodin&lt;/h1&gt;
&lt;p&gt;Virossa &lt;a href=&#34;https://www.riigiteataja.ee/akt/122052021002&#34;&gt;1.6.2021 voimaan tulleen lain&lt;/a&gt; perusteella kokonaan julkisessa omistuksessa olevat ohjelmistot tai näiden lähdekoodi on julkaistava kokonaan tai osittain. Mikäli ainoastaan osa lähdekoodista on julkisessa omistuksessa, tämä osa on tehtävä julkiseksi. Lisäksi ohjelmistosta vastuussa olevan tahon on julkaistava kuvaus ohjelmistosta sekä määriteltävä selkeät ehdot ohjelmiston käytölle.&lt;/p&gt;
&lt;p&gt;Virolla on ohjelmiston julkaisua varten oma GitLab-alustalla toteutettu julkinen versionhallinnan varastojen (repository) hosting-palvelussa: &lt;a href=&#34;https://koodivaramu.eesti.ee/explore&#34;&gt;koodivaramu.eesti.ee&lt;/a&gt;. Kirjoitushetkellä koodivaramussa on 109 erillistä projektia, joista merkittävässä osassa käytetään esimerkiksi vapaata &lt;a href=&#34;https://opensource.org/licenses/mit-license.php&#34;&gt;MIT-lisenssiä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Lisätietoja Viron mallista &lt;a href=&#34;https://joinup.ec.europa.eu/collection/open-source-observatory-osor/news/estonia-makes-public-software-public&#34;&gt;Open Source Observatoryn (OSOR) uutisesta&lt;/a&gt; ja &lt;a href=&#34;https://www.riigiteataja.ee/akt/122052021002&#34;&gt;Riigi Teataja virallisessa lehdessä julkaistusta lakitekstistä (viroksi)&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&#34;julkisen-sektorin-avoin-lähdekoodi-suomessa&#34; class=&#34;section level2&#34; number=&#34;3.1&#34;&gt;
&lt;h2&gt;&lt;span class=&#34;header-section-number&#34;&gt;3.1&lt;/span&gt; Julkisen sektorin avoin lähdekoodi Suomessa&lt;/h2&gt;
&lt;p&gt;Suomessa täysin vastaavaa palvelua ei ole. Suomessa on lain sijasta Julkisen hallinnon tietohallinnon neuvottelukunnan (JUHTA) alaisen JHS-jaoston muotoilema suositus &lt;a href=&#34;https://www.suomidigi.fi/ohjeet-ja-tuki/jhs-suositukset/jhs-169-avoimen-lahdekoodin-ohjelmien-kaytto-julkisessa-hallinnossa&#34;&gt;JHS 169 Avoimen lähdekoodin ohjelmien käyttö julkisessa hallinnossa&lt;/a&gt;. JHS-suosituksia valmisteltiin 1992-2019 valtion ja kuntien yhteistyönä, mutta JHS-järjestelmä lakkautettiin 2020 tiedonhallintalain voimaantulon myötä.&lt;/p&gt;
&lt;p&gt;Solita Oy:n aloitteesta avattu &lt;a href=&#34;http://avoinkoodi.fi&#34;&gt;avoinkoodi.fi-sivusto&lt;/a&gt; täyttää osittain saman tavoitteen kuin koodivaramu. Sivuston vetovastuu näyttää sittemmin siirtyneen &lt;a href=&#34;https://coss.fi&#34;&gt;Suomen avoimien tietojärjestelmien keskus - COSS ry:lle&lt;/a&gt;. Käyttäjät voivat ehdottaa sivuston listauksista puuttuvia projekteja tai tehdä pull requestin projektin GitHub-repoon.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;ostolaskudatan-avaaminen-varsinais-suomessa&#34; class=&#34;section level1&#34; number=&#34;4&#34;&gt;
&lt;h1&gt;&lt;span class=&#34;header-section-number&#34;&gt;4&lt;/span&gt; Ostolaskudatan avaaminen Varsinais-Suomessa&lt;/h1&gt;
&lt;p&gt;Julkisten hankintojen ja ostolaskujen avaaminen etenee hitaasti mutta vääjäämättömästi. Valtion ja kuntien (Helsinki ja Vantaa) ostolaskuja on julkaistu &lt;a href=&#34;https://tutkihankintoja.fi&#34;&gt;tutkihankintoja.fi-sivustolla&lt;/a&gt; vuodesta 2016 lähtien. Helsingin kaupungin ostoista on dataa myös &lt;a href=&#34;https://www.avoindata.fi/data/fi/dataset/helsingin-kaupungin-ostot&#34;&gt;avoindata.fi-sivustolla&lt;/a&gt; vuodesta 2012 alkaen. Käsittelin kyseistä aineistoa &lt;a href=&#34;http://ropengov.org/fi/2021/04/helsinki-ostodata/&#34;&gt;blogikirjoituksessa tänä keväänä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ostolaskudata on ilmeisen mielenkiintoista monelle eri taholle, esimerkiksi kilpailutuksiin osallistuville yrittäjille. Varsinais-Suomen Yrittäjät onkin avannut vuonna 2019 &lt;a href=&#34;https://handata.fi&#34;&gt;handata.fi-sivuston&lt;/a&gt;, jossa pystyy kirjautumisen jälkeen tarkastelemaan manner-Suomen 295 kunnan ostotietoja (&lt;a href=&#34;https://www.yrittajat.fi/uutiset/605998-uusi-verkkopalvelu-paljastaa-puutteet-kuntien-taloudenpidossa&#34;&gt;Yrittäjäsanomat 2019&lt;/a&gt;). Tiedot ovat osittain (maksuttoman) rekisteröitymisen takana.&lt;/p&gt;
&lt;p&gt;Vuonna 2021 &lt;a href=&#34;https://www.yrittajat.fi/varsinais-suomen-yrittajat/a/uutiset/651506-yha-useampi-kunta-avaamassa-ostolaskudatansa-varsinais-suomessa&#34;&gt;monet kunnat ovat edelleen vasta avaamassa ostolaskudataansa&lt;/a&gt;. Ainoastaan &lt;a href=&#34;https://lieto.fi/hallinto-ja-osallistuminen/talous-ja-strategiat/avoin-data/&#34;&gt;Lieto&lt;/a&gt;, &lt;a href=&#34;http://www.paimio.fi/paatoksenteko/talous/ostolaskut&#34;&gt;Paimio&lt;/a&gt; ja &lt;a href=&#34;https://kaarina.fi/fi/talous-ja-hankinnat/kaarinan-kaupungin-ostolaskut&#34;&gt;Kaarina&lt;/a&gt; ovat kirjoitushetkellä julkaisseet ostolaskunsa. Alla olevassa taulukossa esitetään, mistä lähtien dataa on ollut saatavilla tai milloin kuntien ostolaskudatan voidaan tämän hetkisten tietojen perusteella odottaa tulevan julkiseksi (Lähde: em. yrittajat.fi-uutisartikkeli ja &lt;a href=&#34;https://www.ts.fi/uutiset/paikalliset/5336213/Turun+ostojen+julkaisu+venyy+ensi+vuoteenKuntaliitto+avoimuus+voi+tukea+kunnan+kustannustietoisuutta&#34;&gt;TS.fi 9.6.2021&lt;/a&gt;):&lt;/p&gt;
&lt;table class=&#34; lightable-classic-2&#34; style=&#34;font-family: &amp;quot;Arial Narrow&amp;quot;, &amp;quot;Source Sans Pro&amp;quot;, sans-serif; width: auto !important; margin-left: auto; margin-right: auto;&#34;&gt;
&lt;caption&gt;
&lt;span id=&#34;tab:unnamed-chunk-1&#34;&gt;Table 4.1: &lt;/span&gt;Varsinais-Suomen kuntien ostolaskujen julkaisuvuosi tai odotettu julkaisuvuosi
&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left;&#34;&gt;
Kunta
&lt;/th&gt;
&lt;th style=&#34;text-align:left;&#34;&gt;
Julkaisuvuosi
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Lieto
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2015
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Paimio
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2018
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Kaarina
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2021
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Loimaa
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2021 (kesken)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Masku
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2021 (kesken)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Turku
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2022
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Salo
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2022
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Uusikaupunki
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
2022
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Raisio
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Selvitystyö käynnistetty
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Parainen
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Selvitystyö käynnistetty
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Mynämäki
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Selvitystyö käynnistetty
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Kemiönsaari
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Selvitystyö käynnistetty
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Laitila
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Ei valmistelussa
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Kustavi
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Ei valmistelussa
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Nousiainen
&lt;/td&gt;
&lt;td style=&#34;text-align:left;&#34;&gt;
Ei julkaista
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ostolaskudatan avaamisen edistämiseksi Suomen Kuntaliitto julkaisi toukokuussa 2021 &lt;a href=&#34;https://www.avoindata.fi/data/fi/dataset/kuntien-ja-kuntayhtymien-ostolaskudatan-avaamisen-ohje/resource/6b07039a-262c-4e77-b39a-b99599ef8395&#34;&gt;kuntalaskudatan avaamista käsittelevän ohjeen&lt;/a&gt;, joka korvasi vuonna 2016 julkaistun aiemman ohjeen.&lt;/p&gt;
&lt;p&gt;Ohjeistuksessa käydään läpi perustietoja ostolaskuista ja asiaan liittyvistä standardeihin ja ohjeisiin. Ostolaskulla esimerkiksi tarkoitetaan sellaista laskua, joka liittyy hankittuun tuotteeseen, investointiin tai palveluun, minkä hankinnassa on noudatettu hankintalakia tai kunnan pienhankintaohjeita. Tämä rajaa ulkopuolelle esimerkiksi avustukset, palkat, veromaksut ja muut tilitykset. Melko merkittävä osa kunnan menoista, esimerkiksi henkilöstömenot, siis jäävät luonnollisesti ostolaskujen ulkopuolelle.&lt;/p&gt;
&lt;p&gt;Ostolaskudatan sisältämät tiedot tileistä ja palveluluokituksista saadaan Valtiovarainministeriön ylläpitämästä &lt;a href=&#34;https://www.valtiokonttori.fi/maaraykset-ja-ohjeet/kuntien-ja-kuntayhtymien-automaattisen-talousraportoinnin-kasikirja-aura/&#34;&gt;Kuntien ja kuntayhtymien automatisoidun talousraportoinnin käsikirjasta (AURA)&lt;/a&gt;. Kuntien sote-menojen osalta sensitiivisiä sote-sektoriin liittyviä tietojen yhdistely taas perustuu Valtiokonttorin ylläpitämään ohjeistukseen.&lt;/p&gt;
&lt;p&gt;Jäämme mielenkiinnolla seuraamaan, kuinka yhdenmukaisesti ostolaskudata julkaistaan eri puolilla Suomea. Yhtenäiset ohjeistukset ja standardit helpottavat datan vertailua ja pienentävät datan käsittelyä helpottavien ratkaisujen kehitysaikaa.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;lopuksi&#34; class=&#34;section level1&#34; number=&#34;5&#34;&gt;
&lt;h1&gt;&lt;span class=&#34;header-section-number&#34;&gt;5&lt;/span&gt; Lopuksi&lt;/h1&gt;
&lt;p&gt;Tämä listaus ei ole missään nimessä tyhjentävä. Toisaalta kirjoituksen tarkoitus ei ollut toisintaa &lt;a href=&#34;https://joinup.ec.europa.eu/collection/open-source-observatory-osor&#34;&gt;Open Source Observatoryn&lt;/a&gt; tai vastaavien sivustojen uutistulvaa suomen kielellä vaan poimia note-to-self -tyylisesti joitakin mielenkiintoisia kehityskulkuja, jotka saattavat vaikuttaa rOpenGovin pakettikehitykseen ja tarjontaan tulevaisuudessa.&lt;/p&gt;
&lt;p&gt;Jäikö lista mielestäsi vajaaksi? Kerro se kommenteissa!&lt;/p&gt;
&lt;/div&gt;
</description> 
  </item>
  
<item>
  <title>Helsingin ostodatan visualisointi geofi-paketilla</title>
  <link>http://ropengov.org/fi/2021/04/helsinki-ostodata/</link>
  <pubDate>Thu, 01 Apr 2021 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2021/04/helsinki-ostodata/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/2021/04/helsinki-ostodata/index.fi_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;style type=&#34;text/css&#34;&gt;
pre &gt; code.sourceCode { white-space: pre; position: relative; }
pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre &gt; code.sourceCode { white-space: pre-wrap; }
pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code &gt; span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code &gt; span &gt; a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {  background-color: #f8f8f8; }
@media screen {
pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ef2929; } /* Alert */
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #c4a000; } /* Attribute */
code span.bn { color: #0000cf; } /* BaseN */
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4e9a06; } /* Char */
code span.cn { color: #000000; } /* Constant */
code span.co { color: #8f5902; font-style: italic; } /* Comment */
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
code span.dt { color: #204a87; } /* DataType */
code span.dv { color: #0000cf; } /* DecVal */
code span.er { color: #a40000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #0000cf; } /* Float */
code span.fu { color: #000000; } /* Function */
code span.im { } /* Import */
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
code span.ot { color: #8f5902; } /* Other */
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
code span.sc { color: #000000; } /* SpecialChar */
code span.ss { color: #4e9a06; } /* SpecialString */
code span.st { color: #4e9a06; } /* String */
code span.va { color: #000000; } /* Variable */
code span.vs { color: #4e9a06; } /* VerbatimString */
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
&lt;/style&gt;


&lt;p&gt;Helsingin kaupungin tekemien palvelu-, tarvike- ja käyttöomaisuusostojen &lt;a href=&#34;https://hri.fi/data/dataset//helsingin-kaupungin-ostot&#34;&gt;data on ollut avoimesti saatavilla&lt;/a&gt; vuodesta 2014 asti. Avattujen datojen joukossa kaupungin ostodata lukeutuu epäilemättä kiinnostavimpien joukkoon ja se on ollut &lt;a href=&#34;https://hri.fi/data/dataset/showcases/helsingin-kaupungin-ostot&#34;&gt;useiden erilaisten sovellusten ja visualisointien&lt;/a&gt; lähtökohtana. Tuon oman lisäni näiden sovellusten jatkoksi yhdistämällä yritysdatan paikkatietoaineistoihin ja visualisoimalla tiedon CRANissa vasta äskettäin julkaistua &lt;a href=&#34;https://CRAN.R-project.org/package=geofi&#34;&gt;geofi-pakettia&lt;/a&gt; hyödyntämällä.&lt;/p&gt;
&lt;p&gt;Tätä kirjoitusta varten olen yhdistänyt valmiiseen datasettiin tiedon yritysten kotipaikasta kaupungin, kadun ja postinumeroalueen tarkkuudella. Nämä tiedot saatiin haettua &lt;a href=&#34;http://avoindata.prh.fi&#34;&gt;Patentti- ja rekisterihallituksen avoimen datan palvelusta&lt;/a&gt; aineistosta löytyneiden y-tunnusten avulla.&lt;/p&gt;
&lt;p&gt;R soveltuu melkein miljoona riviä sisältävän aineiston tarkasteluun ja käsittelyyn erinomaiseksi työkaluksi. Excelin VLOOKUP- ja Find &amp;amp; Replace -toiminnoilla aineiston käsittely vaati välillä kymmenien sekuntien odottelua, kun taas R:n dplyr-paketin join- ja mutate-operaatiot olivat salamannopeita.&lt;/p&gt;
&lt;p&gt;Menetelmän rajoitteena voi pitää sitä, että palvelusta oli saatavissa tietoja ainoastaan osakeyhtiöistä, osuuskunnista ja vakuutusyhtiöistä, joiden tiedot on kirjattu rekisteriin 7.11.2014 alkaen. Erilaiset julkiset instituutiot (esim. THL, Digi- ja väestötietovirasto), merkittävääkin toimintaa harjoittavat rekisteröidyt yhdistykset (esim. Suomen Kuntaliitto, Allergia-, Iho- ja Astmaliitto) tai toiminimet jäävät siis tästä tarkastelusta ulos. Jossain muussa kontekstissa tämä rajoite voisi olla ongelma, mutta tämän demonstraation / kirjoituksen puitteissa rajoitteen olemassaolo voidaan ainoastaan todeta ja siirtyä eteenpäin.&lt;/p&gt;
&lt;p&gt;Hadley Wickhamin httr-paketin vignette &lt;a href=&#34;https://cran.r-project.org/web/packages/httr/vignettes/api-packages.html&#34;&gt;Best practices for API packages&lt;/a&gt; antoi hyvät lähtökohdat rakentaa oma kustomoitu funktio prh_api, jonka avulla yritysten tiedot pystyttiin lataamaan “helposti”. Helposti-sana on lainausmerkeissä, sillä vaikka aineiston lataaminen oli sinänsä vaivatonta, PRH:n APIin tehtävien kutsujen lukumäärä oli rajattu 300 kutsuun minuutissa, kaikille käyttäjille jaettuna. En ollut todennäköisesti ainoa käyttäjä linjoilla, sillä yhden yrityksen tietojen lataamisessa kesti keskimäärin 4 sekuntia, jolloin 30000 uniikin y-tunnuksen läpikäymisessä vierähti tovi.&lt;/p&gt;
&lt;div id=&#34;aineiston-lataus-ja-käsittely&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Aineiston lataus ja käsittely&lt;/h3&gt;
&lt;p&gt;Ladataan aluksi aineisto ja poistetaan ne rivit, joissa on epävalidi y-tunnus hetu-paketin bid_ctrl-funktiota hyödyntämällä:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb1&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb1-1&#34;&gt;&lt;a href=&#34;#cb1-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(hetu)&lt;/span&gt;
&lt;span id=&#34;cb1-2&#34;&gt;&lt;a href=&#34;#cb1-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(dplyr)&lt;/span&gt;
&lt;span id=&#34;cb1-3&#34;&gt;&lt;a href=&#34;#cb1-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;read.csv&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;http://openspending.hel.ninja/files/ostot/helsingin-ostot-all.csv&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb1-4&#34;&gt;&lt;a href=&#34;#cb1-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;valid_ytunnus &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;bid_ctrl&lt;/span&gt;(helsingin_ostot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;toimittaja_ytunnus)&lt;/span&gt;
&lt;span id=&#34;cb1-5&#34;&gt;&lt;a href=&#34;#cb1-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; helsingin_ostot[&lt;span class=&#34;fu&#34;&gt;which&lt;/span&gt;(helsingin_ostot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;valid_ytunnus),]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Tässä vaiheessa prosessia PRH:n APIsta ladattaisiin uniikit y-tunnukset (jotta saman y-tunnuksen tietoja ei ladattaisi turhaan useaan kertaan) ja yhdistettäisiin nämä tiedot ostodatan kanssa. Koska tietojen lataaminen y-tunnusten perusteella on kohtuuttoman aikaavievä operaatio, olen käyttänyt tässä kirjoituksessa etukäteen valmisteltua datasettiä. Seuraava koodinpätkä on ainoastaan esimerkkinä prosessista:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb2&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb2-1&#34;&gt;&lt;a href=&#34;#cb2-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Uniikit y-tunnukset sisältävä vektori&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-2&#34;&gt;&lt;a href=&#34;#cb2-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;unique_ytunnus &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;unique&lt;/span&gt;(helsingin_ostot2&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;toimittaja_ytunnus)&lt;/span&gt;
&lt;span id=&#34;cb2-3&#34;&gt;&lt;a href=&#34;#cb2-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-4&#34;&gt;&lt;a href=&#34;#cb2-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Esimerkki: Yhden y-tunnuksen tietojen lataaminen ja haluttujen tietojen suodattaminen&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-5&#34;&gt;&lt;a href=&#34;#cb2-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-6&#34;&gt;&lt;a href=&#34;#cb2-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;yrityksen_tiedot &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; jsonlite&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;fromJSON&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;http://avoindata.prh.fi/tr/v1/0494571-4&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;simplifyVector =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb2-7&#34;&gt;&lt;a href=&#34;#cb2-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;poimitut_tiedot &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;NULL&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-8&#34;&gt;&lt;a href=&#34;#cb2-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;poimitut_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;businessId &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; yrityksen_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;results&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;businessId&lt;/span&gt;
&lt;span id=&#34;cb2-9&#34;&gt;&lt;a href=&#34;#cb2-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;poimitut_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;street &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; yrityksen_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;results&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;addresses[[&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;]]&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;street[&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;]&lt;/span&gt;
&lt;span id=&#34;cb2-10&#34;&gt;&lt;a href=&#34;#cb2-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;poimitut_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;city &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; yrityksen_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;results&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;addresses[[&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;]]&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;city[&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;]&lt;/span&gt;
&lt;span id=&#34;cb2-11&#34;&gt;&lt;a href=&#34;#cb2-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;poimitut_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;postCode &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; yrityksen_tiedot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;results&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;addresses[[&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;]]&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;postCode[&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;]&lt;/span&gt;
&lt;span id=&#34;cb2-12&#34;&gt;&lt;a href=&#34;#cb2-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-13&#34;&gt;&lt;a href=&#34;#cb2-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;poimitut_tiedot &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(poimitut_tiedot)&lt;/span&gt;
&lt;span id=&#34;cb2-14&#34;&gt;&lt;a href=&#34;#cb2-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-15&#34;&gt;&lt;a href=&#34;#cb2-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot3 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x =&lt;/span&gt; helsingin_ostot2, &lt;span class=&#34;at&#34;&gt;y =&lt;/span&gt; poimitut_tiedot, &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;toimittaja_ytunnus&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;businessId&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Kun y-tunnuksia on enemmän kuin yksi, yllä olevasta koodista voidaan muodostaa oma funktionsa, jota voidaan hyödyntää lapply-funktion kanssa.&lt;/p&gt;
&lt;p&gt;Mikäli yritykselle oli saatavissa postinumeroalue, sille oli pääsääntöisesti tallennettu myös tieto kadusta ja kaupungista. Aineiston kattavuutta voidaan näin ollen tarkastella yksinkeraisesti aineistossa olevien ja puuttuvien postinumeroiden suhdelukuna, joka visualisoidaan pylväsdiagrammeilla.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb3&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb3-1&#34;&gt;&lt;a href=&#34;#cb3-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Ladataan valmisteltu datasetti&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-2&#34;&gt;&lt;a href=&#34;#cb3-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;load&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;~/helsingin_ostot3.RData&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb3-3&#34;&gt;&lt;a href=&#34;#cb3-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(ggplot2)&lt;/span&gt;
&lt;span id=&#34;cb3-4&#34;&gt;&lt;a href=&#34;#cb3-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(helsingin_ostot3, &lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;is.na&lt;/span&gt;(postCode), &lt;span class=&#34;at&#34;&gt;x=&lt;/span&gt;year)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-5&#34;&gt;&lt;a href=&#34;#cb3-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_bar&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;position=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;stack&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;stat=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-6&#34;&gt;&lt;a href=&#34;#cb3-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Vuosi&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;y =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Rivien lkm&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Puuttuva &lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;postinumero&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2021/04/helsinki-ostodata/index.fi_files/figure-html/puuttuvat_visualisointi-1.png&#34; width=&#34;80%&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Huomataan, että puuttuvien postinumeroiden osuus pienenee mitä lähemmäksi nykyhetkeä tulemme.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;top-20--lista-mistä-kunnista-helsinki-ostaa-eniten&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Top-20 -lista: Mistä kunnista Helsinki ostaa eniten&lt;/h3&gt;
&lt;p&gt;Yrityksen postinumeron tietäminen on hyvä lähtökohta lähteä selvittämään, mistä Helsingin kaupungin ostot tulevat. Postinumeroalueiden perusteella piirretty kartta-aineisto on kuitenkin ehkä liiankin yksityiskohtainen, joten tyydymme tässä tapauksessa kuntatason tarkasteluun.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://CRAN.R-project.org/package=geofi&#34;&gt;Geofi-pakettia&lt;/a&gt; hyödyntämällä postinumeron yhdistäminen kuntaan on helppoa. Tarkastelu ei ole aivan täydellinen, sillä postinumeroalueiden rajat eivät aina noudata kuntarajoja täydellisesti ja postinumeroalueelle määritelty kuntatunnus riippuu siitä, “minkä kunnan rakennuksia alueella on eniten (VTJ:n mukaan)” (ks. &lt;a href=&#34;https://www.tilastokeskus.fi/tup/karttaaineistot/postinumeroalueet.html&#34;&gt;Tilastokeskuksen sivut&lt;/a&gt;). Tässä tapauksessa olisi voitu hyödyntää myös aineistoon jo ladattua tietoa yrityksen kotikunnasta (poimitut_tiedot$city), mutta kuntanimien vaihtelevien kirjoitusasujen, mahdollisten kirjoitusvirheiden tai ruotsinkielisten kuntanimien vuoksi pidin varmempana ratkaisuna kunnan määrittämistä postinumeron avulla.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb4&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb4-1&#34;&gt;&lt;a href=&#34;#cb4-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(geofi)&lt;/span&gt;
&lt;span id=&#34;cb4-2&#34;&gt;&lt;a href=&#34;#cb4-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(dplyr)&lt;/span&gt;
&lt;span id=&#34;cb4-3&#34;&gt;&lt;a href=&#34;#cb4-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;zipcodes &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; geofi&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;get_zipcodes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2021&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb4-4&#34;&gt;&lt;a href=&#34;#cb4-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-5&#34;&gt;&lt;a href=&#34;#cb4-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Muutetaan sf-objekti tavalliseksi data frameksi, valitaan sopivat sarakkeet&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-6&#34;&gt;&lt;a href=&#34;#cb4-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;zipcodes &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(zipcodes) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-7&#34;&gt;&lt;a href=&#34;#cb4-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;select&lt;/span&gt;(kuntanro, posti_alue)&lt;/span&gt;
&lt;span id=&#34;cb4-8&#34;&gt;&lt;a href=&#34;#cb4-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot4 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x =&lt;/span&gt; helsingin_ostot3, &lt;span class=&#34;at&#34;&gt;y =&lt;/span&gt; zipcodes, &lt;span class=&#34;at&#34;&gt;by=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;postCode&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;posti_alue&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb4-9&#34;&gt;&lt;a href=&#34;#cb4-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-10&#34;&gt;&lt;a href=&#34;#cb4-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;municipalities &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; geofi&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;get_municipalities&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2021&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb4-11&#34;&gt;&lt;a href=&#34;#cb4-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;municipalities &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; municipalities &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-12&#34;&gt;&lt;a href=&#34;#cb4-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;select&lt;/span&gt;(kunta, kunta_name)&lt;/span&gt;
&lt;span id=&#34;cb4-13&#34;&gt;&lt;a href=&#34;#cb4-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-14&#34;&gt;&lt;a href=&#34;#cb4-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Valitaan sopivat sarakkeet kuntadatasta&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-15&#34;&gt;&lt;a href=&#34;#cb4-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Käytetään right_joinia siksi, että uuden muuttujan luokka säilyy &amp;quot;sf&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-16&#34;&gt;&lt;a href=&#34;#cb4-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot4 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;right_join&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x =&lt;/span&gt; municipalities, &lt;span class=&#34;at&#34;&gt;y =&lt;/span&gt; helsingin_ostot4, &lt;span class=&#34;at&#34;&gt;by=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;kunta&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;kuntanro&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb4-17&#34;&gt;&lt;a href=&#34;#cb4-17&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-18&#34;&gt;&lt;a href=&#34;#cb4-18&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Ryhmitellään ostot kunnan nimen mukaan&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-19&#34;&gt;&lt;a href=&#34;#cb4-19&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot5 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; helsingin_ostot4 &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-20&#34;&gt;&lt;a href=&#34;#cb4-20&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(kunta_name) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-21&#34;&gt;&lt;a href=&#34;#cb4-21&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;summarise&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;kunta_summa =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;as.numeric&lt;/span&gt;(summa), &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;FALSE&lt;/span&gt;)) &lt;/span&gt;
&lt;span id=&#34;cb4-22&#34;&gt;&lt;a href=&#34;#cb4-22&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-23&#34;&gt;&lt;a href=&#34;#cb4-23&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Tarkastellaan missä kunnissa on suurimmat ostot&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-24&#34;&gt;&lt;a href=&#34;#cb4-24&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;slice_max&lt;/span&gt;(helsingin_ostot5, &lt;span class=&#34;at&#34;&gt;order_by =&lt;/span&gt; kunta_summa, &lt;span class=&#34;at&#34;&gt;n =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;20&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre class=&#34;img-fluid&#34;&gt;&lt;code&gt;## Simple feature collection with 20 features and 2 fields (with 1 geometry empty)
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 215353.4 ymin: 6640920 xmax: 588843.4 ymax: 7298654
## projected CRS:  ETRS89 / TM35FIN(E,N)
## # A tibble: 20 x 3
##    kunta_name  kunta_summa                                                  geom
##    &amp;lt;chr&amp;gt;             &amp;lt;dbl&amp;gt;                                    &amp;lt;MULTIPOLYGON [m]&amp;gt;
##  1 &amp;lt;NA&amp;gt;       12164973424.                                                 EMPTY
##  2 Helsinki    5214226687. (((402737.7 6680700, 402069.8 6680535, 400326.8 6678…
##  3 Espoo        741586021. (((375773.7 6691597, 377355.9 6680366, 379983.8 6681…
##  4 Vantaa       629136624. (((392811.8 6694857, 399192.7 6692524, 396012.8 6689…
##  5 Kuopio       470253261. (((581015.6 7009317, 585462.3 7007121, 588843.4 7002…
##  6 Kouvola      149758496. (((511075 6780902, 512323 6772856, 508132 6769735, 5…
##  7 Tuusula      129772884. (((397271.6 6711736, 391885.8 6710060, 392411.8 6702…
##  8 Vaasa         90367794. (((259700 7001591, 253892.6 6990776, 242914.5 700120…
##  9 Turku         61425478. (((251038.1 6731422, 245370.1 6713651, 244865.9 6708…
## 10 Tampere       60124288. (((346626.3 6854536, 347270.1 6836030, 334112.1 6814…
## 11 Hyvinkää      51569708. (((396836.4 6726577, 392888.2 6717250, 385516.6 6715…
## 12 Kerava        49833397. (((399192.7 6692524, 392811.8 6694857, 392727.4 6700…
## 13 Raasepori     44527631. (((299881.1 6640940, 297472.1 6640920, 296412.5 6642…
## 14 Oulu          42513844. (((418101.2 7220618, 417351.5 7219858, 415092.4 7219…
## 15 Lahti         42463258. (((448838.6 6774406, 453144.3 6766188, 452204.9 6761…
## 16 Nurmijärvi    22549476. (((385516.6 6715109, 388809.1 6711136, 382590.6 6697…
## 17 Kemi          21518412. (((396561 7287772, 392601.9 7283067, 392361.4 728345…
## 18 Raisio        20195233. (((239031.6 6717088, 236093.7 6712495, 230992.2 6711…
## 19 Porvoo        18877028. (((441843.9 6673817, 440194.5 6673207, 436276.1 6673…
## 20 Padasjoki     18830945. (((422133.8 6800321, 420573.8 6797563, 415159 679860…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Suurimmat ostot sijoittuvat odotetusti Helsinkiin, Espooseen ja Vantaalle. Hieman yllättäen Kuopio kiilaa lähempänä pääkaupunkiseutua sijaitsevien Kouvolan ja Tuusulan edelle.&lt;/p&gt;
&lt;p&gt;Kaikista suurin summa jyvittyy kuitenkin luokittelun ulkopuolelle jääneelle NA-joukolle, 12 miljardia euroa 8 vuoden ajalta. Tämä summa on itse asiassa suurempi kuin kaikkien kaupungeille jyvitettyjen hankintojen summa yhteensä, mikä osoittanee muilta kuin osakeyhtiöiltä tehtävien hankintojen merkityksen Helsingin kaupungille.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;kartta-ja-virtauskartta-top-20-kaupungeista&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Kartta ja virtauskartta top-20-kaupungeista&lt;/h3&gt;
&lt;p&gt;Merkitään vielä nämä 20 tärkeintä kuntaa kartalle:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb6&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb6-1&#34;&gt;&lt;a href=&#34;#cb6-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(sf)&lt;/span&gt;
&lt;span id=&#34;cb6-2&#34;&gt;&lt;a href=&#34;#cb6-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(dplyr)&lt;/span&gt;
&lt;span id=&#34;cb6-3&#34;&gt;&lt;a href=&#34;#cb6-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-4&#34;&gt;&lt;a href=&#34;#cb6-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Poistetaan NA-joukko eli yritykset, joiden kotipaikkaa ei pystytty määrittämään&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-5&#34;&gt;&lt;a href=&#34;#cb6-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;helsingin_ostot6 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; helsingin_ostot5 &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb6-6&#34;&gt;&lt;a href=&#34;#cb6-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(kunta_name &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;setdiff&lt;/span&gt;(helsingin_ostot5&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;kunta_name, &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;cn&#34;&gt;NA&lt;/span&gt;)))&lt;/span&gt;
&lt;span id=&#34;cb6-7&#34;&gt;&lt;a href=&#34;#cb6-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-8&#34;&gt;&lt;a href=&#34;#cb6-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;kunnat_top20_summat &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;slice_max&lt;/span&gt;(helsingin_ostot6, &lt;span class=&#34;at&#34;&gt;order_by =&lt;/span&gt; kunta_summa, &lt;span class=&#34;at&#34;&gt;n =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;20&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb6-9&#34;&gt;&lt;a href=&#34;#cb6-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-10&#34;&gt;&lt;a href=&#34;#cb6-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Korostetaan top 20 kuntia&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-11&#34;&gt;&lt;a href=&#34;#cb6-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;() &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-12&#34;&gt;&lt;a href=&#34;#cb6-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;data =&lt;/span&gt; helsingin_ostot6, &lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; kunta_summa), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-13&#34;&gt;&lt;a href=&#34;#cb6-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Helsingin ostot, €&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-14&#34;&gt;&lt;a href=&#34;#cb6-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;scale_fill_gradient2&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;n.breaks =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;6&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;trans =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;log10&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb6-15&#34;&gt;&lt;a href=&#34;#cb6-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;data =&lt;/span&gt; kunnat_top20_summat, &lt;span class=&#34;at&#34;&gt;col=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;size=&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2021/04/helsinki-ostodata/index.fi_files/figure-html/top20_kunnat-1.png&#34; width=&#34;80%&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Geofi-paketissa on mahdollisuutena piirtää kartalle kuntakeskuksia merkitsevät pisteet. Pienellä muunnoksella näistä POINT-muotoisista geometrioista saadaan muodostettua LINESTRING-muotoisia viivoja, joiden alkupiste on halutussa kunnassa ja loppupiste Helsingissä. Kartan päälle lisättynä kartta ja viivasymbolit muodostavat &lt;a href=&#34;https://tilastokoulu.stat.fi/verkkokoulu_v2.xql?page_type=sisalto&amp;amp;course_id=tkoulu_teemak&amp;amp;lesson_id=6&amp;amp;subject_id=2&#34;&gt;virtauskartan&lt;/a&gt;, jolla voidaan kuvata eri alueiden välisiä virtoja. Tällaiset kartat ovat &lt;a href=&#34;https://jcheshire.com/visualisation/mapping-flows/&#34;&gt;parhaimmillaan erittäin näyttäviä&lt;/a&gt;, mutta tässä tapauksessa tyydymme hyvin yksinkertaiseen esimerkkiin:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb7&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb7-1&#34;&gt;&lt;a href=&#34;#cb7-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Luodaan kuntakeskusten välille LINESTRING-viivat&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-2&#34;&gt;&lt;a href=&#34;#cb7-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; geofi&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;municipality_central_localities&lt;/span&gt;
&lt;span id=&#34;cb7-3&#34;&gt;&lt;a href=&#34;#cb7-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-4&#34;&gt;&lt;a href=&#34;#cb7-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Hyödynnetään base-R:n tolower-funktion help filestä löytyvää capwords-funktiota&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-5&#34;&gt;&lt;a href=&#34;#cb7-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Toinen vaihtoehto olisi käyttää fuzzyjoin-pakettia&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-6&#34;&gt;&lt;a href=&#34;#cb7-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;capwords &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;cf&#34;&gt;function&lt;/span&gt;(s, &lt;span class=&#34;at&#34;&gt;strict =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;FALSE&lt;/span&gt;) {&lt;/span&gt;
&lt;span id=&#34;cb7-7&#34;&gt;&lt;a href=&#34;#cb7-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    cap &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;cf&#34;&gt;function&lt;/span&gt;(s) &lt;span class=&#34;fu&#34;&gt;paste&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;toupper&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;substring&lt;/span&gt;(s, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;)),&lt;/span&gt;
&lt;span id=&#34;cb7-8&#34;&gt;&lt;a href=&#34;#cb7-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                  {s &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;substring&lt;/span&gt;(s, &lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;); &lt;span class=&#34;cf&#34;&gt;if&lt;/span&gt;(strict) &lt;span class=&#34;fu&#34;&gt;tolower&lt;/span&gt;(s) &lt;span class=&#34;cf&#34;&gt;else&lt;/span&gt; s},&lt;/span&gt;
&lt;span id=&#34;cb7-9&#34;&gt;&lt;a href=&#34;#cb7-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                             &lt;span class=&#34;at&#34;&gt;sep =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;collapse =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot; &amp;quot;&lt;/span&gt; )&lt;/span&gt;
&lt;span id=&#34;cb7-10&#34;&gt;&lt;a href=&#34;#cb7-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;sapply&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;strsplit&lt;/span&gt;(s, &lt;span class=&#34;at&#34;&gt;split =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot; &amp;quot;&lt;/span&gt;), cap, &lt;span class=&#34;at&#34;&gt;USE.NAMES =&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;is.null&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;names&lt;/span&gt;(s)))&lt;/span&gt;
&lt;span id=&#34;cb7-11&#34;&gt;&lt;a href=&#34;#cb7-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;}&lt;/span&gt;
&lt;span id=&#34;cb7-12&#34;&gt;&lt;a href=&#34;#cb7-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-13&#34;&gt;&lt;a href=&#34;#cb7-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Muutetaan kuntien nimet ALL CAPS -&amp;gt; Capital Case&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-14&#34;&gt;&lt;a href=&#34;#cb7-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;teksti &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;capwords&lt;/span&gt;(keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;teksti, &lt;span class=&#34;at&#34;&gt;strict =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb7-15&#34;&gt;&lt;a href=&#34;#cb7-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-16&#34;&gt;&lt;a href=&#34;#cb7-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Lisätään aineistoon ostosummat&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-17&#34;&gt;&lt;a href=&#34;#cb7-17&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(keskukset, &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(helsingin_ostot6)[,&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;], &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;teksti&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;kunta_name&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb7-18&#34;&gt;&lt;a href=&#34;#cb7-18&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-19&#34;&gt;&lt;a href=&#34;#cb7-19&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Lasketaan Helsingin ja kuntakeskusten välinen välimatka (km)&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-20&#34;&gt;&lt;a href=&#34;#cb7-20&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;NULL&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-21&#34;&gt;&lt;a href=&#34;#cb7-21&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;st_distance&lt;/span&gt;(keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom, &lt;span class=&#34;at&#34;&gt;y=&lt;/span&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom[&lt;span class=&#34;dv&#34;&gt;210&lt;/span&gt;,])&lt;/span&gt;
&lt;span id=&#34;cb7-22&#34;&gt;&lt;a href=&#34;#cb7-22&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.integer&lt;/span&gt;(keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;1000&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb7-23&#34;&gt;&lt;a href=&#34;#cb7-23&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-24&#34;&gt;&lt;a href=&#34;#cb7-24&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset_linestring &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;st_cast&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;st_union&lt;/span&gt;(keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom[&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;,], keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom[&lt;span class=&#34;dv&#34;&gt;210&lt;/span&gt;,], &lt;span class=&#34;at&#34;&gt;by_feature=&lt;/span&gt;&lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;),&lt;span class=&#34;st&#34;&gt;&amp;quot;LINESTRING&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb7-25&#34;&gt;&lt;a href=&#34;#cb7-25&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;cf&#34;&gt;for&lt;/span&gt; (i &lt;span class=&#34;cf&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;nrow&lt;/span&gt;(keskukset)) {&lt;/span&gt;
&lt;span id=&#34;cb7-26&#34;&gt;&lt;a href=&#34;#cb7-26&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  keskukset_linestring[i] &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;st_cast&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;st_union&lt;/span&gt;(keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom[i,], keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom[&lt;span class=&#34;dv&#34;&gt;210&lt;/span&gt;,], &lt;span class=&#34;at&#34;&gt;by_feature=&lt;/span&gt;&lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;),&lt;span class=&#34;st&#34;&gt;&amp;quot;LINESTRING&amp;quot;&lt;/span&gt;) &lt;/span&gt;
&lt;span id=&#34;cb7-27&#34;&gt;&lt;a href=&#34;#cb7-27&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;}&lt;/span&gt;
&lt;span id=&#34;cb7-28&#34;&gt;&lt;a href=&#34;#cb7-28&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-29&#34;&gt;&lt;a href=&#34;#cb7-29&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset_helsinkiin &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; keskukset&lt;/span&gt;
&lt;span id=&#34;cb7-30&#34;&gt;&lt;a href=&#34;#cb7-30&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-31&#34;&gt;&lt;a href=&#34;#cb7-31&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset_helsinkiin&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; keskukset_linestring&lt;/span&gt;
&lt;span id=&#34;cb7-32&#34;&gt;&lt;a href=&#34;#cb7-32&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-33&#34;&gt;&lt;a href=&#34;#cb7-33&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset_helsinkiin &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; keskukset_helsinkiin[&lt;span class=&#34;fu&#34;&gt;which&lt;/span&gt;(keskukset_helsinkiin&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;teksti &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; kunnat_top20_summat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;kunta_name),]&lt;/span&gt;
&lt;span id=&#34;cb7-34&#34;&gt;&lt;a href=&#34;#cb7-34&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-35&#34;&gt;&lt;a href=&#34;#cb7-35&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Määritetään viivojen paksuudet siten, että Helsinki, Espoo ja Vantaa saavat 0&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-36&#34;&gt;&lt;a href=&#34;#cb7-36&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# ja siitä eteenpäin 4, 3, 2, 2, 1, 1...&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-37&#34;&gt;&lt;a href=&#34;#cb7-37&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;() &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-38&#34;&gt;&lt;a href=&#34;#cb7-38&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;data =&lt;/span&gt; helsingin_ostot6, &lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; kunta_summa), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-39&#34;&gt;&lt;a href=&#34;#cb7-39&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Helsingin ostot, €&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-40&#34;&gt;&lt;a href=&#34;#cb7-40&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;scale_fill_gradient2&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;n.breaks =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;6&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;trans =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;log10&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb7-41&#34;&gt;&lt;a href=&#34;#cb7-41&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;data =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;arrange&lt;/span&gt;(keskukset_helsinkiin, &lt;span class=&#34;fu&#34;&gt;desc&lt;/span&gt;(kunta_summa)), &lt;span class=&#34;at&#34;&gt;col=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;size=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;dv&#34;&gt;0&lt;/span&gt;,&lt;span class=&#34;dv&#34;&gt;0&lt;/span&gt;,&lt;span class=&#34;dv&#34;&gt;0&lt;/span&gt;,&lt;span class=&#34;dv&#34;&gt;4&lt;/span&gt;,&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;,&lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;,&lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;,&lt;span class=&#34;fu&#34;&gt;rep&lt;/span&gt;(&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;13&lt;/span&gt;)))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2021/04/helsinki-ostodata/index.fi_files/figure-html/flowmap-1.png&#34; width=&#34;80%&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Eri muuttujia yhdisteltäessä on hyödyllistä säilyttää luotavien muuttujien luokkana “sf”, mistä johtuen yllä olevassa esimerkissä käytettiin sekä left_join että right_join funktioita. Tämä johtuu siitä, että muuten &lt;a href=&#34;https://github.com/tidyverse/ggplot2/issues/3391#issuecomment-508527985&#34;&gt;ggplot2 ei välttämättä osaa löytää geom-saraketta&lt;/a&gt;, jossa karttojen piirtämiseen tarvittavat koordinaatit sijaitsevat.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;kunnan-etäisyyden-ja-kunnassa-sijaitsevien-yritysten-lukumäärän-vaikutus&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Kunnan etäisyyden ja kunnassa sijaitsevien yritysten lukumäärän vaikutus&lt;/h3&gt;
&lt;p&gt;Tarkastellaan lopuksi yksinkertaisilla sirontakuvioihin sovitetuilla suorilla, miten kunnassa sijaitsevien yritysten lukumäärä sekä kunnan etäisyys Helsingistä vaikuttaa Helsingin kaupungin tekemien ostojen suuruuteen.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb8&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb8-1&#34;&gt;&lt;a href=&#34;#cb8-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(sf)&lt;/span&gt;
&lt;span id=&#34;cb8-2&#34;&gt;&lt;a href=&#34;#cb8-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-3&#34;&gt;&lt;a href=&#34;#cb8-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Ladataan Statfinista yritysten lukumäärä Suomen kunnissa&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-4&#34;&gt;&lt;a href=&#34;#cb8-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# /PXWeb/api/v1/fi/StatFin/yri/alyr/statfin_alyr_pxt_11dc.px&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-5&#34;&gt;&lt;a href=&#34;#cb8-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(pxweb)&lt;/span&gt;
&lt;span id=&#34;cb8-6&#34;&gt;&lt;a href=&#34;#cb8-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(fuzzyjoin)&lt;/span&gt;
&lt;span id=&#34;cb8-7&#34;&gt;&lt;a href=&#34;#cb8-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-8&#34;&gt;&lt;a href=&#34;#cb8-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;pxweb_query_list &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb8-9&#34;&gt;&lt;a href=&#34;#cb8-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;list&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Vuosi&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;2019&amp;quot;&lt;/span&gt;),&lt;/span&gt;
&lt;span id=&#34;cb8-10&#34;&gt;&lt;a href=&#34;#cb8-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;       &lt;span class=&#34;st&#34;&gt;&amp;quot;Kunta&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;),&lt;/span&gt;
&lt;span id=&#34;cb8-11&#34;&gt;&lt;a href=&#34;#cb8-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;       &lt;span class=&#34;st&#34;&gt;&amp;quot;Tiedot&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Tplukumaara2&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb8-12&#34;&gt;&lt;a href=&#34;#cb8-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-13&#34;&gt;&lt;a href=&#34;#cb8-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Download data &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-14&#34;&gt;&lt;a href=&#34;#cb8-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;px_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb8-15&#34;&gt;&lt;a href=&#34;#cb8-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;pxweb_get&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;url =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;https://pxnet2.stat.fi/PXWeb/api/v1/fi/StatFin/yri/alyr/statfin_alyr_pxt_11dc.px&amp;quot;&lt;/span&gt;,&lt;/span&gt;
&lt;span id=&#34;cb8-16&#34;&gt;&lt;a href=&#34;#cb8-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;            &lt;span class=&#34;at&#34;&gt;query =&lt;/span&gt; pxweb_query_list)&lt;/span&gt;
&lt;span id=&#34;cb8-17&#34;&gt;&lt;a href=&#34;#cb8-17&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-18&#34;&gt;&lt;a href=&#34;#cb8-18&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Convert to data.frame &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-19&#34;&gt;&lt;a href=&#34;#cb8-19&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;px_data_frame &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(px_data, &lt;span class=&#34;at&#34;&gt;column.name.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;variable.value.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb8-20&#34;&gt;&lt;a href=&#34;#cb8-20&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-21&#34;&gt;&lt;a href=&#34;#cb8-21&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Yhdistetään dataa&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-22&#34;&gt;&lt;a href=&#34;#cb8-22&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;yritykset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x =&lt;/span&gt; px_data_frame, &lt;span class=&#34;at&#34;&gt;y =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(helsingin_ostot5), &lt;span class=&#34;at&#34;&gt;by=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Kunta&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;kunta_name&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb8-23&#34;&gt;&lt;a href=&#34;#cb8-23&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-24&#34;&gt;&lt;a href=&#34;#cb8-24&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Poistetaan &amp;quot;kunnat&amp;quot; KOKO SUOMI, Tuntematon ja kunnat joista ei ole tilauksia&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-25&#34;&gt;&lt;a href=&#34;#cb8-25&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;yritykset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; yritykset[&lt;span class=&#34;fu&#34;&gt;which&lt;/span&gt;(&lt;span class=&#34;sc&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;is.na&lt;/span&gt;(yritykset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;kunta_summa)),]&lt;/span&gt;
&lt;span id=&#34;cb8-26&#34;&gt;&lt;a href=&#34;#cb8-26&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Poistetaan kuntarajojen geometria&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-27&#34;&gt;&lt;a href=&#34;#cb8-27&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;yritykset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(yritykset)&lt;/span&gt;
&lt;span id=&#34;cb8-28&#34;&gt;&lt;a href=&#34;#cb8-28&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;yritykset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; yritykset[,&lt;span class=&#34;sc&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;5&lt;/span&gt;]&lt;/span&gt;
&lt;span id=&#34;cb8-29&#34;&gt;&lt;a href=&#34;#cb8-29&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-30&#34;&gt;&lt;a href=&#34;#cb8-30&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Ladataan kuntakeskusten sijaintitiedot&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-31&#34;&gt;&lt;a href=&#34;#cb8-31&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; geofi&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;municipality_central_localities&lt;/span&gt;
&lt;span id=&#34;cb8-32&#34;&gt;&lt;a href=&#34;#cb8-32&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-33&#34;&gt;&lt;a href=&#34;#cb8-33&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Lisätään aineistoon ostosummat&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-34&#34;&gt;&lt;a href=&#34;#cb8-34&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(keskukset, &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(helsingin_ostot6)[,&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;], &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;teksti&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;kunta_name&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb8-35&#34;&gt;&lt;a href=&#34;#cb8-35&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-36&#34;&gt;&lt;a href=&#34;#cb8-36&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Lasketaan Helsingin ja kuntakeskusten välinen välimatka (km)&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-37&#34;&gt;&lt;a href=&#34;#cb8-37&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;NULL&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-38&#34;&gt;&lt;a href=&#34;#cb8-38&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;st_distance&lt;/span&gt;(keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom, &lt;span class=&#34;at&#34;&gt;y=&lt;/span&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;geom[&lt;span class=&#34;dv&#34;&gt;210&lt;/span&gt;,])&lt;/span&gt;
&lt;span id=&#34;cb8-39&#34;&gt;&lt;a href=&#34;#cb8-39&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.integer&lt;/span&gt;(keskukset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;1000&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb8-40&#34;&gt;&lt;a href=&#34;#cb8-40&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-41&#34;&gt;&lt;a href=&#34;#cb8-41&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Valitaan ainoastaan tarvittavat sarakkeet&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-42&#34;&gt;&lt;a href=&#34;#cb8-42&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;keskukset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; keskukset &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb8-43&#34;&gt;&lt;a href=&#34;#cb8-43&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;select&lt;/span&gt;(teksti, distance_to_hel, geom)&lt;/span&gt;
&lt;span id=&#34;cb8-44&#34;&gt;&lt;a href=&#34;#cb8-44&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;/span&gt;
&lt;span id=&#34;cb8-45&#34;&gt;&lt;a href=&#34;#cb8-45&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Hyödynnetään fuzzyjoin-pakettia, jotta kuntien nimiä ei tarvitse erikseen siistiä&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-46&#34;&gt;&lt;a href=&#34;#cb8-46&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;yritykset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; fuzzyjoin&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;regex_left_join&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x =&lt;/span&gt; yritykset, &lt;span class=&#34;at&#34;&gt;y =&lt;/span&gt; keskukset, &lt;span class=&#34;at&#34;&gt;by=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Kunta&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;teksti&amp;quot;&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;ignore_case =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb8-47&#34;&gt;&lt;a href=&#34;#cb8-47&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-48&#34;&gt;&lt;a href=&#34;#cb8-48&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Poistetaan aineistosta outlier, Helsinki&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-49&#34;&gt;&lt;a href=&#34;#cb8-49&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;yritykset &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; yritykset[&lt;span class=&#34;sc&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;which&lt;/span&gt;(yritykset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;Kunta &lt;span class=&#34;sc&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Helsinki&amp;quot;&lt;/span&gt;),]&lt;/span&gt;
&lt;span id=&#34;cb8-50&#34;&gt;&lt;a href=&#34;#cb8-50&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-51&#34;&gt;&lt;a href=&#34;#cb8-51&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Piirretään scatter-plotit, joihin on sovitettu LOESS-menetelmällä tasoitettu sovitekäyrä&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-52&#34;&gt;&lt;a href=&#34;#cb8-52&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;par&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;mfrow=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;,&lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb8-53&#34;&gt;&lt;a href=&#34;#cb8-53&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;scatter.smooth&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x=&lt;/span&gt;yritykset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Yritysten toimipaikat (lkm)&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;y=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;log10&lt;/span&gt;(yritykset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;kunta_summa), &lt;span class=&#34;at&#34;&gt;span =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;5&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb8-54&#34;&gt;&lt;a href=&#34;#cb8-54&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;scatter.smooth&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;x=&lt;/span&gt;yritykset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;distance_to_hel, &lt;span class=&#34;at&#34;&gt;y=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;log10&lt;/span&gt;(yritykset&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;kunta_summa))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2021/04/helsinki-ostodata/index.fi_files/figure-html/scatterplotit_ja_regressiot-1.png&#34; width=&#34;80%&#34; /&gt;&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb9&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb9-1&#34;&gt;&lt;a href=&#34;#cb9-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Vertaillaan kahta eri regressiomallia&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb9-2&#34;&gt;&lt;a href=&#34;#cb9-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;fit1 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;lm&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;log10&lt;/span&gt;(kunta_summa) &lt;span class=&#34;sc&#34;&gt;~&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Yritysten toimipaikat (lkm)&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;data=&lt;/span&gt;yritykset)&lt;/span&gt;
&lt;span id=&#34;cb9-3&#34;&gt;&lt;a href=&#34;#cb9-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;fit2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;lm&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;log10&lt;/span&gt;(kunta_summa) &lt;span class=&#34;sc&#34;&gt;~&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Yritysten toimipaikat (lkm)&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; distance_to_hel, &lt;span class=&#34;at&#34;&gt;data=&lt;/span&gt;yritykset)&lt;/span&gt;
&lt;span id=&#34;cb9-4&#34;&gt;&lt;a href=&#34;#cb9-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb9-5&#34;&gt;&lt;a href=&#34;#cb9-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Haluttaessa voidaan katsoa myös regressiosuorat&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb9-6&#34;&gt;&lt;a href=&#34;#cb9-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# abline(lm(log10(kunta_summa) ~ `Yritysten toimipaikat (lkm)`, data=yritykset))&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb9-7&#34;&gt;&lt;a href=&#34;#cb9-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# abline(lm(log10(kunta_summa) ~ `Yritysten toimipaikat (lkm)` + distance_to_hel, data=yritykset))&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb9-8&#34;&gt;&lt;a href=&#34;#cb9-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb9-9&#34;&gt;&lt;a href=&#34;#cb9-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;summary&lt;/span&gt;(fit1)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre class=&#34;img-fluid&#34;&gt;&lt;code&gt;## 
## Call:
## lm(formula = log10(kunta_summa) ~ `Yritysten toimipaikat (lkm)`, 
##     data = yritykset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2431 -0.7991  0.0834  0.9631  2.4039 
## 
## Coefficients:
##                                 Estimate Std. Error t value            Pr(&amp;gt;|t|)
## (Intercept)                   4.75557723 0.07845464   60.62 &amp;lt;0.0000000000000002
## `Yritysten toimipaikat (lkm)` 0.00039387 0.00003411   11.55 &amp;lt;0.0000000000000002
##                                  
## (Intercept)                   ***
## `Yritysten toimipaikat (lkm)` ***
## ---
## Signif. codes:  0 &amp;#39;***&amp;#39; 0.001 &amp;#39;**&amp;#39; 0.01 &amp;#39;*&amp;#39; 0.05 &amp;#39;.&amp;#39; 0.1 &amp;#39; &amp;#39; 1
## 
## Residual standard error: 1.159 on 294 degrees of freedom
## Multiple R-squared:  0.312,  Adjusted R-squared:  0.3097 
## F-statistic: 133.3 on 1 and 294 DF,  p-value: &amp;lt; 0.00000000000000022&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb11&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb11-1&#34;&gt;&lt;a href=&#34;#cb11-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;summary&lt;/span&gt;(fit2)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre class=&#34;img-fluid&#34;&gt;&lt;code&gt;## 
## Call:
## lm(formula = log10(kunta_summa) ~ `Yritysten toimipaikat (lkm)` + 
##     distance_to_hel, data = yritykset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.3314 -0.7943  0.1029  0.9196  2.7113 
## 
## Coefficients:
##                                  Estimate  Std. Error t value
## (Intercept)                    5.24186205  0.13519748  38.772
## `Yritysten toimipaikat (lkm)`  0.00036832  0.00003366  10.943
## distance_to_hel               -0.00158104  0.00036166  -4.372
##                                           Pr(&amp;gt;|t|)    
## (Intercept)                   &amp;lt; 0.0000000000000002 ***
## `Yritysten toimipaikat (lkm)` &amp;lt; 0.0000000000000002 ***
## distance_to_hel                          0.0000172 ***
## ---
## Signif. codes:  0 &amp;#39;***&amp;#39; 0.001 &amp;#39;**&amp;#39; 0.01 &amp;#39;*&amp;#39; 0.05 &amp;#39;.&amp;#39; 0.1 &amp;#39; &amp;#39; 1
## 
## Residual standard error: 1.126 on 292 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.3543, Adjusted R-squared:  0.3499 
## F-statistic: 80.13 on 2 and 292 DF,  p-value: &amp;lt; 0.00000000000000022&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Huomataan, että kunnassa sijaitsevien yritysten lukumäärä ja kunnan etäisyys Helsingistä ovat yhteydessä siihen, kuinka paljon ostoja Helsingin kaupunki tekee kunnassa sijaitsevilta yrityksiltä. Jo visuaalisesta tarkastelusta kuitenkin huomaamme, että myös hieman kauempana sijaitsevista ja pienemmistä kunnista (esimerkiksi Kemi ja Padasjoki) tulevien yritysten on mahdollista myydä palveluitaan Helsingin kaupungille.&lt;/p&gt;
&lt;p&gt;Kunnan yritystiheyden kasvattaminen on hidasta ja sijainnin muuttaminen mahdotonta, joten kuntien elinvoimaisuutta pohtivien poliitikkojen, viranhaltijoiden ja konsulttien kannattaa tarkastella sitä, mikä erottaa Kemin ja Padasjoen kaltaisten kuntien yritykset muista. Helsingin kaupungin ostot -aineisto onkin otollinen tämän kaltaisen yritystason tarkastelun lähtöpisteeksi.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;lopuksi&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Lopuksi&lt;/h3&gt;
&lt;p&gt;Tieto eri kunnissa sijaitsevien yritysten menestymisestä Helsingin kaupungin tarjouskilpailuissa on mielenkiintoista monesta eri näkökulmasta. Huomaamme, että yrityksen sijainnilla on merkitystä, mutta aineisto ei yksinään vastaa kysymykseen, miksi näin on.&lt;/p&gt;
&lt;p&gt;Asiaa voitaisiin selittää pk-seudulla toimivien yritysten ja Helsingin kaupungin hankinnoista päättävien ihmisten verkostoilla, muualla Suomessa sijaitsevien yritysten korkeammilla transaktiokustannuksilla ja vähäisemmällä informaatiolla. Myös se, että suurin osa yrityksistä on keskittynyt Suomessa pääkaupunkiseudulle (ks. &lt;a href=&#34;https://kaks.fi/wp-content/uploads/2019/04/helsinki-vs-muu-suomi_manninen_tolli.pdf&#34;&gt;Manninen &amp;amp; Tölli 2019&lt;/a&gt;) voi selittää sitä, miksi suuri osa Helsingin kaupungin hankinnoistakin keskittyy pääkaupunkiseudulle. Muiden kaupunkien tapauksissa merkittävä osa ostoista saattaisi tulla pääkaupunkiseudulta ja Helsingistä nimenomaan tästä syystä.&lt;/p&gt;
&lt;p&gt;Viime kädessä kyse ei tietenkään ole pelkästään Helsinki vs. muu Suomi -asetelmasta vaan siitä, millaisia todellisia tai kuviteltuja esteitä suomalaisilla yrityksillä on laajemmassa mittakaavassa osallistua koko EU:n sisämarkkina-alueen toimintaan. Vaikka EU:n sisämarkkinat ovat teoriassa avoimet, kaupankäynnin esteet tulevat eri tavalla vastaan, kun yhteistä kieltä ei välttämättä ole ja kansalliset lainsäädännöt vaihtelevat. Suomi liittyi EU:n jäseneksi vuonna 1995, mutta vielä yli 25 vuotta myöhemmin suomalaisten pk-yritysten valmiuksista osallistua sisämarkkinoille kannetaan huolta (ks. esim. &lt;a href=&#34;https://teknologiateollisuus.fi/fi/ajankohtaista/pk-yrityksille-tukea-eun-kotimarkkinoille-paasemiseksi-jos-olisin-ursula-von-der&#34;&gt;Teknologiateollisuus 2021&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Ulkomaankaupan tilastoihin liittyvää aineistoa ja asiaan liittyviä analyyseja on saatavilla runsaasti eri lähteistä, joten tähän aihepiiriin tuskin pureudutaan tämän blogin kontekstissa - paitsi jos asia saadaan yhdistettyä jonkin R-paketin yhteyteen.&lt;/p&gt;
&lt;/div&gt;
</description> 
  </item>
  
<item>
  <title>PXWeb-tilastot kartalla</title>
  <link>http://ropengov.org/fi/2021/01/pxweb_geofi/</link>
  <pubDate>Thu, 28 Jan 2021 10:02:45 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2021/01/pxweb_geofi/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/2021/01/pxweb_geofi/index.fi_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;style type=&#34;text/css&#34;&gt;
pre &gt; code.sourceCode { white-space: pre; position: relative; }
pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre &gt; code.sourceCode { white-space: pre-wrap; }
pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code &gt; span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code &gt; span &gt; a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {  background-color: #f8f8f8; }
@media screen {
pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ef2929; } /* Alert */
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #c4a000; } /* Attribute */
code span.bn { color: #0000cf; } /* BaseN */
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4e9a06; } /* Char */
code span.cn { color: #000000; } /* Constant */
code span.co { color: #8f5902; font-style: italic; } /* Comment */
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
code span.dt { color: #204a87; } /* DataType */
code span.dv { color: #0000cf; } /* DecVal */
code span.er { color: #a40000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #0000cf; } /* Float */
code span.fu { color: #000000; } /* Function */
code span.im { } /* Import */
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
code span.ot { color: #8f5902; } /* Other */
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
code span.sc { color: #000000; } /* SpecialChar */
code span.ss { color: #4e9a06; } /* SpecialString */
code span.st { color: #4e9a06; } /* String */
code span.va { color: #000000; } /* Variable */
code span.vs { color: #4e9a06; } /* VerbatimString */
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
&lt;/style&gt;


&lt;p&gt;Kuulen usein vaikeuksista esittää Tilastokeskuksen &lt;a href=&#34;https://pxnet2.stat.fi/PXWeb/pxweb/fi/&#34;&gt;PxWeb&lt;/a&gt;-rajapinnan kautta jaettavia tilastoaineistoja kartalla. &lt;a href=&#34;https://ropengov.github.io/&#34;&gt;ropengov&lt;/a&gt;-projektissa on kehitetty R-kielen työkaluja sekä &lt;a href=&#34;https://cran.r-project.org/web/packages/pxweb/index.html&#34;&gt;pxweb&lt;/a&gt;-rajapinnan hyödyntämiseen että Tilastokeskuksen &lt;a href=&#34;https://www.stat.fi/org/avoindata/paikkatietoaineistot.html&#34;&gt;paikkatietorajapinnan&lt;/a&gt; hyödyntämiseen (&lt;a href=&#34;https://ropengov.github.io/geofi/&#34;&gt;geofi&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Tässä esimerkissä näytetään miten teet karttoja R-ohjelmalla PxWeb-rajapinnan datoista sekä kunta- että postinumeroaluepohjaisten aluejakojen mukaisesti.&lt;/p&gt;
&lt;div id=&#34;väkiluku-kuntatasolla-vuoden-2020-aluejaolla&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Väkiluku kuntatasolla vuoden 2020 aluejaolla&lt;/h2&gt;
&lt;p&gt;Tässä esimerkissä haemme viimeisimmän kuntatason tiedon &lt;em&gt;väkiluvusta&lt;/em&gt; vuoden 2020 aluejaolla. Tieto löytyy &lt;a href=&#34;https://pxnet2.stat.fi/PXWeb/pxweb/fi/Kuntien_avainluvut/Kuntien_avainluvut__2020/kuntien_avainluvut_2020_viimeisin.px/&#34;&gt;kuntien avainluvut&lt;/a&gt; osiosta.&lt;/p&gt;
&lt;p&gt;Alla olevassa giffistä saat käsityksen mitä prosessi edellyttää:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;vakiluku.gif&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Aluksi siis ladataan paketit sekä datojen hakemiseen, käsittelyyn että visualisointiin.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb1&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb1-1&#34;&gt;&lt;a href=&#34;#cb1-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# datat&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-2&#34;&gt;&lt;a href=&#34;#cb1-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(pxweb) &lt;span class=&#34;co&#34;&gt;# Tilastokeskuksen pxweb-rajapinta&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-3&#34;&gt;&lt;a href=&#34;#cb1-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(geofi) &lt;span class=&#34;co&#34;&gt;# Tilastokeskuksen wfs-rajapinta&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-4&#34;&gt;&lt;a href=&#34;#cb1-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# käsittely &amp;amp; siivoaminen&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-5&#34;&gt;&lt;a href=&#34;#cb1-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(dplyr) &lt;/span&gt;
&lt;span id=&#34;cb1-6&#34;&gt;&lt;a href=&#34;#cb1-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(tidyr)&lt;/span&gt;
&lt;span id=&#34;cb1-7&#34;&gt;&lt;a href=&#34;#cb1-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(janitor)&lt;/span&gt;
&lt;span id=&#34;cb1-8&#34;&gt;&lt;a href=&#34;#cb1-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# visualisointi&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-9&#34;&gt;&lt;a href=&#34;#cb1-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(ggplot2)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sitten haetaan taajama-aste -data pxweb-rajapinnasta ja kuntajat wfs-rajapinnasta, ja liitetään data yhteen.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb2&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb2-1&#34;&gt;&lt;a href=&#34;#cb2-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# WFS-data&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-2&#34;&gt;&lt;a href=&#34;#cb2-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;muni20 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;get_municipalities&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2020&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb2-3&#34;&gt;&lt;a href=&#34;#cb2-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-4&#34;&gt;&lt;a href=&#34;#cb2-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# PXWEB-data&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-5&#34;&gt;&lt;a href=&#34;#cb2-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;pxweb_query_list &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb2-6&#34;&gt;&lt;a href=&#34;#cb2-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;list&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Alue 2020&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;),&lt;/span&gt;
&lt;span id=&#34;cb2-7&#34;&gt;&lt;a href=&#34;#cb2-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;       &lt;span class=&#34;st&#34;&gt;&amp;quot;Tiedot&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;M411&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb2-8&#34;&gt;&lt;a href=&#34;#cb2-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-9&#34;&gt;&lt;a href=&#34;#cb2-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Download data &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-10&#34;&gt;&lt;a href=&#34;#cb2-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;px_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb2-11&#34;&gt;&lt;a href=&#34;#cb2-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;pxweb_get&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;url =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;http://pxnet2.stat.fi/PXWeb/api/v1/fi/Kuntien_avainluvut/2020/kuntien_avainluvut_2020_viimeisin.px&amp;quot;&lt;/span&gt;,&lt;/span&gt;
&lt;span id=&#34;cb2-12&#34;&gt;&lt;a href=&#34;#cb2-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;            &lt;span class=&#34;at&#34;&gt;query =&lt;/span&gt; pxweb_query_list)&lt;/span&gt;
&lt;span id=&#34;cb2-13&#34;&gt;&lt;a href=&#34;#cb2-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-14&#34;&gt;&lt;a href=&#34;#cb2-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Convert to data.frame &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-15&#34;&gt;&lt;a href=&#34;#cb2-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;px_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as_tibble&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(px_data, &lt;span class=&#34;at&#34;&gt;column.name.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;variable.value.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb2-16&#34;&gt;&lt;a href=&#34;#cb2-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-17&#34;&gt;&lt;a href=&#34;#cb2-17&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;map &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(muni20,&lt;/span&gt;
&lt;span id=&#34;cb2-18&#34;&gt;&lt;a href=&#34;#cb2-18&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                 &lt;span class=&#34;fu&#34;&gt;clean_names&lt;/span&gt;(px_data), &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;name_fi&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;alue_2020&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sitten tehdään kartta, jossa täyttövärinä käytetään muuttujaa kuntien_avainluvut, joka siis yhtä kuin &lt;em&gt;Väkiluku, 2019&lt;/em&gt;.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb3&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb3-1&#34;&gt;&lt;a href=&#34;#cb3-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(map, &lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; kuntien_avainluvut)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2021/01/pxweb_geofi/index.fi_files/figure-html/plot1-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;div id=&#34;väkiluku-maakuntatasolla&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Väkiluku maakuntatasolla&lt;/h3&gt;
&lt;p&gt;`geofi’-paketin kuntaluokitusavaimen avulla voi aggregoida datan kuntatasolta ylöspäin &lt;a href=&#34;https://data.stat.fi/api/classifications/v2/#/classifications&#34;&gt;Tilastokeskuksen luokittelurajapinnan&lt;/a&gt; tietojen avulla. Seuraavassa koodikimpaleessa väkiluku aggregoidaan maakuntatasolle.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb4&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb4-1&#34;&gt;&lt;a href=&#34;#cb4-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;mk_map &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; map &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-2&#34;&gt;&lt;a href=&#34;#cb4-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(maakunta_name_fi) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-3&#34;&gt;&lt;a href=&#34;#cb4-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;summarise&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;kuntien_avainluvut =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(kuntien_avainluvut))&lt;/span&gt;
&lt;span id=&#34;cb4-4&#34;&gt;&lt;a href=&#34;#cb4-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-5&#34;&gt;&lt;a href=&#34;#cb4-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(mk_map) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-6&#34;&gt;&lt;a href=&#34;#cb4-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; kuntien_avainluvut)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-7&#34;&gt;&lt;a href=&#34;#cb4-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf_text&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;label =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;paste&lt;/span&gt;(maakunta_name_fi, &lt;span class=&#34;st&#34;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;&lt;/span&gt;,kuntien_avainluvut)), &lt;/span&gt;
&lt;span id=&#34;cb4-8&#34;&gt;&lt;a href=&#34;#cb4-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;               &lt;span class=&#34;at&#34;&gt;size =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;, &lt;/span&gt;
&lt;span id=&#34;cb4-9&#34;&gt;&lt;a href=&#34;#cb4-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;               &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2021/01/pxweb_geofi/index.fi_files/figure-html/maakuntakartta-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;väkiluku-postinumeroalueittain&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Väkiluku postinumeroalueittain&lt;/h2&gt;
&lt;p&gt;Postinumeroaluetasolla prosessi on pitkälti sama. Ensin haetaan datat ja yhdistellään&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb5&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb5-1&#34;&gt;&lt;a href=&#34;#cb5-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;zipcodes &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;get_zipcodes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2020&lt;/span&gt;) &lt;/span&gt;
&lt;span id=&#34;cb5-2&#34;&gt;&lt;a href=&#34;#cb5-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-3&#34;&gt;&lt;a href=&#34;#cb5-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;pxweb_query_list &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb5-4&#34;&gt;&lt;a href=&#34;#cb5-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;list&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Postinumeroalue&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;),&lt;/span&gt;
&lt;span id=&#34;cb5-5&#34;&gt;&lt;a href=&#34;#cb5-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                           &lt;span class=&#34;st&#34;&gt;&amp;quot;Tiedot&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;he_vakiy&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb5-6&#34;&gt;&lt;a href=&#34;#cb5-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-7&#34;&gt;&lt;a href=&#34;#cb5-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;px_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb5-8&#34;&gt;&lt;a href=&#34;#cb5-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt; &lt;span class=&#34;fu&#34;&gt;pxweb_get&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;url =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;http://pxnet2.stat.fi/PXWeb/api/v1/fi/Postinumeroalueittainen_avoin_tieto/2020/paavo_pxt_12ey.px&amp;quot;&lt;/span&gt;,&lt;/span&gt;
&lt;span id=&#34;cb5-9&#34;&gt;&lt;a href=&#34;#cb5-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;           &lt;span class=&#34;at&#34;&gt;query =&lt;/span&gt; pxweb_query_list)&lt;/span&gt;
&lt;span id=&#34;cb5-10&#34;&gt;&lt;a href=&#34;#cb5-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;paavo &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as_tibble&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(px_data, &lt;/span&gt;
&lt;span id=&#34;cb5-11&#34;&gt;&lt;a href=&#34;#cb5-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                                       &lt;span class=&#34;at&#34;&gt;column.name.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;, &lt;/span&gt;
&lt;span id=&#34;cb5-12&#34;&gt;&lt;a href=&#34;#cb5-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                                       &lt;span class=&#34;at&#34;&gt;variable.value.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb5-13&#34;&gt;&lt;a href=&#34;#cb5-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;clean_names&lt;/span&gt;() &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb5-14&#34;&gt;&lt;a href=&#34;#cb5-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;postinumeroalue =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sub&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot; .+$&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;, postinumeroalue))&lt;/span&gt;
&lt;span id=&#34;cb5-15&#34;&gt;&lt;a href=&#34;#cb5-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-16&#34;&gt;&lt;a href=&#34;#cb5-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-17&#34;&gt;&lt;a href=&#34;#cb5-17&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;map &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(zipcodes, paavo, &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;posti_alue&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;postinumeroalue&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb5-18&#34;&gt;&lt;a href=&#34;#cb5-18&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(map) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb5-19&#34;&gt;&lt;a href=&#34;#cb5-19&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; asukkaat_yhteensa_2018_he), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2021/01/pxweb_geofi/index.fi_files/figure-html/zipcode_map-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
</description> 
  </item>
  
<item>
  <title>Turun pienaluetilastojen visualisointi R:ssä</title>
  <link>http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/</link>
  <pubDate>Wed, 23 Dec 2020 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;style type=&#34;text/css&#34;&gt;
pre &gt; code.sourceCode { white-space: pre; position: relative; }
pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre &gt; code.sourceCode { white-space: pre-wrap; }
pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code &gt; span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code &gt; span &gt; a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {  background-color: #f8f8f8; }
@media screen {
pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ef2929; } /* Alert */
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #c4a000; } /* Attribute */
code span.bn { color: #0000cf; } /* BaseN */
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4e9a06; } /* Char */
code span.cn { color: #000000; } /* Constant */
code span.co { color: #8f5902; font-style: italic; } /* Comment */
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
code span.dt { color: #204a87; } /* DataType */
code span.dv { color: #0000cf; } /* DecVal */
code span.er { color: #a40000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #0000cf; } /* Float */
code span.fu { color: #000000; } /* Function */
code span.im { } /* Import */
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
code span.ot { color: #8f5902; } /* Other */
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
code span.sc { color: #000000; } /* SpecialChar */
code span.ss { color: #4e9a06; } /* SpecialString */
code span.st { color: #4e9a06; } /* String */
code span.va { color: #000000; } /* Variable */
code span.vs { color: #4e9a06; } /* VerbatimString */
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
&lt;/style&gt;


&lt;div id=&#34;yleistä&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Yleistä&lt;/h2&gt;
&lt;p&gt;Turun kaupunki avasi &lt;a href=&#34;https://data.lounaistieto.fi/data/fi/dataset/turun-kaupungin-pienaluetilastoja&#34;&gt;syksyllä 2020 pienaluetilastoja&lt;/a&gt;, jotka antavat jo ennestään saatavilla olleiden &lt;a href=&#34;https://www.stat.fi/org/avoindata/paikkatietoaineistot/paavo.html&#34;&gt;postinumeroaluekohtaisten tilastojen&lt;/a&gt; ohella mahdollisuuden tarkastella &lt;a href=&#34;https://www.avoindata.fi/data/fi/dataset/turun-kaupungin-aluejakoja&#34;&gt;Turun kaupungin alueita&lt;/a&gt; hienojakoisemmin kuin aiemmin on ollut mahdollista.&lt;/p&gt;
&lt;p&gt;Tietoa on kirjoitushetkellä saatavissa Turussa sijaitsevista rakennuksista, asunnoista ja vapaa-ajanasunnoista (esim. hallintaperuste, valmistumisvuosi, kerrosala), muuttoliikkeestä ja väestönmuutoksista (esim. syntymät, kuolemat, muutto kuntaan ja kunnasta pois) ja väestörakenteesta (asukkaiden ikä, sukupuoli, kieli, veronalaiset tulot).&lt;/p&gt;
&lt;p&gt;Ainakin toistaiseksi Turun kaupunki tarjoaa valmiissa muodossa ainoastaan pienaluetilastoja sekä koko kaupungin kattavia tilastoja. Kaupunkitasoista dataa on saanut jo pitkään Tilastokeskuksen sivuilta, joten varsinainen uutuusarvo liittyykin nimenomaan pienaluetilastoihin. Pienaluetilastoista voidaan tarvittaessa aggregoida ylemmän tason alueita kuten tilastoalueita ja suuralueita.&lt;/p&gt;
&lt;p&gt;Pienaluetilastojen sisältämä data on &lt;a href=&#34;https://ah.turku.fi/kh/2020/0302005x/4046774.htm&#34;&gt;Tilastokeskuksen asettamien ehtojen&lt;/a&gt; vuoksi rajattu siten, että tietoja ei julkisteta niiltä alueilta, joilla asuu alle 100 henkilöä tai alle 100 asuntokuntaa / perhettä, käy töissä alle 100 henkilöä tai joilla sijaitsee alle 10 asuinrakennusta.&lt;/p&gt;
&lt;p&gt;Suurin osa julkaistuista pienaluedatoista on itse asiassa aikasarjadataa, joten mielenkiintoisten ajallisten muutosten tarkastelu on mahdollista. Ilmiselvästi mielenkiinnon kohteena olevien alueiden tulisi kuitenkin pysyä suhteellisen muuttumattomina, jotta vertailu olisi mielekästä. Tilastokeskuksen sivuilta löytyvän artikkelin &lt;a href=&#34;https://www.stat.fi/artikkelit/2009/art_2009-06-08_008.html?s=3&#34;&gt;(Tammilehto-Luode, 2009)&lt;/a&gt; mukaan “[k]untien sisäinen aluejako on syntynyt kuntien omien tarpeiden pohjalta”.&lt;/p&gt;
&lt;p&gt;Turussakin kaupunki on kehittynyt 10 vuoden aikana, uusia asuinalueita on rakennettu ja väkilukukin on kasvanut yli 10 000 asukkaalla. Pienalueiden rajat saattavat muuttua samalla kun kaupunki kasvaa ja kehittyy. Aluejakojen pysyvyys ei tietenkään ole vakio laajemmassakaan mittakaavassa, sillä kuntaliitoksia ja kuntarajojen uudelleenvetoja tapahtuu melkein vuosittain (ks. &lt;a href=&#34;https://www.stat.fi/fi/luokitukset/luokitustiedotteet/&#34;&gt;Tilastokeskuksen luokitustiedotteet&lt;/a&gt;), postinumeroalueita muutetaan (ks. &lt;a href=&#34;https://www.posti.fi/fi/postinumerohaku/postinumeroalueet&#34;&gt;Postin sivut&lt;/a&gt;) ja maakuntien rajojakin vedetään toisinaan uudelleen.&lt;/p&gt;
&lt;p&gt;Pienaluetilastojen yhdistäminen karttatietoaineistoon vaatii enemmän manuaalista työtä kuin esimerkiksi Tilastokeskuksen sivuilta &lt;a href=&#34;https://CRAN.R-project.org/package=pxweb&#34;&gt;pxweb-paketilla&lt;/a&gt; ladatun tiedon visualisointi &lt;a href=&#34;https://ropengov.org/fi/2020/02/r-paketti-geofi-tilastokeskuksen-avointen-paikkatietoaineistojen-k%C3%A4ytt%C3%B6%C3%B6n/&#34;&gt;geofi-pakettia&lt;/a&gt; käyttämällä. Tähän saadaan tulevaisuudessa mahdollisesti muutos, mutta tämän blogitekstin on tarkoitus demonstroida nykyhetkessä, kuinka helppoa datan visualisointi on ilman erikoistuneita pakettejakin.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;pienaluetilastojen-lataaminen-ja-visualisointi&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Pienaluetilastojen lataaminen ja visualisointi&lt;/h2&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb1&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb1-1&#34;&gt;&lt;a href=&#34;#cb1-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# px-muotoisen datan lukemiseen tarvittava paketti&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-2&#34;&gt;&lt;a href=&#34;#cb1-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(pxR)&lt;/span&gt;
&lt;span id=&#34;cb1-3&#34;&gt;&lt;a href=&#34;#cb1-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Datan käsittelyyn tarvittavat tidyverse-paketit&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-4&#34;&gt;&lt;a href=&#34;#cb1-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(dplyr)&lt;/span&gt;
&lt;span id=&#34;cb1-5&#34;&gt;&lt;a href=&#34;#cb1-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(tidyr)&lt;/span&gt;
&lt;span id=&#34;cb1-6&#34;&gt;&lt;a href=&#34;#cb1-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Geospatiaalisen datan käsittelyyn tarvittavat paketit&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-7&#34;&gt;&lt;a href=&#34;#cb1-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(sf)&lt;/span&gt;
&lt;span id=&#34;cb1-8&#34;&gt;&lt;a href=&#34;#cb1-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(ggplot2)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Käytän tässä kirjoituksessa pxR-pakettia, sillä ainakin toistaiseksi Turun kaupunki toimittaa pienaluetilastonsa px-muodossa. Px-tiedostomuoto on moniulotteisen tilastotaulukon eli kuution tallennusformaatti, josta voi saada jonkinlaista lisätietoa esimerkiksi vuonna 2008 julkaistusta &lt;a href=&#34;http://www.tilastokeskus.fi/tup/pcaxis/px-file_format_2008_1_2008-02-04_fi.pdf&#34;&gt;käsikirjasta&lt;/a&gt; tai Ruotsin SCB:n &lt;a href=&#34;https://www.scb.se/globalassets/vara-tjanster/px-programmen/px-file_format_specification_2013.pdf&#34;&gt;tiedostomuodon määrittelystä&lt;/a&gt;. Px-dataa voidaan Windows-koneilla käsitellä erillisellä PxWin-ohjelmistolla, mutta Macin tai Linuxin käyttäjille tämä ei valitettavasti ole vaihtoehto.&lt;/p&gt;
&lt;p&gt;pxR-paketti ei lue pysty lukemaan kaikkia tarjolla olevia .px-muodossa olevia tietoaineistoja, mutta toivottavasti paketin kehitystyö korjaa ongelman tulevaisuudessa tai avointa dataa tarjotaan jatkossa toisenlaisessa muodossa.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb2&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb2-1&#34;&gt;&lt;a href=&#34;#cb2-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# URL lähde: https://www.avoindata.fi/data/fi/dataset/turun-kaupungin-pienaluetilastoja&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-2&#34;&gt;&lt;a href=&#34;#cb2-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;url_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;https://dev.turku.fi/datasets/pienaluetilastot/turku-asunnot-r03e.px&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-3&#34;&gt;&lt;a href=&#34;#cb2-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-4&#34;&gt;&lt;a href=&#34;#cb2-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# pxR-paketin standardinomainen tapa lukea Tilastokeskuksen px-dataa ei toimi:&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-5&#34;&gt;&lt;a href=&#34;#cb2-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# read.px(filename = url)&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-6&#34;&gt;&lt;a href=&#34;#cb2-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;#Error in scan(tc, na.strings = na.strings, quote = NULL, quiet = TRUE) : &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-7&#34;&gt;&lt;a href=&#34;#cb2-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;#  scan() expected &amp;#39;a real&amp;#39;, got &amp;#39;..&amp;#39;&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-8&#34;&gt;&lt;a href=&#34;#cb2-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-9&#34;&gt;&lt;a href=&#34;#cb2-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Käytetään argumenttia na.strings = c(&amp;quot;..&amp;quot;), jolloin data voidaan lukea&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-10&#34;&gt;&lt;a href=&#34;#cb2-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;px_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;read.px&lt;/span&gt;(url_data, &lt;span class=&#34;at&#34;&gt;na.strings =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;..&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vuoden 2008 PC-Axis-tiedostomuodon käsikirjasta voidaan lukea, että pistekoodi “..” tarkoittaa tietoa, jota ei ole saatu, joka on epävarmaa tai joka on salassapitosäännön alaista. Kuten aiemminkin mainittiin, Turun kaupunki on rajannut julkaisemiensa aineistojen laajuutta. Puuttuvan tiedon voikin suurimmalti osalti selittää salassapitosäännöksen mukaisella rajauksella, mistä johtuen kahden pisteen pistekoodi lienee tullut valituksi.&lt;/p&gt;
&lt;p&gt;Tarkastellaan seuraavaksi lataamamme px_data-objektin sisältöä:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb3&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb3-1&#34;&gt;&lt;a href=&#34;#cb3-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# px_data-objektin sisältämät avainsanat&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-2&#34;&gt;&lt;a href=&#34;#cb3-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;names&lt;/span&gt;(px_data)&lt;/span&gt;
&lt;span id=&#34;cb3-3&#34;&gt;&lt;a href=&#34;#cb3-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [1] &amp;quot;AXIS.VERSION&amp;quot;       &amp;quot;CHARSET&amp;quot;            &amp;quot;CODEPAGE&amp;quot;           &amp;quot;CODES&amp;quot;              &amp;quot;CODES.sv.&amp;quot;         &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-4&#34;&gt;&lt;a href=&#34;#cb3-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [6] &amp;quot;CONTACT&amp;quot;            &amp;quot;CONTACT.sv.&amp;quot;        &amp;quot;CONTENTS&amp;quot;           &amp;quot;CONTENTS.sv.&amp;quot;       &amp;quot;CONTVARIABLE&amp;quot;      &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-5&#34;&gt;&lt;a href=&#34;#cb3-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [11] &amp;quot;CONTVARIABLE.sv.&amp;quot;   &amp;quot;COPYRIGHT&amp;quot;          &amp;quot;CREATION.DATE&amp;quot;      &amp;quot;DATA&amp;quot;               &amp;quot;DECIMALS&amp;quot;          &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-6&#34;&gt;&lt;a href=&#34;#cb3-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [16] &amp;quot;DESCRIPTION&amp;quot;        &amp;quot;DESCRIPTION.sv.&amp;quot;    &amp;quot;DESCRIPTIONDEFAULT&amp;quot; &amp;quot;DOMAIN&amp;quot;             &amp;quot;DOMAIN.sv.&amp;quot;        &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-7&#34;&gt;&lt;a href=&#34;#cb3-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [21] &amp;quot;HEADING&amp;quot;            &amp;quot;HEADING.sv.&amp;quot;        &amp;quot;LANGUAGE&amp;quot;           &amp;quot;LANGUAGES&amp;quot;          &amp;quot;LAST.UPDATED&amp;quot;      &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-8&#34;&gt;&lt;a href=&#34;#cb3-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [26] &amp;quot;MATRIX&amp;quot;             &amp;quot;NOTE&amp;quot;               &amp;quot;NOTE.sv.&amp;quot;           &amp;quot;SHOWDECIMALS&amp;quot;       &amp;quot;SOURCE&amp;quot;            &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-9&#34;&gt;&lt;a href=&#34;#cb3-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [31] &amp;quot;SOURCE.sv.&amp;quot;         &amp;quot;STUB&amp;quot;               &amp;quot;STUB.sv.&amp;quot;           &amp;quot;SUBJECT.AREA&amp;quot;       &amp;quot;SUBJECT.AREA.sv.&amp;quot;  &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-10&#34;&gt;&lt;a href=&#34;#cb3-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [36] &amp;quot;SUBJECT.CODE&amp;quot;       &amp;quot;TIMEVAL&amp;quot;            &amp;quot;TIMEVAL.sv.&amp;quot;        &amp;quot;TITLE&amp;quot;              &amp;quot;TITLE.sv.&amp;quot;         &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-11&#34;&gt;&lt;a href=&#34;#cb3-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [41] &amp;quot;UNITS&amp;quot;              &amp;quot;UNITS.sv.&amp;quot;          &amp;quot;VALUES&amp;quot;             &amp;quot;VALUES.sv.&amp;quot;         &amp;quot;VARIABLE.TYPE&amp;quot;     &lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-12&#34;&gt;&lt;a href=&#34;#cb3-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;do&#34;&gt;## [46] &amp;quot;VARIABLE.TYPE.sv.&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-13&#34;&gt;&lt;a href=&#34;#cb3-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-14&#34;&gt;&lt;a href=&#34;#cb3-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# px_data-objektin luokka&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-15&#34;&gt;&lt;a href=&#34;#cb3-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;class&lt;/span&gt;(px_data)&lt;/span&gt;
&lt;span id=&#34;cb3-16&#34;&gt;&lt;a href=&#34;#cb3-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# [1] &amp;quot;px&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-17&#34;&gt;&lt;a href=&#34;#cb3-17&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-18&#34;&gt;&lt;a href=&#34;#cb3-18&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# px_data-objektin rakenne: Tulostaa erittäin pitkän listan tietoja, jota en toista tässä esimerkissä&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-19&#34;&gt;&lt;a href=&#34;#cb3-19&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;str&lt;/span&gt;(px_data)&lt;/span&gt;
&lt;span id=&#34;cb3-20&#34;&gt;&lt;a href=&#34;#cb3-20&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-21&#34;&gt;&lt;a href=&#34;#cb3-21&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Muoto, jossa px_data-objektin tiedot on tallennettu&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-22&#34;&gt;&lt;a href=&#34;#cb3-22&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;typeof&lt;/span&gt;(px_data)&lt;/span&gt;
&lt;span id=&#34;cb3-23&#34;&gt;&lt;a href=&#34;#cb3-23&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# [1] &amp;quot;list&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Huomataan, että suurin osa px_data-objektin sisällöstä on erilaista metatietoa, joka on tietojen raportoinnin kannalta yleensä hyvä ottaa huomioon. Olennaisin tieto löytyy kuitenkin jo otsikosta: Asunnot osa-alueittain huoneistotyypin ja hallintaperusteen mukaan vuosina 2015-2019. Numeerisen tilastotiedon tarkastelun ja visualisoinnin kannalta kiinnostavin sisältö löytyy DATA-avainsanan takaa. DATA-elementti sisältää vastaavasti data.framen nimeltä value, josta olemme kiinnostuneita.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb4&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb4-1&#34;&gt;&lt;a href=&#34;#cb4-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Muodostetaan uusi muuttuja turku_data px_data-objektin sisältämästä data.framesta&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-2&#34;&gt;&lt;a href=&#34;#cb4-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; px_data&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;DATA&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;value&lt;/span&gt;
&lt;span id=&#34;cb4-3&#34;&gt;&lt;a href=&#34;#cb4-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-4&#34;&gt;&lt;a href=&#34;#cb4-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# px_data -objektin kuvauksen tallentaminen voi olla hyödyllistä myöhemmin&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-5&#34;&gt;&lt;a href=&#34;#cb4-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data_otsikko &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; px_data&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;DESCRIPTION&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;value&lt;/span&gt;
&lt;span id=&#34;cb4-6&#34;&gt;&lt;a href=&#34;#cb4-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data_otsikko&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;R03E Asunnot osa-alueittain huoneistotyypin ja hallintaperusteen mukaan 31.12, 2015-2019&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb6&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb6-1&#34;&gt;&lt;a href=&#34;#cb6-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;dim&lt;/span&gt;(turku_data)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] 50435     5&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb8&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb8-1&#34;&gt;&lt;a href=&#34;#cb8-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;summary&lt;/span&gt;(turku_data)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;##                            Hallintaperuste                 Huoneistotyyppi 
##  Hallintaperusteet yhteensä        :7205   Huoneistotyypit yhteensä: 4585  
##  Omistaa talon                     :7205   1h+kk/kt                : 4585  
##  Omistaa asunnon osakkeet          :7205   1h+k                    : 4585  
##  Arava- tai korkotukivuokra-asunto :7205   2h+kk/kt                : 4585  
##  Muu vuokra-asunto                 :7205   2h+k                    : 4585  
##  Asumisoikeusasunnot               :7205   3h+k/kk/kt              : 4585  
##  Muu tai tuntematon hallintaperuste:7205   (Other)                 :22925  
##   Vuosi                                 Osa.alue         value          
##  2015:10087   853 Turku                     :  385   Min.   :     0.00  
##  2016:10087   853101001 Rauhankatu VII      :  385   1st Qu.:     0.00  
##  2017:10087   853101002 Ursininkatu pohj.   :  385   Median :     2.00  
##  2018:10087   853101003 Ursininkatu et.     :  385   Mean   :    99.96  
##  2019:10087   853101004 Kristiinankatu et.  :  385   3rd Qu.:    23.00  
##               853101005 Kristiinankatu pohj.:  385   Max.   :119908.00  
##               (Other)                       :48125   NA&amp;#39;s   :4158&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dim-komennon tulos kertoo, että data.framessa on 50435 riviä ja 5 saraketta. Summaryn tulkitseminen on tässä yhteydessä hieman hankalampaa, mutta käytännössä luvut kertovat, kuinka monta kertaa kukin uniikki rivi esiintyy tässä pitkässä muodossa olevassa taulukossa. Numeroista ei siis voi tehdä päätelmiä minkään ryhmän jäsenten lukumäärästä vaan ennemmin siitä, kuinka monta kertaa kukin muuttuja esiintyy taulukossa.&lt;/p&gt;
&lt;p&gt;Olemme tällä kertaa kiinnostuneita eri pienalueiden tiedoista. Visualisoinnin yksinkertaistamiseksi tarkastelemme omistusasujien määrän suhdetta kaikkiin asumismuotoihin, joten valitsemme siis Hallintaperuste-sarakkeesta “Hallintaperusteet yhteensä”, “Omistaa talon” ja “Omistaa asunnon osakkeet”. Huoneistotyypin osalta emme tee erottelua. Osa.alue- ja Vuosi-sarakkeista voimme ottaa kaikki tiedot, sillä tarvittavat rajaukset voidaan tehdä samalla kun tilastotietoja yhdistetään paikkatietoon.&lt;/p&gt;
&lt;p&gt;Pelkästään pienalueita tarkasteltaessa uuden area_code -sarakkeen luominen ei ole välttämätöntä, sillä pienaluedatan sisältävät tietoaineistot sekä pienalueiden paikkatietoaineistot käyttävät toisiaan vastaavia nimikkeitä. Muiden aineistojen kanssa toimiessa on kuitenkin hyödyllistä, että numeromuodossa oleva aluekoodi ja alueen nimi erotellaan erillisiksi sarakkeiksi.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb10&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb10-1&#34;&gt;&lt;a href=&#34;#cb10-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; turku_data &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb10-2&#34;&gt;&lt;a href=&#34;#cb10-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Hallintaperuste &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Hallintaperusteet yhteensä&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;Omistaa talon&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;Omistaa asunnon osakkeet&amp;quot;&lt;/span&gt;), Huoneistotyyppi &lt;span class=&#34;sc&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Huoneistotyypit yhteensä&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb10-3&#34;&gt;&lt;a href=&#34;#cb10-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb10-4&#34;&gt;&lt;a href=&#34;#cb10-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;summary&lt;/span&gt;(turku_data2)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;##                            Hallintaperuste                 Huoneistotyyppi
##  Hallintaperusteet yhteensä        :655    Huoneistotyypit yhteensä:1965  
##  Omistaa talon                     :655    1h+kk/kt                :   0  
##  Omistaa asunnon osakkeet          :655    1h+k                    :   0  
##  Arava- tai korkotukivuokra-asunto :  0    2h+kk/kt                :   0  
##  Muu vuokra-asunto                 :  0    2h+k                    :   0  
##  Asumisoikeusasunnot               :  0    3h+k/kk/kt              :   0  
##  Muu tai tuntematon hallintaperuste:  0    (Other)                 :   0  
##   Vuosi                               Osa.alue        value         
##  2015:393   853 Turku                     :  15   Min.   :     0.0  
##  2016:393   853101001 Rauhankatu VII      :  15   1st Qu.:    40.5  
##  2017:393   853101002 Ursininkatu pohj.   :  15   Median :   161.0  
##  2018:393   853101003 Ursininkatu et.     :  15   Mean   :   918.0  
##  2019:393   853101004 Kristiinankatu et.  :  15   3rd Qu.:   593.5  
##             853101005 Kristiinankatu pohj.:  15   Max.   :119908.0  
##             (Other)                       :1875   NA&amp;#39;s   :162&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb12&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb12-1&#34;&gt;&lt;a href=&#34;#cb12-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Luodaan uusi muuttuja area_code poistamalla Osa.alue-muuttujasta aakkoset, välimerkit ja välilyönnit&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb12-2&#34;&gt;&lt;a href=&#34;#cb12-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; turku_data2 &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb12-3&#34;&gt;&lt;a href=&#34;#cb12-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;area_code =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;gsub&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;[[:alpha:]]*[[:punct:]]*[[:blank:]]*&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;, turku_data2&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;Osa.alue))&lt;/span&gt;
&lt;span id=&#34;cb12-4&#34;&gt;&lt;a href=&#34;#cb12-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb12-5&#34;&gt;&lt;a href=&#34;#cb12-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Muutetaan pitkä datamuoto leveäksi&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb12-6&#34;&gt;&lt;a href=&#34;#cb12-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; turku_data2 &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb12-7&#34;&gt;&lt;a href=&#34;#cb12-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  tidyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;pivot_wider&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;id_cols =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Vuosi&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;area_code&amp;quot;&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;names_from =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Hallintaperuste&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;values_from =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;value&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb12-8&#34;&gt;&lt;a href=&#34;#cb12-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb12-9&#34;&gt;&lt;a href=&#34;#cb12-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Siivotaan sarakkeita käytettävämpään muotoon&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb12-10&#34;&gt;&lt;a href=&#34;#cb12-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; turku_data2 &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb12-11&#34;&gt;&lt;a href=&#34;#cb12-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;omistusasunto =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Omistaa talon&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Omistaa asunnon osakkeet&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb12-12&#34;&gt;&lt;a href=&#34;#cb12-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;muu_asumismuoto =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Hallintaperusteet yhteensä&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;-&lt;/span&gt; omistusasunto) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb12-13&#34;&gt;&lt;a href=&#34;#cb12-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;rename&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;hallintaperusteet_yhteensa =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Hallintaperusteet yhteensä&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb12-14&#34;&gt;&lt;a href=&#34;#cb12-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;select&lt;/span&gt;(&lt;span class=&#34;sc&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Omistaa talon&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Omistaa asunnon osakkeet&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Seuraavaksi yhdistämme datatiedot geospatiaaliseen dataan käyttämällä sf-pakettia sekä visualisointiin ggplot2-pakettia.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb13&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb13-1&#34;&gt;&lt;a href=&#34;#cb13-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;url_geo &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;http://dev.turku.fi/datasets/aluejaot/pienalueet-4326.geojson&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb13-2&#34;&gt;&lt;a href=&#34;#cb13-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb13-3&#34;&gt;&lt;a href=&#34;#cb13-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_pienalueet &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; sf&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;st_read&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;dsn =&lt;/span&gt; url_geo)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## Reading layer `aj_osa-alue_20200415_area&amp;#39; from data source `http://dev.turku.fi/datasets/aluejaot/pienalueet-4326.geojson&amp;#39; using driver `GeoJSON&amp;#39;
## Simple feature collection with 129 features and 1 field
## geometry type:  POLYGON
## dimension:      XY
## bbox:           xmin: 22.06614 ymin: 60.33351 xmax: 22.45816 ymax: 60.73729
## geographic CRS: WGS 84&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb15&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb15-1&#34;&gt;&lt;a href=&#34;#cb15-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_pienalueet &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; turku_pienalueet &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb15-2&#34;&gt;&lt;a href=&#34;#cb15-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;area_code =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;gsub&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;[[:alpha:]]*[[:punct:]]*[[:blank:]]*&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;, turku_pienalueet&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;id))&lt;/span&gt;
&lt;span id=&#34;cb15-3&#34;&gt;&lt;a href=&#34;#cb15-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb15-4&#34;&gt;&lt;a href=&#34;#cb15-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(turku_pienalueet, turku_data2, &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;area_code&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Visualisoidaan omistusasujien osuus suhteessa kaikkiin asumismuotoihin:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb16&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb16-1&#34;&gt;&lt;a href=&#34;#cb16-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;viz_dat &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dat &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb16-2&#34;&gt;&lt;a href=&#34;#cb16-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Vuosi &lt;span class=&#34;sc&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2019&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb16-3&#34;&gt;&lt;a href=&#34;#cb16-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb16-4&#34;&gt;&lt;a href=&#34;#cb16-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(viz_dat) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb16-5&#34;&gt;&lt;a href=&#34;#cb16-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; omistusasunto &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; hallintaperusteet_yhteensa), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb16-6&#34;&gt;&lt;a href=&#34;#cb16-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Omistusasujien osuus 2019&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/figure-html/visualization-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Kuten huomataan, osasta pienalueista data puuttuu kokonaan. Pienalueita käytettäessä kartasta tulee helposti turhan yksityiskohtaista piiperrystä. Eräs ratkaisu tähän olisi tehdä pienaluekuvista kartogrammi (esim. cartogram-pakettia käyttämällä), jossa väkirikkaammat pienalueet piirrettäisiin suhteellisesti suurempina kuin harvaan asutummat pienalueet. Tällöin kartan maantieteellinen vastaavuus kuitenkin vääristyisi ja “karttakuva” muuttuisi entistä abstraktimman tason visualisoinniksi.&lt;/p&gt;
&lt;p&gt;Toinen ratkaisu on muodostaa pienaluetilastoista suurempia alueita ryhmittelemällä ne uudelleen.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;pienalueiden-uudelleenryhmittely-tilastoalueiksi-ja-suuralueiksi&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Pienalueiden uudelleenryhmittely tilastoalueiksi ja suuralueiksi&lt;/h2&gt;
&lt;p&gt;Turku voidaan jakaa 9 suuralueeseen, 45 tilastoalueesta ja 129 pienalueesta. Jokainen suuralue sisältää useamman tilastoalueen ja useimmat tilastoalueet sisältävät useita pienalueita. Joidenkin ilmeisesti harvaan asuttujen alueiden tapauksessa tilastoalueet sisältävät ainoastaan yhden pienalueen.&lt;/p&gt;
&lt;p&gt;Useimmat aiemmin muodostetut aluekoodit muodostuvat 9 numerosta, esimerkkinä “853943130 Saramäki - Paimala”. 853 on Turun kaupungin kuntakoodi, 9 on Maaria-Paattisen suuralueen numero, 43 on Etelä-Maarian tilastoalueen numero ja 130 on Saramäki-Paimalan pienaluekoodi. Koska numerosarja on kaikkien tapausten osalta saman pituinen ja eri alueita merkitsevät numerot ovat aina samassa kohdassa, koodi pystytään helposti purkamaan osiin:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb17&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb17-1&#34;&gt;&lt;a href=&#34;#cb17-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;suuralue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;substring&lt;/span&gt;(dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;area_code, &lt;span class=&#34;at&#34;&gt;first =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;4&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;last =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;4&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb17-2&#34;&gt;&lt;a href=&#34;#cb17-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;tilastoalue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;substring&lt;/span&gt;(dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;area_code, &lt;span class=&#34;at&#34;&gt;first =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;5&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;last =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;6&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb17-3&#34;&gt;&lt;a href=&#34;#cb17-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;pienalue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;substring&lt;/span&gt;(dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;area_code, &lt;span class=&#34;at&#34;&gt;first =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;7&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;last =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;9&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb18&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb18-1&#34;&gt;&lt;a href=&#34;#cb18-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat_suuralue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; sf&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;st_make_valid&lt;/span&gt;(dat) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb18-2&#34;&gt;&lt;a href=&#34;#cb18-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Vuosi &lt;span class=&#34;sc&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2019&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb18-3&#34;&gt;&lt;a href=&#34;#cb18-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(suuralue) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb18-4&#34;&gt;&lt;a href=&#34;#cb18-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;summarise&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;hallintaperusteet_yhteensa =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(hallintaperusteet_yhteensa, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;), &lt;/span&gt;
&lt;span id=&#34;cb18-5&#34;&gt;&lt;a href=&#34;#cb18-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;                     &lt;span class=&#34;at&#34;&gt;omistusasunto =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(omistusasunto, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;muu_asumismuoto =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(muu_asumismuoto, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;)) &lt;/span&gt;
&lt;span id=&#34;cb18-6&#34;&gt;&lt;a href=&#34;#cb18-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb18-7&#34;&gt;&lt;a href=&#34;#cb18-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat_tilastoalue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; sf&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;st_make_valid&lt;/span&gt;(dat) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb18-8&#34;&gt;&lt;a href=&#34;#cb18-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Vuosi &lt;span class=&#34;sc&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2019&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb18-9&#34;&gt;&lt;a href=&#34;#cb18-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(tilastoalue) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb18-10&#34;&gt;&lt;a href=&#34;#cb18-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;summarise&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;hallintaperusteet_yhteensa =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(hallintaperusteet_yhteensa, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;omistusasunto =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(omistusasunto, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;muu_asumismuoto =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(muu_asumismuoto, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;)) &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lopuksi visualisoidaan:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb19&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb19-1&#34;&gt;&lt;a href=&#34;#cb19-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(dat_suuralue) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb19-2&#34;&gt;&lt;a href=&#34;#cb19-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; omistusasunto &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; hallintaperusteet_yhteensa), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb19-3&#34;&gt;&lt;a href=&#34;#cb19-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Omistusasujien osuus 2019&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/figure-html/visualization2-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb20&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb20-1&#34;&gt;&lt;a href=&#34;#cb20-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(dat_tilastoalue) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb20-2&#34;&gt;&lt;a href=&#34;#cb20-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; omistusasunto &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; hallintaperusteet_yhteensa), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb20-3&#34;&gt;&lt;a href=&#34;#cb20-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Omistusasujien osuus 2019&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/figure-html/visualization2-2.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Hyvännäköinen karttakuva saattaa vaatia informatiivisuuden vuoksi lisää tietoja, esimerkiksi alueiden nimet sisältävät labelit. Px-data ei sisältänyt kuin pienalueiden nimet, joten tilastoalueiden ja suuralueiden nimet joutuisi kirjoittamaan joko käsin tai lataamaan toisesta lähteestä.&lt;/p&gt;
&lt;p&gt;Tätä blogikirjoitusta varten tein &lt;a href=&#34;https://www.turku.fi/sites/default/files/atoms/files/tilastoaluejakokartta_tilusvaihtojen_ja_kuntarajamuutoksen_takia_10032020_0.pdf&#34;&gt;Turun kaupungin aluejaot sisältävän pdf-kartan&lt;/a&gt; pohjalta csv-tiedoston, joka sisältää alueiden numerokoodit ja nimet. Aiemmasta jaottelusta poiketen numerokoodit ovat hieman pidempiä, joten muokkaamme dat-objektin koodit csv-tiedostoa vastaaviksi:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb21&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb21-1&#34;&gt;&lt;a href=&#34;#cb21-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;pienalue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;paste&lt;/span&gt;(dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;suuralue, dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;tilastoalue, dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;pienalue, &lt;span class=&#34;at&#34;&gt;sep=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb21-2&#34;&gt;&lt;a href=&#34;#cb21-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;tilastoalue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;paste&lt;/span&gt;(dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;suuralue, dat&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;tilastoalue, &lt;span class=&#34;at&#34;&gt;sep=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb21-3&#34;&gt;&lt;a href=&#34;#cb21-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb21-4&#34;&gt;&lt;a href=&#34;#cb21-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat_tilastoalue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; sf&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;st_make_valid&lt;/span&gt;(dat) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb21-5&#34;&gt;&lt;a href=&#34;#cb21-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(tilastoalue) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb21-6&#34;&gt;&lt;a href=&#34;#cb21-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;summarise&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;hallintaperusteet_yhteensa =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(hallintaperusteet_yhteensa, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;omistusasunto =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(omistusasunto, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;muu_asumismuoto =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;sum&lt;/span&gt;(muu_asumismuoto, &lt;span class=&#34;at&#34;&gt;na.rm =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;)) &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb22&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb22-1&#34;&gt;&lt;a href=&#34;#cb22-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Luetaan sisään csv-tiedosto, jossa ei ole otsakeriviä&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb22-2&#34;&gt;&lt;a href=&#34;#cb22-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;aluekoodit &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;read.csv&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;turku_alueet.csv&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;header =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;FALSE&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb22-3&#34;&gt;&lt;a href=&#34;#cb22-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb22-4&#34;&gt;&lt;a href=&#34;#cb22-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;head&lt;/span&gt;(aluekoodit)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;##                           V1
## 1     1 Suuralue 1: Keskusta
## 2              101 VI ja VII
## 3      101001 Rauhankatu VII
## 4  101002 Ursininkatu pohj. 
## 5     101003 Ursininkatu et.
## 6 101004 Kristiinankatu et.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kuten huomataan, alueiden nimet ja numerokoodit pitkässä muodossa ovat yhdessä sarakkeessa. Ainakin dplyr vaatii, että kaksi yhdistettävää taulukkoa sisältävät ainakin yhden sarakkeen, joka sisältää toisiaan täydellisesti vastaavaa tietoa ja jonka avulla taulukoiden rivit voidaan yhdistää toisiinsa. &lt;a href=&#34;https://CRAN.R-project.org/package=fuzzyjoin&#34;&gt;Fuzzyjoin-pakettia&lt;/a&gt; hyödyntämällä tästä täydellisen vastaavuuden vaatimuksesta voitaisiin kenties luopua ja osittainen vastaavuuskin riittäisi, mutta käytän tässä blogikirjoituksessa dplyriä ja muodostan toisiaan täydellisesti vastaavat sarakkeet.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb24&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb24-1&#34;&gt;&lt;a href=&#34;#cb24-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Poistetaan rivien alusta numero + välilyönti ja muodostetaan uusi sarake&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-2&#34;&gt;&lt;a href=&#34;#cb24-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;aluekoodit&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;nimi &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;gsub&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;^[0-9]*[[:blank:]]&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;, aluekoodit&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;V1)&lt;/span&gt;
&lt;span id=&#34;cb24-3&#34;&gt;&lt;a href=&#34;#cb24-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-4&#34;&gt;&lt;a href=&#34;#cb24-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Muodostetaan uusi muuttuja x1, joka sisältää alun numeroiden + välilyönnin merkkimäärän&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-5&#34;&gt;&lt;a href=&#34;#cb24-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;x1 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;regexpr&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;^[0-9]*&amp;quot;&lt;/span&gt;, aluekoodit&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;V1)&lt;/span&gt;
&lt;span id=&#34;cb24-6&#34;&gt;&lt;a href=&#34;#cb24-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-7&#34;&gt;&lt;a href=&#34;#cb24-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Käytetään tietoa merkkimäärästä hyväksi alun numerokoodeja poimittaessa&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-8&#34;&gt;&lt;a href=&#34;#cb24-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;aluekoodit&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;numero &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;regmatches&lt;/span&gt;(aluekoodit&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;V1, x1)&lt;/span&gt;
&lt;span id=&#34;cb24-9&#34;&gt;&lt;a href=&#34;#cb24-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-10&#34;&gt;&lt;a href=&#34;#cb24-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Yhdistetään aluekoodit-muuttujan nimet dat-objekteihin numeroiden perusteella&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-11&#34;&gt;&lt;a href=&#34;#cb24-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat_suuralue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(dat_suuralue, aluekoodit, &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;suuralue&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;numero&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb24-12&#34;&gt;&lt;a href=&#34;#cb24-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat_tilastoalue &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(dat_tilastoalue, aluekoodit, &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;tilastoalue&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;numero&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Visualisoinnit labeleiden kanssa:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb25&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb25-1&#34;&gt;&lt;a href=&#34;#cb25-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(dat_suuralue) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb25-2&#34;&gt;&lt;a href=&#34;#cb25-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; omistusasunto &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; hallintaperusteet_yhteensa), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb25-3&#34;&gt;&lt;a href=&#34;#cb25-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf_text&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;label =&lt;/span&gt; nimi), &lt;span class=&#34;at&#34;&gt;size =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;fontface =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;bold&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;check_overlap =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb25-4&#34;&gt;&lt;a href=&#34;#cb25-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Omistusasujien osuus 2019&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/figure-html/visualization3-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb27&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb27-1&#34;&gt;&lt;a href=&#34;#cb27-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(dat_tilastoalue) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb27-2&#34;&gt;&lt;a href=&#34;#cb27-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; omistusasunto &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; hallintaperusteet_yhteensa), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb27-3&#34;&gt;&lt;a href=&#34;#cb27-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf_label&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;label =&lt;/span&gt; nimi), &lt;span class=&#34;at&#34;&gt;size =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb27-4&#34;&gt;&lt;a href=&#34;#cb27-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Omistusasujien osuus 2019&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/figure-html/visualization3-2.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Kuten huomataan, suuri määrä tekstiä tai labeleita saa kartan näyttämään sotkuiselta. Teemakartat ovatkin kaikista hyödyllisimmillään alueellisten trendien, esimerkiksi työttömyysasteen tai asukkaiden keski-iän nopeaan silmäilyyn, jolloin alueen nimikkeellä ei välttämättä ole niin suurta merkitystä.&lt;/p&gt;
&lt;p&gt;Toisaalta nimikkeiden kiinnittäminen paikkatietoon ei myöskään ole turhaa, jos paikkatietoja haluaa visualisoida staattisten karttojen sijaan interaktiivisessa näkymässä. Tällöin informaatiota voidaan esittää pop-up -ikkunassa ja labeleiden tekstiä voidaan samalla muotoilla monipuolisesti html-tageja käyttäen.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;esimerkki-ajallisen-muutoksen-visualisoimisesta&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Esimerkki ajallisen muutoksen visualisoimisesta&lt;/h2&gt;
&lt;p&gt;Turussa on opiskelijakaupunkina suuri kysyntä opiskelijoille soveltuvista yksiöistä. Seuraavassa esimerkissä katsomme, kuinka yksiöiden määrä on muuttunut vuodesta 2015 vuoteen 2019 eri alueilla.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb29&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb29-1&#34;&gt;&lt;a href=&#34;#cb29-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data_yksiot &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; turku_data &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb29-2&#34;&gt;&lt;a href=&#34;#cb29-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Hallintaperuste &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Hallintaperusteet yhteensä&amp;quot;&lt;/span&gt;), Huoneistotyyppi &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;1h+kk/kt&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;1h+k&amp;quot;&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb29-3&#34;&gt;&lt;a href=&#34;#cb29-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  tidyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;pivot_wider&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;id_cols =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Osa.alue&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;Vuosi&amp;quot;&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;names_from =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Huoneistotyyppi&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;values_from =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;value&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb29-4&#34;&gt;&lt;a href=&#34;#cb29-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;co&#34;&gt;# Yhdistetään 1h + kk ja 1h+k yhdeksi faktoriksi&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb29-5&#34;&gt;&lt;a href=&#34;#cb29-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;yksiot =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;1h+kk/kt&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;1h+k&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb29-6&#34;&gt;&lt;a href=&#34;#cb29-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;select&lt;/span&gt;(&lt;span class=&#34;sc&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;1h+kk/kt&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;1h+k&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb29-7&#34;&gt;&lt;a href=&#34;#cb29-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;co&#34;&gt;# Järjestetään data nimen perusteella (ja samalla vuoden perusteella aikajärjestykseen)&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb29-8&#34;&gt;&lt;a href=&#34;#cb29-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(Osa.alue) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb29-9&#34;&gt;&lt;a href=&#34;#cb29-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;arrange&lt;/span&gt;(Osa.alue, &lt;span class=&#34;at&#34;&gt;by_group =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb29-10&#34;&gt;&lt;a href=&#34;#cb29-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;co&#34;&gt;# Vertaillaan vuoden 2015 ja 2019 tilannetta, joten lag = 4&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb29-11&#34;&gt;&lt;a href=&#34;#cb29-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;muutos_2015_2019 =&lt;/span&gt; yksiot &lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;lag&lt;/span&gt;(yksiot, &lt;span class=&#34;at&#34;&gt;n =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;4&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb29-12&#34;&gt;&lt;a href=&#34;#cb29-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;co&#34;&gt;# Jätetään taulukkoon vain 2019 havainnot&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb29-13&#34;&gt;&lt;a href=&#34;#cb29-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Vuosi &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;2019&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb29-14&#34;&gt;&lt;a href=&#34;#cb29-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb29-15&#34;&gt;&lt;a href=&#34;#cb29-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Aineiston tunnusluvut&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb29-16&#34;&gt;&lt;a href=&#34;#cb29-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;summary&lt;/span&gt;(turku_data_yksiot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;muutos_2015_2019)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##  0.2143  1.0000  1.0195     Inf  1.1643     Inf      13&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb31&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb31-1&#34;&gt;&lt;a href=&#34;#cb31-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Tarkastellaan, miltä muutoksen suuruus näyttää yläpäässä&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb31-2&#34;&gt;&lt;a href=&#34;#cb31-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data_yksiot &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;arrange&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;desc&lt;/span&gt;(muutos_2015_2019))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## # A tibble: 131 x 4
## # Groups:   Osa.alue [131]
##    Osa.alue                          Vuosi yksiot muutos_2015_2019
##    &amp;lt;fct&amp;gt;                             &amp;lt;fct&amp;gt;  &amp;lt;dbl&amp;gt;            &amp;lt;dbl&amp;gt;
##  1 853216047 Toijainen               2019       2           Inf   
##  2 853323072 Skanssi                 2019     174            58   
##  3 853527087 Kuuvuori                2019     508             3.30
##  4 853633099 Impivaara               2019      45             3   
##  5 853113037 Otkantti                2019      29             2.9 
##  6 853105018 Kakola                  2019     523             2.04
##  7 853214041 Jänessaari              2019       2             2   
##  8 853526081 Asuin-Itäharju          2019     395             1.98
##  9 853708027 Autistenaukio - Oikotie 2019     129             1.87
## 10 853736110 Ruohonpää länt.         2019     255             1.67
## # … with 121 more rows&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb33&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb33-1&#34;&gt;&lt;a href=&#34;#cb33-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Yhdistetään aineisto geospatiaaliseen dataan&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb33-2&#34;&gt;&lt;a href=&#34;#cb33-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;inner_join&lt;/span&gt;(turku_pienalueet, turku_data_yksiot, &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;id&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Osa.alue&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Huomataan, että Skanssin kaupunginosassa yksiöiden rakentamistahti on ollut huomattavasti nopeampaa kuin muualla Turussa (2016 3 yksiötä, 2019 174 yksiötä). Tämä selittyy Skanssin kaupunginosan edelleen jatkuvalla kehityksellä. Toisella alueella, Toijaisessa, muutoksen suuruus on “mittaamattoman suuri” alussa olleen yksiöiden lukumäärän oltua 0. Teemakartan piirtämisen kannalta näin räikeästi muista poikkeavat outlierit tekee pääasiassa muutaman prosentin vuosittaisten muutosten visualisoimisesta mahdotonta, joten poistamme kaksi suurinta havaintoa ja piirrämme lopuksi kartan:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb34&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb34-1&#34;&gt;&lt;a href=&#34;#cb34-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dat2 &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb34-2&#34;&gt;&lt;a href=&#34;#cb34-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;muutos_2015_2019 =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;ifelse&lt;/span&gt;(muutos_2015_2019 &lt;span class=&#34;sc&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;, &lt;span class=&#34;cn&#34;&gt;NA&lt;/span&gt;, muutos_2015_2019))&lt;/span&gt;
&lt;span id=&#34;cb34-3&#34;&gt;&lt;a href=&#34;#cb34-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb34-4&#34;&gt;&lt;a href=&#34;#cb34-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(dat2) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb34-5&#34;&gt;&lt;a href=&#34;#cb34-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;muutos_2015_2019), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb34-6&#34;&gt;&lt;a href=&#34;#cb34-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Yksiöiden määrän muutos 2015-2019, 100 %&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb34-7&#34;&gt;&lt;a href=&#34;#cb34-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;scale_fill_gradient2&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;low =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;midpoint =&lt;/span&gt; &lt;span class=&#34;fl&#34;&gt;1.0&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;mid =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;high =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;space=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Lab&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/figure-html/yksiot-visualisointi-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Suuri osa kartasta maalautuu valkoiseksi, mikä tarkoittaa että neljän vuoden aikana yksiöiden määrän kasvu ei ole ollut järin suurta. Toisaalta on hyvä muistaa, että tämän kaltainen yksinkertainen tarkastelu ylikorostaa pienillä alueilla tapahtuvia muutoksia ja tekee jo ennestään väkirikkailla alueilla tapahtuvat absoluuttiset muutokset näkymättömiksi.&lt;/p&gt;
&lt;p&gt;Vertailun vuoksi vielä kaikkien asuntojen absoluuttisia määriä kuvaava teemakartta:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb35&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb35-1&#34;&gt;&lt;a href=&#34;#cb35-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;turku_data_asunnot &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; turku_data &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb35-2&#34;&gt;&lt;a href=&#34;#cb35-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Hallintaperuste &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Hallintaperusteet yhteensä&amp;quot;&lt;/span&gt;), Huoneistotyyppi &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Huoneistotyypit yhteensä&amp;quot;&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb35-3&#34;&gt;&lt;a href=&#34;#cb35-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  tidyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;pivot_wider&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;id_cols =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Osa.alue&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;Vuosi&amp;quot;&lt;/span&gt;), &lt;span class=&#34;at&#34;&gt;names_from =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Huoneistotyyppi&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;values_from =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;value&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb35-4&#34;&gt;&lt;a href=&#34;#cb35-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;rename&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;kaikki_asunnot =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Huoneistotyypit yhteensä&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb35-5&#34;&gt;&lt;a href=&#34;#cb35-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(Osa.alue) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb35-6&#34;&gt;&lt;a href=&#34;#cb35-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;arrange&lt;/span&gt;(Osa.alue, &lt;span class=&#34;at&#34;&gt;by_group =&lt;/span&gt; &lt;span class=&#34;cn&#34;&gt;TRUE&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb35-7&#34;&gt;&lt;a href=&#34;#cb35-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;muutos_2015_2019 =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;lag&lt;/span&gt;(kaikki_asunnot, &lt;span class=&#34;at&#34;&gt;n =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;0&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;lag&lt;/span&gt;(kaikki_asunnot, &lt;span class=&#34;at&#34;&gt;n =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;4&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb35-8&#34;&gt;&lt;a href=&#34;#cb35-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;filter&lt;/span&gt;(Vuosi &lt;span class=&#34;sc&#34;&gt;%in%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;2019&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb35-9&#34;&gt;&lt;a href=&#34;#cb35-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb35-10&#34;&gt;&lt;a href=&#34;#cb35-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;summary&lt;/span&gt;(turku_data_asunnot&lt;span class=&#34;sc&#34;&gt;$&lt;/span&gt;muutos_2015_2019)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##  -65.00    3.00   14.00  137.38   75.25 8308.00      11&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb37&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb37-1&#34;&gt;&lt;a href=&#34;#cb37-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat3 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; dplyr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;inner_join&lt;/span&gt;(turku_pienalueet, turku_data_asunnot, &lt;span class=&#34;at&#34;&gt;by =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;id&amp;quot;&lt;/span&gt; &lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Osa.alue&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb37-2&#34;&gt;&lt;a href=&#34;#cb37-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb37-3&#34;&gt;&lt;a href=&#34;#cb37-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(dat3) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb37-4&#34;&gt;&lt;a href=&#34;#cb37-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;muutos_2015_2019), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb37-5&#34;&gt;&lt;a href=&#34;#cb37-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;labs&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Asuntojen määrän muutos 2015-2019, kpl&amp;quot;&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb37-6&#34;&gt;&lt;a href=&#34;#cb37-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;    &lt;span class=&#34;fu&#34;&gt;scale_fill_gradient2&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;low =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;high =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;space=&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;&amp;quot;Lab&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/12/turun-pienaluetilastojen-visualisointi/index.fi_files/figure-html/turku-kaikki-asunnot-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;lopuksi&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Lopuksi&lt;/h2&gt;
&lt;p&gt;Tämän kirjoituksen tarkoituksena oli demonstroida, kuinka Turun julkistamaa pienaluedataa voidaan visualisoida yleisesti käytössä olevia R-paketteja hyödyntämällä.&lt;/p&gt;
&lt;p&gt;Jatkokehityskohteena joitakin blogissa esiteltyjä työvaiheita olisi epäilemättä hyvä kiteyttää helpommin käytettävämpään ja pysyvämpään muotoon, esimerkiksi erillisen R-paketin muodossa. &lt;a href=&#34;https://github.com/rOpenGov/homepage/blob/master/content/post/turku_aluekoodit.csv&#34;&gt;Koneellisesti luettava valmis lista Turun aluekoodeista&lt;/a&gt; on esimerkki tiedosta, josta on hyötyä monissa alueellisen dataan liittyvissä toimenpiteissä ja olisi hyvä olla helposti saatavilla. Toinen kehityskohde voisi olla nykyisellään hieman hankalasti käytettävissä olevan .px-muotoisen datan uudelleenpaketoiminen johonkin helpommin hyödynnettävään formaattiin.&lt;/p&gt;
&lt;p&gt;Yksinään Turun aluedata jää hieman ontoksi. Turun alueiden vertailu esimerkiksi muiden &lt;a href=&#34;https://6aika.fi&#34;&gt;6Aika-hankkeeseen&lt;/a&gt; osallistuvien suurempien kaupunkien (Helsinki, Espoo, Vantaa, Turku, Tampere, Oulu) alueisiin voisi olla jo mielekkäämpää.&lt;/p&gt;
&lt;p&gt;Aiheen äärelle varmasti palataan vielä.&lt;/p&gt;
&lt;/div&gt;
</description> 
  </item>
  
<item>
  <title>Hetu-paketti suomalaisten henkilötunnusten käsittelyyn</title>
  <link>http://ropengov.org/fi/2020/10/hetu-paketti/</link>
  <pubDate>Thu, 29 Oct 2020 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2020/10/hetu-paketti/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/2020/10/hetu-paketti/index.fi_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;style type=&#34;text/css&#34;&gt;
pre &gt; code.sourceCode { white-space: pre; position: relative; }
pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre &gt; code.sourceCode { white-space: pre-wrap; }
pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code &gt; span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code &gt; span &gt; a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {  background-color: #f8f8f8; }
@media screen {
pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ef2929; } /* Alert */
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #c4a000; } /* Attribute */
code span.bn { color: #0000cf; } /* BaseN */
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4e9a06; } /* Char */
code span.cn { color: #000000; } /* Constant */
code span.co { color: #8f5902; font-style: italic; } /* Comment */
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
code span.dt { color: #204a87; } /* DataType */
code span.dv { color: #0000cf; } /* DecVal */
code span.er { color: #a40000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #0000cf; } /* Float */
code span.fu { color: #000000; } /* Function */
code span.im { } /* Import */
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
code span.ot { color: #8f5902; } /* Other */
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
code span.sc { color: #000000; } /* SpecialChar */
code span.ss { color: #4e9a06; } /* SpecialString */
code span.st { color: #4e9a06; } /* String */
code span.va { color: #000000; } /* Variable */
code span.vs { color: #4e9a06; } /* VerbatimString */
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
&lt;/style&gt;


&lt;div id=&#34;yleistä&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Yleistä&lt;/h2&gt;
&lt;p&gt;Hetu-paketti on tarkoitettu suomalaisten henkilötunnusten algoritmiseen käsittelyyn. Paketista on erityisesti hyötyä, mikäli halutaan poimia informaatiota suuresta määrästä henkilötunnuksia, kuten tunnuksen haltijoiden iät tai sukupuolet. Henkilötunnusten käsittelyyn tarkoitettujen työkalujen kehitystyö alkoi osana sorvi-pakettia, mutta ne eriytettiin omaksi paketikseen vuonna 2013. Syksyllä 2020 hetu-paketti saatettiin julkaisukelpoiseen kuntoon ja se on saatavissa &lt;a href=&#34;https://CRAN.R-project.org/package=hetu&#34;&gt;CRANista&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hetu-paketin esikuvana on toiminut &lt;a href=&#34;https://CRAN.R-project.org/package=sweidnumbr&#34;&gt;sweidnumbr-paketti&lt;/a&gt; ja pakettien käyttämät funktiot on mahdollisuuksien mukaan nimetty samalla tavalla.&lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tämä blogikirjoitus sisältää aluksi yleistietoa suomalaisista henkilötunnuksia. Pelkästään paketin toiminnoista kiinnostuneet voivat siirtyä suoraan &lt;a href=&#34;#hetu-paketin-käyttö&#34;&gt;käytännön esimerkkejä sisältävään osaan&lt;/a&gt; tai tutustua hetu-paketin sisältämään vignette-ohjeeseen (komennolla ‘vignette(“hetu”)’).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;suomalainen-henkilötunnus&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Suomalainen henkilötunnus&lt;/h2&gt;
&lt;p&gt;Henkilötunnus on henkilöiden yksilöintiin tarkoitettu tunnus, joka koostuu syntymäajasta (PP/KK/VV), syntymävuosisataa kuvaavasta merkistä (-, + tai A), yksilönumerosta (NNN) sekä tarkistusmerkistä (C). Käytännössä henkilötunnuksen yksilönumeron avulla pystytään pystytään erottamaan toisistaan samana päivänä syntyneet henkilöt sekä tehdä päätelmiä henkilön sukupuolesta. Naisilla numero on parillinen ja miehillä pariton.&lt;a href=&#34;#fn2&#34; class=&#34;footnote-ref&#34; id=&#34;fnref2&#34;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Henkilötunnusta käytetään laajalti julkisella ja yksityisellä sektorilla. Henkilötunnus toimii usein sen yksilöivyyden vuoksi rekisteritietokannoissa ns. avaimena, jonka avulla rekistereiden sisältämät tietotaulut pystytään yhdistämään tiettyyn käyttäjään ja toisaalta eri rekistereistä löytyvää dataa voidaan yhdistellä toisiinsa.&lt;/p&gt;
&lt;p&gt;Henkilötunnus ei sinänsä ole salassapidettävää tietoa, mutta sen, kuten muidenkin henkilötietojen, käsittelyyn liittyy rajoituksia: henkilötunnusta saa käsitellä rekisteröidyn yksiselitteisesti antamalla suostumuksella tai mikäli rekisteröidyn yksiselitteinen yksilöiminen on tärkeää.&lt;a href=&#34;#fn3&#34; class=&#34;footnote-ref&#34; id=&#34;fnref3&#34;&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt; Rajoitukset eivät todennäköisesti ole täysin aiheettomia, sillä henkilötunnusten käyttö ei ole täysin ongelmatonta. Tähän palataan blogin loppupuolella.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;henkilötunnusten-algoritminen-käsittely-hetu-paketilla&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Henkilötunnusten algoritminen käsittely hetu-paketilla&lt;/h2&gt;
&lt;p&gt;Henkilötunnusten sisältämän tiedon käsittely onnistuu melko hyvin ilman mitään apuvälineitä. Syntymäajan ja sukupuolen määrittämiseksi ei tarvitse suorittaa minkäänlaisia laskutoimituksia ja henkilötunnuksen muodon oikeellisuuden arviointi, etenkin päivämäärän, pituuden ja yksilönumeron osalta, onnistuu hyvin silmämääräisestikin. Tarkistusmerkin tarkistaminen ja laskeminen vaatii enemmän vaivaa ja todennäköisesti myös laskimen, kynää ja paperia. Tehtävä on kuitenkin suoritettavissa.&lt;/p&gt;
&lt;p&gt;Hetu-paketin suurin hyöty liittyy luonnollisesti tilanteisiin, joissa käsiteltäviä henkilötunnuksia on suuri määrä. Paketin sisältämien funktioiden avulla jopa miljoonista henkilötunnuksista voidaan helposti ja nopeasti poimia seuraavat tiedot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hetu_date / pin_date: syntymäaika&lt;/li&gt;
&lt;li&gt;hetu_sex / pin_sex: sukupuoli, Male tai Female&lt;/li&gt;
&lt;li&gt;hetu_age / pin_age: ikä vuosina, kuukausina tai päivinä (kysymishetkellä tai haluttuna ajankohtana)&lt;/li&gt;
&lt;li&gt;hetu_ctrl / pin_ctrl: henkilötunnuksen validius, TRUE tai FALSE&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Henkilötunnuksen oikeellisuus määräytyy sen yksittäisten osien oikeellisuuden perusteella. Jos yksikin henkilötunnuksen osa on vääränlainen (esimerkiksi päivämäärä on muotoa 30/02/01 tai yksilönumero on 000 tai 001), henkilötunnuksessa on jonkinlainen virhe ja sen sisältämien tietojen luotettavuudesta ei voida olla varmoja. Käyttäjä voi halutessaan tulostaa hetu_diagnostic -funktiota käyttämällä diagnostisia tietoja henkilötunnusten yksittäisten osien, kuten päivämäärän, vuosisadan merkin, yksilönumeron, tarkistenumeron, tunnuksen pituuden ym. oikeellisuudesta.&lt;/p&gt;
&lt;p&gt;Hetu-paketti mahdollistaa satunnaisesti muodostettujen, tietylle aikavälille osuvien henkilötunnusten generoimisen rhetu-funktiolla. Paketin toiminnallisuuksien testaaminen onnistuu helposti ilman oikeilta ihmisiltä kerättyä aineistoa. Rhetu-funktio mahdollistaa myös ns. keinotekoisten tai väliaikaisten hetujen generoimisen. Keinotekoisia henkilötunnuksia on toisinaan myönnetty organisaatiokohtaisesti henkilöille, joilla ei ole ollut pysyvää suomalaista henkilötunnusta tai joiden henkilöllisyyttä ei ole pystytty varmentamaan. Keinotekoiset henkilötunnukset eroavat varsinaisista henkilötunnuksista siten, että niiden yksilönumero on välillä 900-999. Keinotekoisten henkilötunnusten generoiminen saattaa olla hyödyllistä, mikäli halutaan varmistua että aineistossa ei vahingossakaan ole aitoja henkilötunnuksia.&lt;/p&gt;
&lt;p&gt;Henkilötunnuksesta poimittua tietoa voidaan käyttää myös validoimaan ihmisten itse ilmoittamaa tietoa. Rhetu-funktio tuottaa pelkästään valideja henkilötunnuksia, mutta todellisessa aineistossa henkilötunnuksen kirjaamisessa tai tallentamisessa on saattanut tapahtua näppäily- tai lukuvirheitä. Hetu-pakettia voidaankin käyttää validoimaan ihmisistä tallennettujen tietojen laatua tai tehdä vertailua käyttäjien ilmoittamien syntymäaikojen ja henkilötunnuksen syntymäajan välillä.&lt;/p&gt;
&lt;p&gt;Suomalaisen henkilötunnuksen tarkistusmerkki on erilaisten lyöntivirheiden kannalta vikaherkkä. Esimerkiksi päivien, kuukausien ja vuosien järjestyksen vaihtuminen tai päivämäärän väärin merkitsemisen tarkistusmerkin pysyessä samana saa sen, että henkilötunnus ei enää mene läpi tarkistuksessa. Esimerkiksi ruotsalaisen henkilötunnuksen tapauksessa päivien ja kuukausien järjestyksen vaihtuminen ei vaikuta tarkistusmerkin laskentaan.&lt;a href=&#34;#fn4&#34; class=&#34;footnote-ref&#34; id=&#34;fnref4&#34;&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;hetu-paketin-käyttö&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Hetu-paketin käyttö&lt;/h3&gt;
&lt;p&gt;Paketin asentaminen R-ympäristöön CRANista:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb1&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb1-1&#34;&gt;&lt;a href=&#34;#cb1-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;install.packages&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;hetu&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Paketin lataaminen kirjastoon ja 2 henkilötunnusta sisältävän esimerkkivektorin asettaminen:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb2&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb2-1&#34;&gt;&lt;a href=&#34;#cb2-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(hetu)&lt;/span&gt;
&lt;span id=&#34;cb2-2&#34;&gt;&lt;a href=&#34;#cb2-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;example_pins &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;010101-0101&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;111111-111C&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Perustietojen tarkastelu hetuja sisältävästä vektorista onnistuu yksinkertaisesti hetu-komennolla, joka tulostaa perusmuodossa data frame -tyyppisen taulukon. Taulukko on tässä esimerkissä muotoiltu hieman kauniimmaksi kable-funktiolla:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb3&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb3-1&#34;&gt;&lt;a href=&#34;#cb3-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;knitr&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;kable&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;hetu&lt;/span&gt;(example_pins))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;hetu&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;sex&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;p.num&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;checksum&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;date&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;day&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;month&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;year&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;century&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;valid.pin&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;010101-0101&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Female&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;010&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1901-01-01&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1901&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;-&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;111111-111C&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Male&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;111&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;C&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1911-11-11&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;11&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;11&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1911&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;-&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;TRUE&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Taulukon sisältämien tietojen, erityisesti sukupuolen ja päivämäärän, tarkastelu onnistuu joko hetu-funktion extract-parametrin avulla tai siihen erikoistuneiden funktioiden avulla:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb4&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb4-1&#34;&gt;&lt;a href=&#34;#cb4-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;example_pins &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;010101-0101&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;111111-111C&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb4-2&#34;&gt;&lt;a href=&#34;#cb4-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Hetujen omistajien sukupuolen poiminta&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-3&#34;&gt;&lt;a href=&#34;#cb4-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu&lt;/span&gt;(example_pins, &lt;span class=&#34;at&#34;&gt;extract =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;sex&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;Female&amp;quot; &amp;quot;Male&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb6&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb6-1&#34;&gt;&lt;a href=&#34;#cb6-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_sex&lt;/span&gt;(example_pins)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;Female&amp;quot; &amp;quot;Male&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb8&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb8-1&#34;&gt;&lt;a href=&#34;#cb8-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Hetujen sisältämän päivämäärän poimiminen&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb8-2&#34;&gt;&lt;a href=&#34;#cb8-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu&lt;/span&gt;(example_pins, &lt;span class=&#34;at&#34;&gt;extract =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;date&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;1901-01-01&amp;quot; &amp;quot;1911-11-11&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb10&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb10-1&#34;&gt;&lt;a href=&#34;#cb10-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_date&lt;/span&gt;(example_pins)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;1901-01-01&amp;quot; &amp;quot;1911-11-11&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb12&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb12-1&#34;&gt;&lt;a href=&#34;#cb12-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Hetujen oikeellisuuden tarkistus&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb12-2&#34;&gt;&lt;a href=&#34;#cb12-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu&lt;/span&gt;(example_pins, &lt;span class=&#34;at&#34;&gt;extract =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;valid.pin&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] TRUE TRUE&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb14&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb14-1&#34;&gt;&lt;a href=&#34;#cb14-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_ctrl&lt;/span&gt;(example_pins)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] TRUE TRUE&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb16&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb16-1&#34;&gt;&lt;a href=&#34;#cb16-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Esimerkki tiedosta, jolle ei löydy erikoistunutta funktiota&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb16-2&#34;&gt;&lt;a href=&#34;#cb16-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu&lt;/span&gt;(example_pins, &lt;span class=&#34;at&#34;&gt;extract =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;p.num&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;010&amp;quot; &amp;quot;111&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Muista tiedoista poiketen ikää ei saa suoraan poimittua hetu-funktion extract-parametria käyttämällä. Ikä halutussa aikamääreessä ja haluttuna ajankohtana saadaan hetu_age-funktion avulla. Perusasetus on ikä vuosina kysymisajankohtana, mutta myös ikä kuukausina tai päivinä on mahdollinen.&lt;/p&gt;
&lt;p&gt;Tässä esimerkissä käytetään myös rhetu-funktiota, jonka avulla voidaan generoida haluttu määrä keinotekoisia henkilötunnuksia esimerkiksi paketin ominaisuuksien testaamiseksi.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb18&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb18-1&#34;&gt;&lt;a href=&#34;#cb18-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;example_pins2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;rhetu&lt;/span&gt;(&lt;span class=&#34;dv&#34;&gt;5&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;start =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;1950-01-01&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;end =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;1995-05-07&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb18-2&#34;&gt;&lt;a href=&#34;#cb18-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Ikä vuosina&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb18-3&#34;&gt;&lt;a href=&#34;#cb18-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_age&lt;/span&gt;(example_pins2)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## The age in years has been calculated at 2021-01-29.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 43 52 61 49 31&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb21&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb21-1&#34;&gt;&lt;a href=&#34;#cb21-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Ikä kuukasina&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb21-2&#34;&gt;&lt;a href=&#34;#cb21-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_age&lt;/span&gt;(example_pins2, &lt;span class=&#34;at&#34;&gt;timespan =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;months&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## The age in months has been calculated at 2021-01-29.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 526 630 740 598 381&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb24&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb24-1&#34;&gt;&lt;a href=&#34;#cb24-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Minkä ikäisiä hetujen omistajat olivat 2011 puolivälissä?&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb24-2&#34;&gt;&lt;a href=&#34;#cb24-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_age&lt;/span&gt;(example_pins2, &lt;span class=&#34;at&#34;&gt;date =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;2011-01-01&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## The age in years has been calculated at 2011-01-01.&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## [1] 33 42 51 39 21&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb27&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb27-1&#34;&gt;&lt;a href=&#34;#cb27-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Visualisointi: laatikkojanakuvaaja sukupuolen mukaan ryhmiteltynä&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb27-2&#34;&gt;&lt;a href=&#34;#cb27-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;example_pins3 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;rhetu&lt;/span&gt;(&lt;span class=&#34;dv&#34;&gt;20&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;start =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;1950-01-01&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;end =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;1995-05-07&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;p.male =&lt;/span&gt; &lt;span class=&#34;fl&#34;&gt;0.5&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb27-3&#34;&gt;&lt;a href=&#34;#cb27-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;boxplot&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;hetu_age&lt;/span&gt;(example_pins3)&lt;span class=&#34;sc&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;hetu_sex&lt;/span&gt;(example_pins3), &lt;span class=&#34;at&#34;&gt;xlab =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;ylab =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;Ikä vuosina&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;col=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;gold&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;darkgreen&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## The age in years has been calculated at 2021-01-29.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/10/hetu-paketti/index.fi_files/figure-html/unnamed-chunk-4-1.png&#34; width=&#34;672&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Joissakin tapauksissa voi olla hyödyllistä tarkastella epävalidien hetujen diagnostiikkatietoa. Tiedot saadaan hetu_diagnostic -funktion avulla, jota demonstroimme monella tavalla virheellisen henkilötunnuksen avulla:&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb29&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb29-1&#34;&gt;&lt;a href=&#34;#cb29-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_diagnostic&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;321399-000G&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;##           hetu is.temp valid.p.num valid.checksum correct.checksum valid.date
## 21 321399-000G   FALSE       FALSE          FALSE            FALSE      FALSE
##    valid.day valid.month valid.year valid.length valid.century
## 21     FALSE       FALSE       TRUE         TRUE          TRUE&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb31&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb31-1&#34;&gt;&lt;a href=&#34;#cb31-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Tulosta ainoastaan halutut sarakkeet&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb31-2&#34;&gt;&lt;a href=&#34;#cb31-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;hetu_diagnostic&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;321399-000G&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;extract =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;valid.p.num&amp;quot;&lt;/span&gt;, &lt;span class=&#34;st&#34;&gt;&amp;quot;valid.length&amp;quot;&lt;/span&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;##           hetu valid.p.num valid.length
## 21 321399-000G       FALSE         TRUE&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;yritys--ja-yhteisötunnusten-y-tunnus-käsittely&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Yritys- ja yhteisötunnusten (Y-tunnus) käsittely&lt;/h2&gt;
&lt;p&gt;Hetu-paketissa on myös sweidnumbr-pakettia vastaavalla tavalla mahdollisuus generoida ja validoida suomalaisia yritys- ja yhteisötunnuksia. Suomalainen Y-tunnus koostuu seitsemästä numerosta, väliviivasta ja tarkistusmerkistä ja on muotoa 1234567-8.&lt;a href=&#34;#fn5&#34; class=&#34;footnote-ref&#34; id=&#34;fnref5&#34;&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/a&gt; Y-tunnus on englanniksi Business Identity Code, mistä johtuen tässä paketissa y-tunnusten käsittelyyn tarkoitettujen funktioiden etuliitteenä käytetään lyhennettä bid:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bid_ctrl(bid): tarkastaa y-tunnuksen oikeellisuuden, TRUE tai FALSE&lt;/li&gt;
&lt;li&gt;rbid(n): generoi n kappaletta y-tunnuksia&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb33&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb33-1&#34;&gt;&lt;a href=&#34;#cb33-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;example_bids &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;rbid&lt;/span&gt;(&lt;span class=&#34;dv&#34;&gt;2&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb33-2&#34;&gt;&lt;a href=&#34;#cb33-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;example_bids&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] &amp;quot;4481699-2&amp;quot; &amp;quot;2368999-8&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb35&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb35-1&#34;&gt;&lt;a href=&#34;#cb35-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;bid_ctrl&lt;/span&gt;(example_bids)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;## [1] TRUE TRUE&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Toisin kuin henkilötunnusten tapauksessa, y-tunnuksista ei voida poimia mitään muuta lisäinformaatiota, esimerkiksi yrityksen perustamisajankohtaan tai toimialaan liittyen.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;henkilötunnusten-tulevaisuus-ja-tietoturvallisuus&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Henkilötunnusten tulevaisuus ja tietoturvallisuus&lt;/h2&gt;
&lt;p&gt;Henkilötunnusten uudistamisesta on käyty viime vuosina runsaasti julkista keskustelua. Nykymuotoisen henkilötunnuksen ongelmana on pidetty esimerkiksi henkilötunnusten rajallista määrää sekä sitä, että henkilötunnuksesta ilmenee henkilötietoja kuten sukupuoli ja ikä. Toisaalta uudistusta vastaan puhuu julkisen ja yksityisen sektorin toimijoiden tietojärjestelmien päivitysten korkeat kustannukset. Kirjoitushetkellä tuoreimman ehdotuksen mukaan henkilötunnukset olisivat säilymässä tulevaisuudessakin muodoltaan nykyisiä vastaavina sillä erotuksella, että jatkossa vapaana olevat parilliset ja parittomat yksilönumerot jaettaisiin tasaisesti molemmille sukupuolille.&lt;a href=&#34;#fn6&#34; class=&#34;footnote-ref&#34; id=&#34;fnref6&#34;&gt;&lt;sup&gt;6&lt;/sup&gt;&lt;/a&gt; &lt;a href=&#34;#fn7&#34; class=&#34;footnote-ref&#34; id=&#34;fnref7&#34;&gt;&lt;sup&gt;7&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tietosuojaperiaatteen mukaan henkilötietoja tulisi kerätä ja käsitellä ainoastaan siinä laajuudessa, mikä on tarkoituksenmukaista tai välttämätöntä palvelun käyttötarkoituksen kannalta.&lt;a href=&#34;#fn8&#34; class=&#34;footnote-ref&#34; id=&#34;fnref8&#34;&gt;&lt;sup&gt;8&lt;/sup&gt;&lt;/a&gt; Tätä taustaa vasten voidaan pitää ongelmallisena, että henkilötunnusten laajamittainen käyttö aiheuttaa vähintäänkin epäsuorasti tilanteen, jossa palvelun tarjoajalla on usein tarpeettomasti hallussaan tietoa käyttäjien iästä ja sukupuolesta.&lt;/p&gt;
&lt;p&gt;Käytännössä suuremmat ongelmat koituvat ihmisille kuitenkin tavasta, jolla henkilötunnuksia käytetään suomalaisessa yhteiskunnassa. Vaikka henkilötunnus ei teoriassa ole salassapidettävää tietoa, rikollisella tai muutoin vilpillisellä tavalla toimiva henkilö voi aiheuttaa monenlaista haittaa, mikäli hän saa haltuunsa toisen ihmisen henkilötunnuksen. Henkilötunnusta on saatettu kysyä puhelimitse asioivalta henkilöltä henkilöllisyyden varmistukseksi, ennen kuin hänelle on kerrottu sensitiivisiä potilastietoja. Joskus henkilötunnus saatetaan asettaa verkkopalvelussa uuden käyttäjän ensimmäiseksi salasanaksi, joka jokaisen pitäisi muistaa vaihtaa ensimmäisen kirjautumiskerran jälkeen. On itsestään selvää, että tällaiset käytännöt eivät ole yksilöiden tietosuojan kannalta hyödyllisiä.&lt;/p&gt;
&lt;p&gt;Henkilötunnusten epätarkoituksenmukainen käyttö julkisella ja yksityisellä sektorilla on varmasti osaltaan vaikuttanut kansalaisten keskuudessa syntyneisiin käsityksiin henkilötunnusten luonteesta ja tarkoituksesta. Olisi toivottavaa, että viimeistään syksyn 2020 tietovuodot toimisivat sysäyksenä tietoturvallisempien käytäntöjen käyttöönottoon kaikkialla yhteiskunnassa.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;lähdeviitteet&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Lähdeviitteet&lt;/h2&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;Lisätietoja sweidnumbr-paketista esim. tästä blogikirjoituksesta: Magnusson, Måns &amp;amp; Bülow, Erik. 2015. R made personal (at least for swedes)!. URL: &lt;a href=&#34;https://ropengov.org/2015/08/r-made-personal-at-least-for-swedes/&#34; class=&#34;uri&#34;&gt;https://ropengov.org/2015/08/r-made-personal-at-least-for-swedes/&lt;/a&gt;&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn2&#34;&gt;&lt;p&gt;Digi- ja väestötietovirasto. Henkilötunnus. URL: &lt;a href=&#34;https://dvv.fi/henkilotunnus&#34; class=&#34;uri&#34;&gt;https://dvv.fi/henkilotunnus&lt;/a&gt;&lt;a href=&#34;#fnref2&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn3&#34;&gt;&lt;p&gt;Ks. esim. Finlex. HE 59/2013. URL: &lt;a href=&#34;https://www.finlex.fi/fi/esitykset/he/2013/20130059&#34; class=&#34;uri&#34;&gt;https://www.finlex.fi/fi/esitykset/he/2013/20130059&lt;/a&gt;&lt;a href=&#34;#fnref3&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn4&#34;&gt;&lt;p&gt;Teppo Vuoren nettisivuilta löytyy kattavasti erilaisten tarkistusmerkkien laskentamenetelmien kuvaukset: &lt;a href=&#34;https://tarkistusmerkit.teppovuori.fi/tarkmerk.htm&#34; class=&#34;uri&#34;&gt;https://tarkistusmerkit.teppovuori.fi/tarkmerk.htm&lt;/a&gt;&lt;a href=&#34;#fnref4&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn5&#34;&gt;&lt;p&gt;Yritys- ja yhteisötietojärjestelmä. Y-tunnus. URL: &lt;a href=&#34;https://www.ytj.fi/index/y-tunnus.html&#34; class=&#34;uri&#34;&gt;https://www.ytj.fi/index/y-tunnus.html&lt;/a&gt;&lt;a href=&#34;#fnref5&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn6&#34;&gt;&lt;p&gt;Tuomas Salsteen nettisivuilta löytyy hyvä selvitys henkilötunnuksen historiasta, ongelmakohdista että uudistustyöryhmän kehitysehdotuksista. URL: &lt;a href=&#34;https://www.tuomas.salste.net/doc/hetu/tunnus.html&#34; class=&#34;uri&#34;&gt;https://www.tuomas.salste.net/doc/hetu/tunnus.html&lt;/a&gt;.&lt;a href=&#34;#fnref6&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn7&#34;&gt;&lt;p&gt;Yle Uutiset. 2020. Uusi henkilötunnus kaikille Suomen kansalaisille ja Suomessa asuville, ehdottaa työryhmä – jatkossa tunnuksesta ei selviäisi ikä, syntymäaika tai sukupuoli. Julkaistu 8.4.2020, viitattu 23.10.2020. URL: &lt;a href=&#34;https://yle.fi/uutiset/3-11299218&#34; class=&#34;uri&#34;&gt;https://yle.fi/uutiset/3-11299218&lt;/a&gt;&lt;a href=&#34;#fnref7&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn8&#34;&gt;&lt;p&gt;Tietosuojavaltuutetun toimisto. Käyttötarkoitussidonnaisuus. Viitattu 26.10.2020. &lt;a href=&#34;https://tietosuoja.fi/kayttotarkoitussidonnaisuus&#34; class=&#34;uri&#34;&gt;https://tietosuoja.fi/kayttotarkoitussidonnaisuus&lt;/a&gt;&lt;a href=&#34;#fnref8&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description> 
  </item>
  
<item>
  <title>R-paketti geofi Tilastokeskuksen avointen paikkatietoaineistojen käyttöön</title>
  <link>http://ropengov.org/fi/2020/02/geofi1/</link>
  <pubDate>Mon, 10 Feb 2020 10:53:45 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2020/02/geofi1/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/2020/02/geofi1/index.fi_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;style type=&#34;text/css&#34;&gt;
pre &gt; code.sourceCode { white-space: pre; position: relative; }
pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre &gt; code.sourceCode { white-space: pre-wrap; }
pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code &gt; span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code &gt; span &gt; a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {  background-color: #f8f8f8; }
@media screen {
pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ef2929; } /* Alert */
code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #c4a000; } /* Attribute */
code span.bn { color: #0000cf; } /* BaseN */
code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4e9a06; } /* Char */
code span.cn { color: #000000; } /* Constant */
code span.co { color: #8f5902; font-style: italic; } /* Comment */
code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
code span.dt { color: #204a87; } /* DataType */
code span.dv { color: #0000cf; } /* DecVal */
code span.er { color: #a40000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #0000cf; } /* Float */
code span.fu { color: #000000; } /* Function */
code span.im { } /* Import */
code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
code span.ot { color: #8f5902; } /* Other */
code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
code span.sc { color: #000000; } /* SpecialChar */
code span.ss { color: #4e9a06; } /* SpecialString */
code span.st { color: #4e9a06; } /* String */
code span.va { color: #000000; } /* Variable */
code span.vs { color: #4e9a06; } /* VerbatimString */
code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
&lt;/style&gt;


&lt;p&gt;Olemme hiljalleen kirjoittaneet &lt;a href=&#34;https://ropengov.github.io/&#34;&gt;ropengov&lt;/a&gt;-porukalla seuraajaa &lt;a href=&#34;https://ropengov.github.io/gisfin/&#34;&gt;gisfin&lt;/a&gt;-paketille nimeltä &lt;a href=&#34;https://ropengov.github.io/geofi/index.html&#34;&gt;&lt;code&gt;geofi&lt;/code&gt;&lt;/a&gt;. Paketti mahdollistaa &lt;em&gt;avointen Suomea koskevien paikkatietoaineistojen&lt;/em&gt; käytön R:ssä. Painopiste on ollut hallinnollisissa aluerajoissa ja tällä hetkellä ensisijaisena aineistolähteenä on Tilastokeskuksen &lt;code&gt;wfs&lt;/code&gt;-rajapinta, josta &lt;code&gt;geofi&lt;/code&gt;-paketin funktioilla voi ladata &lt;em&gt;kuntarajat&lt;/em&gt;, &lt;em&gt;postinumeroalueet&lt;/em&gt; sekä &lt;em&gt;väestöruudukot&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;geofi&lt;/code&gt;-pakettia ei ole vielä julkaistu CRAN:ssa, etkä voi asentaa sitä &lt;code&gt;intall.packages()&lt;/code&gt;-funktiolla. Sen sijaan voit asentaa sen suoraan Github:sta komennolla: &lt;code&gt;remotes::install_github(&#34;ropengov/geofi&#34;)&lt;/code&gt; ja kokeilla seuraavien esimerkkien tai tämän &lt;a href=&#34;https://muuankarski.shinyapps.io/geofi_selain/&#34;&gt;&lt;code&gt;geofi_selain&lt;/code&gt;&lt;/a&gt;-sovelluksen avulla.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kuntarajat&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb1&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb1-1&#34;&gt;&lt;a href=&#34;#cb1-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(geofi)&lt;/span&gt;
&lt;span id=&#34;cb1-2&#34;&gt;&lt;a href=&#34;#cb1-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(ggplot2)&lt;/span&gt;
&lt;span id=&#34;cb1-3&#34;&gt;&lt;a href=&#34;#cb1-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-4&#34;&gt;&lt;a href=&#34;#cb1-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;municipalities &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;get_municipalities&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2020&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;scale =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;4500&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb1-5&#34;&gt;&lt;a href=&#34;#cb1-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(municipalities) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb1-6&#34;&gt;&lt;a href=&#34;#cb1-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.integer&lt;/span&gt;(kunta))) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb1-7&#34;&gt;&lt;a href=&#34;#cb1-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;scale_fill_viridis_c&lt;/span&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/02/geofi1/index.fi_files/figure-html/municipality_map-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Postinumeroalueet&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb2&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb2-1&#34;&gt;&lt;a href=&#34;#cb2-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;zipcodes &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;get_zipcodes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2020&lt;/span&gt;) &lt;/span&gt;
&lt;span id=&#34;cb2-2&#34;&gt;&lt;a href=&#34;#cb2-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(zipcodes) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb2-3&#34;&gt;&lt;a href=&#34;#cb2-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.integer&lt;/span&gt;(posti_alue)), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb2-4&#34;&gt;&lt;a href=&#34;#cb2-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;scale_fill_viridis_c&lt;/span&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/02/geofi1/index.fi_files/figure-html/zipcode_map-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Väestöruudukko&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb3&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb3-1&#34;&gt;&lt;a href=&#34;#cb3-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;pop_grid &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;get_population_grid&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2018&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;resolution =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;5&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb3-2&#34;&gt;&lt;a href=&#34;#cb3-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(pop_grid) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb3-3&#34;&gt;&lt;a href=&#34;#cb3-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; objectid), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb3-4&#34;&gt;&lt;a href=&#34;#cb3-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;scale_fill_viridis_c&lt;/span&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/02/geofi1/index.fi_files/figure-html/population_grid_data-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Maakuntajako, sairaanhoitopiirit ja useat muut aluejaot perustuvat kuntajakoon. &lt;code&gt;get_municipalities()&lt;/code&gt;-funtion palauttamassa datassa löytyvät &lt;a href=&#34;https://ropengov.github.io/geofi/reference/municipality_key_2020.html&#34;&gt;nämä attribuuttimuuttujat&lt;/a&gt; (vuosi 2020), joiden avulla voit aggregoida kuntatason dataa ylemmille tasoille.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb4&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb4-1&#34;&gt;&lt;a href=&#34;#cb4-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(dplyr)&lt;/span&gt;
&lt;span id=&#34;cb4-2&#34;&gt;&lt;a href=&#34;#cb4-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;municipalities &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;get_municipalities&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2019&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;scale =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;4500&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb4-3&#34;&gt;&lt;a href=&#34;#cb4-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;regions &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; municipalities &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-4&#34;&gt;&lt;a href=&#34;#cb4-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;group_by&lt;/span&gt;(maakunta_name_fi) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;summarise&lt;/span&gt;()&lt;/span&gt;
&lt;span id=&#34;cb4-5&#34;&gt;&lt;a href=&#34;#cb4-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(regions) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb4-6&#34;&gt;&lt;a href=&#34;#cb4-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; maakunta_name_fi)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb4-7&#34;&gt;&lt;a href=&#34;#cb4-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;scale_fill_viridis_d&lt;/span&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/02/geofi1/index.fi_files/figure-html/aggregate-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Luonnollisesti voit yhdistää &lt;code&gt;geofi&lt;/code&gt;:n datoihin muita attribuuttidatoja. Alla olevassa esimerkissä haetaa Tilastokeskuksen kuntien avainluvut ja luodaan kartta kuntien väkiluvuista.&lt;/p&gt;
&lt;div class=&#34;sourceCode&#34; id=&#34;cb5&#34;&gt;&lt;pre class=&#34;sourceCode r&#34;&gt;&lt;code class=&#34;sourceCode r&#34;&gt;&lt;span id=&#34;cb5-1&#34;&gt;&lt;a href=&#34;#cb5-1&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(tidyr)&lt;/span&gt;
&lt;span id=&#34;cb5-2&#34;&gt;&lt;a href=&#34;#cb5-2&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(pxweb)&lt;/span&gt;
&lt;span id=&#34;cb5-3&#34;&gt;&lt;a href=&#34;#cb5-3&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;library&lt;/span&gt;(janitor)&lt;/span&gt;
&lt;span id=&#34;cb5-4&#34;&gt;&lt;a href=&#34;#cb5-4&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-5&#34;&gt;&lt;a href=&#34;#cb5-5&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;municipalities17 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;get_municipalities&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;year =&lt;/span&gt; &lt;span class=&#34;dv&#34;&gt;2017&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb5-6&#34;&gt;&lt;a href=&#34;#cb5-6&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-7&#34;&gt;&lt;a href=&#34;#cb5-7&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# pull municipality data from Statistics Finland&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-8&#34;&gt;&lt;a href=&#34;#cb5-8&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;pxweb_query_list &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-9&#34;&gt;&lt;a href=&#34;#cb5-9&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;list&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;Alue 2019&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;),&lt;/span&gt;
&lt;span id=&#34;cb5-10&#34;&gt;&lt;a href=&#34;#cb5-10&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;       &lt;span class=&#34;st&#34;&gt;&amp;quot;Tiedot&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;),&lt;/span&gt;
&lt;span id=&#34;cb5-11&#34;&gt;&lt;a href=&#34;#cb5-11&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;       &lt;span class=&#34;st&#34;&gt;&amp;quot;Vuosi&amp;quot;&lt;/span&gt;&lt;span class=&#34;ot&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;c&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;2017&amp;quot;&lt;/span&gt;))&lt;/span&gt;
&lt;span id=&#34;cb5-12&#34;&gt;&lt;a href=&#34;#cb5-12&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;px_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-13&#34;&gt;&lt;a href=&#34;#cb5-13&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;pxweb_get&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;url =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;http://pxnet2.stat.fi/PXWeb/api/v1/fi/Kuntien_avainluvut/2019/kuntien_avainluvut_2019_aikasarja.px&amp;quot;&lt;/span&gt;,&lt;/span&gt;
&lt;span id=&#34;cb5-14&#34;&gt;&lt;a href=&#34;#cb5-14&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;            &lt;span class=&#34;at&#34;&gt;query =&lt;/span&gt; pxweb_query_list)&lt;/span&gt;
&lt;span id=&#34;cb5-15&#34;&gt;&lt;a href=&#34;#cb5-15&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Convert to data.frame&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-16&#34;&gt;&lt;a href=&#34;#cb5-16&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;tk_data &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.data.frame&lt;/span&gt;(px_data, &lt;span class=&#34;at&#34;&gt;column.name.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;, &lt;span class=&#34;at&#34;&gt;variable.value.type =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span id=&#34;cb5-17&#34;&gt;&lt;a href=&#34;#cb5-17&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;tk_data2 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; tk_data &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-18&#34;&gt;&lt;a href=&#34;#cb5-18&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;rename&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;name =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Alue 2019&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-19&#34;&gt;&lt;a href=&#34;#cb5-19&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;mutate&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;name =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;as.character&lt;/span&gt;(name),&lt;/span&gt;
&lt;span id=&#34;cb5-20&#34;&gt;&lt;a href=&#34;#cb5-20&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;         &lt;span class=&#34;co&#34;&gt;# Paste Tiedot and Vuosi&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-21&#34;&gt;&lt;a href=&#34;#cb5-21&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;         &lt;span class=&#34;at&#34;&gt;Tiedot =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;paste&lt;/span&gt;(Tiedot, Vuosi)) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-22&#34;&gt;&lt;a href=&#34;#cb5-22&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;select&lt;/span&gt;(&lt;span class=&#34;sc&#34;&gt;-&lt;/span&gt;Vuosi) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-23&#34;&gt;&lt;a href=&#34;#cb5-23&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;spread&lt;/span&gt;(Tiedot, &lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;at&#34;&gt;Kuntien avainluvut&lt;/span&gt;&lt;span class=&#34;st&#34;&gt;`&lt;/span&gt;) &lt;span class=&#34;sc&#34;&gt;%&amp;gt;%&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-24&#34;&gt;&lt;a href=&#34;#cb5-24&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;as_tibble&lt;/span&gt;()&lt;/span&gt;
&lt;span id=&#34;cb5-25&#34;&gt;&lt;a href=&#34;#cb5-25&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;tk_data3 &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; janitor&lt;span class=&#34;sc&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;fu&#34;&gt;clean_names&lt;/span&gt;(tk_data2)&lt;/span&gt;
&lt;span id=&#34;cb5-26&#34;&gt;&lt;a href=&#34;#cb5-26&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-27&#34;&gt;&lt;a href=&#34;#cb5-27&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;co&#34;&gt;# Join with Statistics Finland attribute data&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-28&#34;&gt;&lt;a href=&#34;#cb5-28&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;dat &lt;span class=&#34;ot&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;left_join&lt;/span&gt;(municipalities17, tk_data3)&lt;/span&gt;
&lt;span id=&#34;cb5-29&#34;&gt;&lt;a href=&#34;#cb5-29&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-30&#34;&gt;&lt;a href=&#34;#cb5-30&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;&lt;span class=&#34;fu&#34;&gt;ggplot&lt;/span&gt;(dat) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt; &lt;/span&gt;
&lt;span id=&#34;cb5-31&#34;&gt;&lt;a href=&#34;#cb5-31&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;geom_sf&lt;/span&gt;(&lt;span class=&#34;fu&#34;&gt;aes&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;fill =&lt;/span&gt; vakiluku_2017), &lt;span class=&#34;at&#34;&gt;color =&lt;/span&gt; &lt;span class=&#34;fu&#34;&gt;alpha&lt;/span&gt;(&lt;span class=&#34;st&#34;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;, &lt;span class=&#34;dv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;dv&#34;&gt;3&lt;/span&gt;)) &lt;span class=&#34;sc&#34;&gt;+&lt;/span&gt;&lt;/span&gt;
&lt;span id=&#34;cb5-32&#34;&gt;&lt;a href=&#34;#cb5-32&#34; aria-hidden=&#34;true&#34; tabindex=&#34;-1&#34;&gt;&lt;/a&gt;  &lt;span class=&#34;fu&#34;&gt;scale_fill_viridis_c&lt;/span&gt;(&lt;span class=&#34;at&#34;&gt;trans =&lt;/span&gt; &lt;span class=&#34;st&#34;&gt;&amp;quot;sqrt&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2020/02/geofi1/index.fi_files/figure-html/municipalities_with_data-1.png&#34; width=&#34;900&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Katso lisää paketin kehityssivuilta Github:sta ja tule apuun kehittämisessä!&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Suuret ja avoimet aineistot politiikan tutkimuksessa</title>
  <link>http://ropengov.org/fi/2016/09/politiikan-tutkimuksen-aineistot/</link>
  <pubDate>Thu, 29 Sep 2016 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2016/09/politiikan-tutkimuksen-aineistot/</guid>
  <description>&lt;p&gt;Uusien vaaliaineistojen ja sosiaalisen median hyödyntäminen yhteiskuntatieteiden laskennallisiin menetelmiin perustuvassa tutkimuksessa on vasta aluillaan.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2016-09-29-politiikan-tutkimuksen-aineistot.fi_files/kuva0_verkko.jpg&#34; alt=&#34;kuva0&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Verkosta on alkanut muodostua lupaava aarreaitta myös politiikan tutkijoille. (CC0)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Perinteisesti politiikan tutkimus on nojautunut pääasiassa laadullisiin menetelmiin, ja ehkä lähinnä vain vaalitutkimus on poikennut valtavirrasta tukeutumalla ensisijaisesti määrälliseen tutkimusotteeseen. Asetelman syy saattaa juontua aineistojen saatavuudesta. Sellainen inhimillinen toiminta jota politiikan monimutkaiset vuorovaikutusverkostot ja ilmiöt edustavat, taipuu vaivoin määrällisesti mitattaviksi suureiksi ja muuttujiksi. Vaalit muodostavat kuitenkin erityisen poikkeuksen tähän säännönmukaisuuteen. Äänestyspäätös ilmaistaan numeerisena arvona, ja se kytkeytyy ehdokkaan ja mahdollisesti edustajan arvoihin ja edelleen äänestyspäätöksiin, syntyviin lakeihin ja vallan rakenteisiin niin kansallisesti, paikallisesti kuin ylikansallisestikin. Toiseen suuntaan äänestyspäätös kytkeytyy kyselytutkimusten kautta myös äänestäjiin ja heidän demografisiin piirteisiinsä sekä arvoihin. Näin vaaleihin kytkeytyvä tutkimuskenttä voi tarkastella monin tavoin yhteiskunnan ja äänestäjien kollektiivisen tason ilmiöitä, kuten vallanjaon muutoksien syitä, äänestämisen ja osallistumisen kiinnostavuutta tai puoluekannatuksen taustatekijöitä.&lt;/p&gt;
&lt;p&gt;Teknologian moninaisen hyödyntämisen yleistyminen ihmisten ja organisaatioiden päivittäisessä käytössä viime vuosikymmeninä on käynnistänyt politiikan tutkimuksen kannalta mielenkiintoisten aineistojen saatavuuteen liittyvän muutoksen. Yleisemmin ilmiötä on kutsuttu hieman eri rajauksin ja näkökulmin ajoin tietoyhteiskuntakehitykseksi, informaation vallankumoukseksi tai aikakaudeksi ja nyt viimeisimpänä digitalisaatioksi. Tälle ajalle on ominaista, että ihmisten välinen vuorovaikutus ja viestintä on teknologian välittämää. Niinpä jo suuri ja yhä kasvava osa inhimillisestä toiminnasta on jo syntyjään digitaalista tietoa, dataa, joka on myös mahdollisesti rakenteellista ja määrällisesti tarkasteltavissa.&lt;/p&gt;
&lt;p&gt;Tässä artikkelissa tarkastellaan ensin big datan ja avoimen datan käsitteitä ja niiden kautta sitä minkälaisia aineistoja laskennallisia menetelmiä hyödyntävässä politiikan tutkimuksessa Suomessa on viime aikoina käytetty. Samalla nostetaan esille joitakin aineistoja hyödyntäneitä tutkimuksia ja menetelmiä.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Muotisanoja vai määriteltyjä käsitteitä?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ensin on syytä määritellä mitä datalla tarkoitetaan ja minkälaisissa muodoissa se ilmenee. Data on digitaalisessa muodossa esiintyvää informaatiota. Sitä esiintyy tallennettuna erilaisille massamedioille, kuten kovalevyille, usb-muistitikuille tai cd-levyille. Inhimillisen tulkinnan kautta tämä digitaalinen informaatio voi jalostua tiedoksi, ja vielä syvällisemmin tietämykseksi.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Datan määrää mitataan tavuina (engl. byte), ja yksi tavu koostuu kahdeksasta bitistä, jotka ovat arvoltaan aina ykkönen tai nolla. Bittien binäärinen, numeerisesti ilmaistava joko-tai -luonne linkittyy terminlogisesti digitalisaation käsitteeseen, joka viittaa laskemiseen. Suurten datamäärien ilmaisemiseen käytetään tavujen monikertoja, jotka tulevat kahden potensseista taulukon 1 mukaisesti.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;Tavu = 8 bittiä
Kilotavu 2^10 = 1024 tavua
Megatavu 2^10 = 1024 kilotavua
Gigatavu 2^10 = 1024 megatavua
Teratavu 2^10 = 1024 gigatavua
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Taulukko 1. Datan määrän ilmaiseminen.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Konkreettiset esimerkit auttavat määrien havainnollistamista, ja niitä löytyy runsaasti verkosta. Keskimääräinen englannin kielen sana vaati viisi tavua tallennustilaa, matalaresoluutioinen valokuva vie 100 kilotavua, raamatullinen tekstiä 4 megatavua ja ihmisen genomi 750 megatavua, joka mahtuu yhdelle cd-levylle. Yksi elokuva vie noin 5-7 gigatavua tallennustilaa, joka löytyy sopivasti DVD-levyltä. Huomionarvoista on, että ääni ja kuva, erityisesti liikkuva kuva, vievät moninkertaisesti tallennustilaa tekstiin verrattuna.
Kokonaisen akateemisen kirjaston sisältö ottaisi 2 teratavua. Vuonna 2014 Facebook kertoi keräävänsä 600 teratavua käyttäjädataa päivässä.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Datan määrän räjähdysmäinen kasvu on vaikuttanut “big datan” käsitteen yleistymiseen. Sitä ei yleensä käytetä viittaamaan mihinkään tarkkaan datamäärään, vaan käsite on monin tavoin suhteellinen. Yksi lähestymiskulma on, että kun perinteiset laitteistot, tietojärjestelmät, tietokannat ja ohjelmistot eivät kykene käsittelemään aineistoja, ainakaan inhimillisesti siedettävillä käsittelyajoilla, aletaan puhua big datasta. Tämä lähestymiskulma on luonnollisesti sidoksissa teknologiseen kehitykseen, tarkemmin laskentatehoon ja ohjelmistojen käsittelykykyyn, jotka käytännössä paranevat ajan myötä. Suuntaa-antavasti voidaan kuitenkin ilmaista, että esimerkiksi vuonna 2016 harvoin alle teratavun ainestoista puhutaan big datana.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Toinen lähestymiskulma tarkastelee datan ominaisuuksia, niin kutsuttua kolmea v:tä: tilaa (volume), nopeutta (velocity) ja moninaisuutta (variety). Perinteisen tilan lisäksi päivitystahti, esimerkiksi videon suoralähetyksessä, striimauksessa kasvattaa nopeasti resurssien tarvetta. Moninaisuus taas esiinty esimerkiksi sosiaalisen median päivityksissä, jossa saattavat yhdistyä teksti, kuva, ääni ja videot, jolloin yksi perinteinen tietokanta ei taivu eri sisältömuotojen käsitelyyn -varsinkaan, kun viestejä lähetetään miljoonia tunnissa. Jotkut määrittelevätkin big datan sellaiseksi dataksi, jonka käsittely vaatii hajautettuja järjestelmiä. Hieman kriittisemmästä näkökulmasta big dataa pidetään yli-yksinkertaistavana markkinointiterminä, joka ei tarkoita välttämättä mitään eksaktia informaatioteknologian kanssa varsinaisesti työskenteleville.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Tutkimuksen kannalta määrän ohella toinen olennainen datan ominaisuus on sen saatavuus, johon liittyy avoimen datan käsite. Avoimen datan käsitteen määritelmät vaihtelevat hieman eri lähteissä, mutta yhteistä on yleensä, että data on teknisesti ja luvallisesti kenen tahansa vapaasti käytettävissä, joka sisältää oikeuden edelleen jakaa ja julkaista muunneltuja jatkotuotoksia. Vapaa käyttö tarkoittaa pääsääntöisesti maksuttomuutta. Joissakin tapauksissa määreet “kenen tahansa” tai “mihin tahansa käyttötarkoitukseen” vaihtelevat ja jotkut saattavat viitatata avoimina myös sellaiseen dataan, jonka käyttöehdot kieltävät kaupallisen käytön tai rajaavat käyttötarkoituksia tai käyttäjäkuntaa muutoin tai vaativat esimerkiksi rekisteröitymistä tai muuta sopimuksenvaraisuutta. Tosin esimerkiksi Rufus Pollock kutsuu tällaista avoimuuspesuksi. Useimmat avoimen data käsitteenmääritelmät sisältävätkin vaatimuksen, jonka mukaan julkaisija ei julkaisun jälkeen aseta mitään rajoituksia jatkokäytölle -muuta kuin korkeintaan vaatimuksen julkaista jatkotyöt samalla avoimuuden säilyttävällä lisenssiehdolla.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Uudet aineistot&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Politiikan tutkimuksen kannalta relevanttien uusien aineistojen erittely tuo niin ikään uuden ongelman ratkaistavaksi aineistojen ryhmittely- tai luokitteluperusteen suhteen. Aineistoja voisi luokitella esimerkiksi ainakin sisällöntuottajien, aineiston omistajan tai sisältötyypin mukaan, eivätkä nämäkään tavat asettuisi välttämättä tai jopa todennäköisesti siisteihin luokkiin. Eri ominaisuuksien perusteella toisistaan erottuvia aineistotyyppejä ovat ainakin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sosiaalinen media&lt;/li&gt;
&lt;li&gt;yhteisöllinen tiedontuotanto&lt;/li&gt;
&lt;li&gt;vaali-aineistot&lt;/li&gt;
&lt;li&gt;järjestelmäpolitiikan päätöksenteko-aineistot&lt;/li&gt;
&lt;li&gt;talousdata&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Todennäköisesti suurin ja käytetyin politiikan tutkimuksen uusi aineistolähde tulee sosiaalisen median keskusteluista. Kansainvälisesti suosituin lähde lienee Twitter. Suomessa Aller oy herätti huomiota julkaisemalla Suomi24-sivuston keskustelut epäkaupalliseen tutkimus- ja opetuskäyttöön.&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt; Maailman ylivoimaisesti käytön määrällä mitattu yksittäinen sosiaalisen median palvelu Facebook sen sijaan ei ole kokonsa veroinen aineistolähde. Vaikka osa käyttäjien päivityksistä on julkisia, ne eivät esimerkiksi nyt ole ohjelmallisesti saatavilla palvelun rajapinnasta&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;. Twitterin viestit sen sijaan ovat, ja ovat pääsääntöisesti aina olleet. Edellä mainittujen aineistojen lisäksi sosiaalista mediaa edustavat ainakin esimerkiksi YouTube ja blogit yleensä, mutta tämän artikkelin taustaselvityksessä ei tullut vastaan tutkimuksia, joissa niitä olisi käytetty tutkimusaineistona. Seuraavaksi tarkastellaan hieman lähemmin Twitteriä, Suomi24:ää ja vaaliaineistoja.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Twitter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tämän artikkelin lähteenä olevissa tutkimuksissa ja kirjoituksissa ei esitelty miltä Twitteristä saatava data näyttää, joten sen havainnollistamiseksi turvaudutaan Wei Xu:n Twitter-tutoriaaliin&lt;sup id=&#34;fnref:8&#34;&gt;&lt;a href=&#34;#fn:8&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;8&lt;/a&gt;&lt;/sup&gt; Ensin esitellään kuvakaappaus yksittäisestä twiitistä twitterin selainkäyttöliittymässä:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2016-09-29-politiikan-tutkimuksen-aineistot.fi_files/kuva1_tweet.png&#34; alt=&#34;kuva1&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Kuva 1. Yksittäinen twiitti selainkäyttöliittymässä.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Twiitin voi ladata ohjelmallisesti yhdestä Twitterin rajapinnoista (API) JSON-datana. Tuolloin se näyttää tekstieditorissa taulukon 2 mukaiselta.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
&amp;quot;favorited&amp;quot;: false,
&amp;quot;contributors&amp;quot;: null,
&amp;quot;truncated&amp;quot;: false,
&amp;quot;text&amp;quot;: &amp;quot;#CFP Workshop on Noisy User-generated Text at ACL - Beijing 31 July 2015. Papers due: 11 May 2015. http://t.co/rcygyEowqH #NLProc #WNUT15&amp;quot;,
&amp;quot;possibly_sensitive&amp;quot;: false,
&amp;quot;in_reply_to_status_id&amp;quot;: null,
&amp;quot;user&amp;quot;: {
&amp;quot;follow_request_sent&amp;quot;: null,
&amp;quot;profile_use_background_image&amp;quot;: true,
&amp;quot;default_profile_image&amp;quot;: false,
&amp;quot;id&amp;quot;: 237918251,
&amp;quot;verified&amp;quot;: false,
&amp;quot;profile_image_url_https&amp;quot;: &amp;quot;https://pbs.twimg.com/profile_images/527088456967544832/DnclpoZO_normal.jpeg&amp;quot;,
&amp;quot;profile_sidebar_fill_color&amp;quot;: &amp;quot;DDEEF6&amp;quot;,
&amp;quot;profile_text_color&amp;quot;: &amp;quot;333333&amp;quot;,
&amp;quot;followers_count&amp;quot;: 226,
&amp;quot;profile_sidebar_border_color&amp;quot;: &amp;quot;C0DEED&amp;quot;,
&amp;quot;id_str&amp;quot;: &amp;quot;237918251&amp;quot;,
&amp;quot;profile_background_color&amp;quot;: &amp;quot;C0DEED&amp;quot;,
&amp;quot;listed_count&amp;quot;: 13,
&amp;quot;profile_background_image_url_https&amp;quot;: &amp;quot;https://abs.twimg.com/images/themes/theme1/bg.png&amp;quot;,
&amp;quot;utc_offset&amp;quot;: null,
&amp;quot;statuses_count&amp;quot;: 120,
&amp;quot;description&amp;quot;: &amp;quot;I am a postdoctoral researcher @PennCIS, studying Natural Language Processing and Social Media.&amp;quot;,
&amp;quot;friends_count&amp;quot;: 166,
&amp;quot;location&amp;quot;: &amp;quot;Philadelphia PA&amp;quot;,
&amp;quot;profile_link_color&amp;quot;: &amp;quot;0084B4&amp;quot;,
&amp;quot;profile_image_url&amp;quot;: &amp;quot;http://pbs.twimg.com/profile_images/527088456967544832/DnclpoZO_normal.jpeg&amp;quot;,
&amp;quot;following&amp;quot;: null,
&amp;quot;geo_enabled&amp;quot;: true,
&amp;quot;profile_background_image_url&amp;quot;: &amp;quot;http://abs.twimg.com/images/themes/theme1/bg.png&amp;quot;,
&amp;quot;name&amp;quot;: &amp;quot;Wei Xu&amp;quot;,
&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,
&amp;quot;profile_background_tile&amp;quot;: false,
&amp;quot;favourites_count&amp;quot;: 88,
&amp;quot;screen_name&amp;quot;: &amp;quot;cocoweixu&amp;quot;,
&amp;quot;notifications&amp;quot;: null,
&amp;quot;url&amp;quot;: &amp;quot;http://www.cis.upenn.edu/~xwe/&amp;quot;,
&amp;quot;created_at&amp;quot;: &amp;quot;Thu Jan 13 23:15:12 +0000 2011&amp;quot;,
&amp;quot;contributors_enabled&amp;quot;: false,
&amp;quot;time_zone&amp;quot;: null,
&amp;quot;protected&amp;quot;: false,
&amp;quot;default_profile&amp;quot;: true,
&amp;quot;is_translator&amp;quot;: false
},
&amp;quot;filter_level&amp;quot;: &amp;quot;low&amp;quot;,
&amp;quot;geo&amp;quot;: null,
&amp;quot;id&amp;quot;: 616333141884674048,
&amp;quot;favorite_count&amp;quot;: 0,
&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,
&amp;quot;entities&amp;quot;: {
&amp;quot;user_mentions&amp;quot;: [],
&amp;quot;symbols&amp;quot;: [],
&amp;quot;trends&amp;quot;: [],
&amp;quot;hashtags&amp;quot;: [{
&amp;quot;indices&amp;quot;: [0, 4],
&amp;quot;text&amp;quot;: &amp;quot;CFP&amp;quot;
}, {
&amp;quot;indices&amp;quot;: [124, 131],
&amp;quot;text&amp;quot;: &amp;quot;NLProc&amp;quot;
}, {
&amp;quot;indices&amp;quot;: [132, 139],
&amp;quot;text&amp;quot;: &amp;quot;WNUT15&amp;quot;
}],
&amp;quot;urls&amp;quot;: [{
&amp;quot;url&amp;quot;: &amp;quot;http://t.co/rcygyEowqH&amp;quot;,
&amp;quot;indices&amp;quot;: [99, 121],
&amp;quot;expanded_url&amp;quot;: &amp;quot;http://noisy-text.github.io&amp;quot;,
&amp;quot;display_url&amp;quot;: &amp;quot;noisy-text.github.io&amp;quot;
}]
},
&amp;quot;in_reply_to_user_id_str&amp;quot;: null,
&amp;quot;retweeted&amp;quot;: false,
&amp;quot;coordinates&amp;quot;: null,
&amp;quot;timestamp_ms&amp;quot;: &amp;quot;1435780246598&amp;quot;,
&amp;quot;source&amp;quot;: &amp;quot;&amp;lt;a href=\&amp;quot;http://twitter.com\&amp;quot; rel=\&amp;quot;nofollow\&amp;quot;&amp;gt;Twitter Web Client&amp;lt;/a&amp;gt;&amp;quot;,
&amp;quot;in_reply_to_status_id_str&amp;quot;: null,
&amp;quot;in_reply_to_screen_name&amp;quot;: null,
&amp;quot;id_str&amp;quot;: &amp;quot;616333141884674048&amp;quot;,
&amp;quot;place&amp;quot;: null,
&amp;quot;retweet_count&amp;quot;: 0,
&amp;quot;created_at&amp;quot;: &amp;quot;Wed Jul 01 19:50:46 +0000 2015&amp;quot;,
&amp;quot;in_reply_to_user_id&amp;quot;: null
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Taulukko 2. Twiitti JSON-muodossa.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;140 merkin twiitti muuttuukin tässä esimerkissä 2731 merkiksi, kun kaikki tietueet ja kentät lasketaan yhteen. Eri kentät kuvaavat twiitin eri ominaisuuksia ja metatietoja. JSON-muotoisen datan- rakenne muodostuu yksinkertaisesti kahdesta osasta, joka on mallia &lt;code&gt;“nimi” : “arvo”&lt;/code&gt;. Useampia yhteenkuuluvia nimiä ja arvoja voidaan niputtaa kaari- ja hakasulkeiden sisään. Esimerkiksi kenttä &lt;code&gt;“text”&lt;/code&gt; sisältää twiitin varsinaisen tekstin. Juuri datan rakenteellinen muoto luo edellytykset tehokkaalle ja ohjelmoijille helpolle käsittelylle. Sen lisäksi verkosta löytyy runsaasti maksuttomia ja kaupallisia oppaita.&lt;sup id=&#34;fnref:9&#34;&gt;&lt;a href=&#34;#fn:9&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Twitterin käyttöä vaalikampanjoinnissa on tutkittu laskennallisin menetelmin vuonna 2012 Datavaalit-hankkeessa&lt;sup id=&#34;fnref:10&#34;&gt;&lt;a href=&#34;#fn:10&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;10&lt;/a&gt;&lt;/sup&gt;. Sen taustalla on eräänlaista hakkerietiikkaa edustava avoin tutkija- ja koodaajayhteisö, jossa myös Louhos-blogin kirjoittajat ovat olleet mukana. Leo Lahden ym. mukaan kunnallisvaaleissa 2012 vihreät ja kokoomus olivat Twitterin aktiivisimmat puolueet. Miehet twiittasivat yli kaksi kertaa niin usein kuin naiset. Aktiivisimmat ehdokkaat twiittasivat jopa 2000-5000 kertaa.&lt;sup id=&#34;fnref:11&#34;&gt;&lt;a href=&#34;#fn:11&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Samankaltaisesti nimetyssä, mutta eri tutkijoiden Digivaalit 2015 -hankkeessa Twitteriä hyödynnettiin keskeisenä aineistolähteenä eduskuntavaalien tarkastelussa. Hankkeen tutkijat Matti Nelimarkan johdolla latasivat Twitterin rajapinnasta ainakin yli 200 000 viestiä&lt;sup id=&#34;fnref:12&#34;&gt;&lt;a href=&#34;#fn:12&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;12&lt;/a&gt;&lt;/sup&gt;. Aineisto on kerätty pääosin eduskuntavaaleja edeltävältä ajalta, mutta osa tutkimuksista kohdistuu myös vaalien jälkeiseen aikaan. Twiitit ovat tallennettu tekstitietokannaksi.&lt;sup id=&#34;fnref:13&#34;&gt;&lt;a href=&#34;#fn:13&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;13&lt;/a&gt;&lt;/sup&gt; Salla-Maria Laaksosen mukaan vaaleja ei voi sanoa vielä twitter-vaaleiksi, sillä vain 938 kaikkiaan 2146 ehdokkaasta oli ylipäätään mukana twitterissä. Sen sijaan nimitys hashtag-vaalit saattaisi kuvata vaalien luonnetta paremmin&lt;sup id=&#34;fnref:14&#34;&gt;&lt;a href=&#34;#fn:14&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;14&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Hankkeessa on tehty useita eri tutkimuksia ja julkaisuja, joilla on vielä tarkemmat omat aineistorajauksensa, eikä kaikissa tapauksissa ole käytetty koko aineistoa. Mari Marttila on tutkinut osuvasti ja leikkisästi nimetyssä pro gradussaan otsikolla #vainkansanedustajajutut kansanedustajien twitter-tilien, twiittien ja keskustelun määrää&lt;sup id=&#34;fnref:15&#34;&gt;&lt;a href=&#34;#fn:15&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;15&lt;/a&gt;&lt;/sup&gt;. Arto Kekkonen tarkasteli #koulutuslupaus-kampanjan tavoitteita ja twitter-keskustelua 14 235 aiheen mukaisesti tägätyn twiitin avulla&lt;sup id=&#34;fnref:16&#34;&gt;&lt;a href=&#34;#fn:16&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;16&lt;/a&gt;&lt;/sup&gt;. Mari Tuokko tutki 433 keskusteluketjun (erittelemättä sekä Twitter- että Facebook -ketjuja) avulla ehdokkaiden ja kansalaisten välistä vuorovaikutusta sosiaalisessa mediassa. Tutkimuksen analyysi kohdistui yksittäisten viestien tasolle sekä laadullisella että määrällisellä otteella. Tarkastelulla pyrittiin selvittämään sekä vuorovaikutuksen funktioita että topiikkeja.&lt;sup id=&#34;fnref:17&#34;&gt;&lt;a href=&#34;#fn:17&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;17&lt;/a&gt;&lt;/sup&gt; Toisessa tutkimuksessa Tuokko ja tutkimusryhmä tarkastelivat #olohuonetentti -kampanjaa, joka osoitti, että joissakin tapauksissa twitter-keskustelu rikkoo perinteiset puoluerajat.&lt;sup id=&#34;fnref:18&#34;&gt;&lt;a href=&#34;#fn:18&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;18&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Yksi Digivaalit-hankkeen merkittävimmistä tutkimuskohteista lienee verkon vaikuttajaindeksin laskemismenetelmän kehittäminen. Sen selvittämiseksi 167 395 Twitter- ja Facebook-viestiä vertailtiin 5427 politiikkaa koskevaan uutiseen 19 eri median sivuilta ja 80 456 kansalaisten #vaalit2015, #vaalit ja #politiikka -tunnisteilla julkaisemaan sosiaalisen median viestiin. Tutkimuksen tuloksena aineistosta erottautui joukko niin kutsuttuja supervaikuttajia, jotka saavat äänensä kuuluviin sosiaalisen median ansiosta myös perinteisen median puolelle.&lt;sup id=&#34;fnref:19&#34;&gt;&lt;a href=&#34;#fn:19&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;19&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Tweetit ovat hyvä esimerkki avoimesta datasta politiikan tutkimuksessa. Pääosa tweeteistä ovat sekä julkisia ja helposti ihmisluettavassa muodossa että avoimien rajapintojen kautta myös koneluettavassa muodossa ja siten hyvää raaka-ainetta laskennallisille tutkimusmenetelmille. Muutamat kymmenet tuhannet akiiviset suomalaiset twiittajaat muodostavat verrattain pienen käyttäjäjoukon, varsinkin twitter-keskusteluaineistojen big dataksi luokittelemisen kannalta. Sen sijaan kansainväliset, yleensä englanninkieliset otokset voivat helposti kasvaa suuriksi ja jatkuvan päivittymisen ansiosta muodostaa loputtoman aineistolähteen. Se herättääkin pohtimaan kysymystä siitä, täytyisikö tutkijoiden jättää tutkimusohjelmakoodinsa pyörimään palvelimelle itsekseen, jotta tutkimustulokset voivat päivittyä automaattisesti aineiston lisääntyessä?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suomi24&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Krista Lagus, Mika Pantzar, Minna Ruckenstein ja Marjoriikka Ylisiurua ovat kuvailleet Suomi24-keskusteluaineistoa julkaisemassaan “Suomi24 - Muodonantoa aineistolle” -raportissa. Erillinen tutkimusjulkaisu pelkästä aineistosta itsestään kuvaa hyvin big data -aineistojen laajuutta ja sisällöllistä moninaisuutta, jonka hahmottaminen vaatii alkuun oman aikansa ennen varsinaiseen tutkimukseen ryhtymistä. Aineisto koostuu Suomi24-verkkokeskustelufoorumille käyttäjien kirjoittamista viesteistä. Keskustelu on organisoitu useisiin erilaisiin alueisiin, kuten Suhteet, Ajoneuvot ja liikenne tai Yhteiskunta, joka on suurin yksittäinen keskustelualue. Alueet jakaantuvat vielä alatasoille jopa kuudennelle tasolle, ja aina alimmalla tasolla sijaitsevat keskusteluketjut. Yksittäinen viesti voi aloittaa uuden ketjun tai kommentoida vanhaa olemassaolevaa ketjua.&lt;sup id=&#34;fnref:20&#34;&gt;&lt;a href=&#34;#fn:20&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;20&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Lagus ym. kirjoittavat, että “Suomi24-aineisto on avattu tutkimuskäyttöön avoimen datan hengessä”&lt;sup id=&#34;fnref:21&#34;&gt;&lt;a href=&#34;#fn:21&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;21&lt;/a&gt;&lt;/sup&gt;. Ilmaisu pitää sinällään paikkansa, että aineisto ei ole kovin monen määritelmän mukaan kaikille avointa dataa, vaan se on sopimuksenvaraisesti määrättyihin käyttötarkoituksiin julkaistua dataa. Tutkijoiden näkökulmasta aineiston käytössä ei ole kuitenkaan saatavuuteen liittyviä ongelmia, joten se näyttäytyy tieteen kannalta avoimena aineistona.&lt;/p&gt;
&lt;p&gt;Data on saatavilla tutkimuskäyttöön joko Allerilta suoraan päivittyvästä rajapinnasta sopimuksella tai Kielipankista korkeakoulujen tutkijoiden käyttäjätunnuksilla kerralla yhtenä pakettina. Se on tarjolla sekä JSON-muodossa että kielitieteellisesti rikastetussa VRT-muodossa. Ensin mainitussa kommentit näyttävät taulukon 3 mukaiselta:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
”body”: ”&amp;lt;p&amp;gt;Mukavasti on pukannut uusia S6 ja A8 Audeja liikenteeseen t\u00e4\u00e4ll\u00e4 Turun seudulla!!!&amp;lt;/p&amp;gt;”,
“closed_reason”: “inactivity_time_reached”,
“views”: 308,
“deleted”: false,
“topics”: [{“title”: “Ajoneuvot ja liikenne”, “topic_id”: 2},
{“title”: “Autot”, “topic_id”: 6254},
{“title”: “Automerkit”, “topic_id”: 1109},
{“title”: “Audi”, “topic_id”: 3256}],
“title”: “Audia pukkaa....”,
“comments”: [{“body”: “&amp;lt;p&amp;gt;pukkas 70:t\u00e4 luvulla Ladaa liikkuu jyv\u00e4skyl\u00e4ss\u00e4!&amp;lt;/p&amp;gt;”,
“quote_id”: 0, “deleted”: false, “created_at”: 1207988326000, “comment_id”: 29898190,
“anonnick”: “krigg”, “thread_id”: 5604224, “parent_comment_id”: 0}],
“anonnick”: “SS66AA88”,
“thread_id”: 5604224,
“closed”: true,
”created_at”: 1207910044000
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Taulukko 3. Suomi24-keskusteluketju JSON-muodossa.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Esimerkissä on ensin nimimerkin “krigg” kirjoittama ketjun aloitusviesti otsikolla &lt;em&gt;“Mukavasti on pukannut uusia S6 ja A8 Audeja liikenteeseen täällä Turun seudulla!!!”&lt;/em&gt; ja siihen nimimerkin “SS66AA88” vastaus &lt;em&gt;“pukkas 70:ta luvulla Ladaa liikkuu jyväskylässä!”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Suomi24 -aineisto on kertynyt vuodesta 2001 alkaen ja sitä kerääntyy toistaiseksi koko ajan. Palveluun on kirjoitettu sen olemassaolon aikana viestien juoksevan id-tunnistenumeron perusteella yli 80 miljoonaa viestiä. Tosin näistä suuri osa on poistettu tai virheellisiä kirjauksia, sillä ladattu aineisto käsittää noin 60 miljoonaa viestiä. Yksittäiset viestit voivat olla lyhyitä tai hyvinkin pitkiä, satoja sanoja, mutta keskimäärin viestit ovat lauseen, eli 5 - 10 sanan pituisia. Ketjujen elinikä vaihtelee myös suuresti, ja osa aloitetuista ketjuista ei saa lainkaan vastauksia, kun taas toisiin palataan vielä vuosien päästä.&lt;/p&gt;
&lt;p&gt;Aineistoa on jo hyödynnetty joissakin tutkimuksissa. Veikko Eranti ja Tuukka Ylä-Anttila etsivät esipoliittisia keskusteluaiheita ihmisten arkipäiväisistä verkkokeskusteluista laskennalllisen aiheenmallinnus (topic modelling) -menetelmän avulla. He tunnistivat 21 aihetta, joiden muodostama aineisto voi toimia raaka-aineena esimerkiksi tarkemmalle laadulliselle analyysille.&lt;sup id=&#34;fnref:22&#34;&gt;&lt;a href=&#34;#fn:22&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;22&lt;/a&gt;&lt;/sup&gt; Kesällä 2015 Helsingissä järjestettiin Suomi24-aineistoon keskittyvä hackathon, jossa eri ryhmät sovelsivat erilaisia laskennallisia menetelmiä kokeellisesti ja pienimuotoisesti aineiston tutkimiseksi. Osallistujat tutkivat esimerkiksi keskustelujen ennustuskykyä talouden suhdanteisiin, kateutta ilmaisevien keskustelujen ajallisia vaihteluita ja keskusteluaiheita, jotka johtavat lyhyisiin tai pitkiin keskusteluketjuihin.&lt;sup id=&#34;fnref:23&#34;&gt;&lt;a href=&#34;#fn:23&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;23&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vaali-aineistot&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vaalit ovat kvantitatiivisen politiikan tutkimuksen perinteisesti suurin ja vaikuttavin aineistolähde. Vaalituloksen ja kyselytutkimusaineistojen rinnalle viime vuosina on noussut kuitenkin uusia mielenkiintoisia aineistolähteitä. Valtiontalouden tarkastusviraston vuodesta 2009 alkaen keräämät vaali- ja puoluerahoitusilmoitukset ovat muodostuneet varteenotettavaksi tutkimusaineistoksi vaalirahakohun seurauksena. Ilmoitukset ovat luettavissa verkkopalvelussa ja lisäksi virasto raportoi tarkastuksensa vaaleittain.&lt;sup id=&#34;fnref:24&#34;&gt;&lt;a href=&#34;#fn:24&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;24&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Virallisten julkaisujen lisäksi Datavaalit-yhteisö on uudelleenjulkaissut siistittynä ja alkuperäislähteitä helpommin jatkokäytettävässä muodossa muiden muassa oikeusministeriön vaalituloksia, ehdokkaiden Facebook- ja Twitter-päivityksiä sekä vaalirahoitusilmoituksia.&lt;sup id=&#34;fnref:25&#34;&gt;&lt;a href=&#34;#fn:25&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;25&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Yksi merkittävimmistä uusista aineistolähdetyypeistä ovat vaalikone-aineistot. Erityisesti Helsingin Sanomat ja Yle ovat julkaisseet sekä ehdokkaiden että joissakin tapauksissa myös vaalikoneiden käyttäjien vastauksia avoimena datana.&lt;sup id=&#34;fnref:26&#34;&gt;&lt;a href=&#34;#fn:26&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;26&lt;/a&gt;&lt;/sup&gt; Vanhin julkaistu aineisto on Helsingin sanomien eduskuntavaalien 2011 alla julkaisema eduskuntavaalien 2007 aineisto.&lt;sup id=&#34;fnref:27&#34;&gt;&lt;a href=&#34;#fn:27&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;27&lt;/a&gt;&lt;/sup&gt; Tämän jälkeen sekä Yle että HS ovat julkaisseet kaikkien eduskuntavaalien ja presidentinvaalien ehdokkaiden aineistot. Myös MTV on avannut presidentinvaalien 2006 aineistot.&lt;sup id=&#34;fnref:28&#34;&gt;&lt;a href=&#34;#fn:28&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;28&lt;/a&gt;&lt;/sup&gt; Yksittäistapauksissa mediatalot ovat julkaisseet myös euro- ja kunnallisvaalien aineistoja.&lt;/p&gt;
&lt;p&gt;Helsingin Sanomien ja Ylen vaalikoneaineistot ovat pääsääntöisesti tarjolla verkkosivuilla julkaistun linkin kautta suoraan palvelimelta ladattavina tiedostoina. Aineistojen lisenssit ovat tyypillisesti vapaasti tai ei-kaupallisesti käytettäviä, kunhan lähdeviite mainitaan muutettuja töitä julkaistaessa. Joissakin tapauksissa aineistot ovat tarjolla päivittyvässä muodossa rajapinnan kautta, jonka käyttäminen edellyttää rajapinta-avaimen pyytämistä toimitukselta. Suorien pakettien tapauksessa aineistot ovat todella avoin dataa. Myös Yhteiskuntatieteellinen tietoarkisto on kerännyt samoja aineistoja ja jakaa niitä omassa Aila-palvelussaan, mutta erikoisesti huomattavasti rajoitetuilla käyttöehdoilla, joissa jopa tarkkaan määritellään minkä tasoiseen tutkimukseen aineistoja saa käyttää.&lt;sup id=&#34;fnref:29&#34;&gt;&lt;a href=&#34;#fn:29&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;29&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ehdokkaiden ja käyttäjien vastauksia&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vuoden 2015 eduskuntavaalien Ylen aineisto sisältää 2147 ja HS:n 1764 riviä, joissa kummassakin yhden ehdokkaan vastaukset ovat yhdellä rivillä. Ylen data on csv-muodossa yksinkertaisesti tekstinä pilkulla erotettuina arvoina ja HS:n data excel-taulukkona. Käytännössä muodot ovat yhtä lailla käytettävissä ja helposti konvertoitavissa suuntaan tai toiseen missä tahansa taulukkolaskentaohjelmassa tai ohjelmointiin tarkoitetussa tekstieditorissa. Vastaukset löytyvät sarakkeilta ja Ylellä kysymyksiä on yli sata sekä jokaisella kysymyksellä on omana tietueenaan avovastauksen mahdollisuus. Helsingin Sanomilla kysymyksiä on vain 30. Lisäksi kummallakin on kustakin ehdokkaasta yleistietoja liittyen sukupuoleen, ikään, ammattiin, alueeseen sekä verkkonäkyvyyteen eli kotisivuihin ja sosiaaliseen mediaan. Datan tallennustavassa on sellainen ero, että Ylen datassa vastaukset ovat tekstinä sarakkeissa kun taas HS:n datassa ne ovat numeerisina arvoina. Ylen tapa lienee helppolukuisempi ihmissilmälle, mutta HS:n tapa suoraviivaisempi ohjelmalliseen käsittelyyn ja vie myös huomattavasti vähemmän tilaa.&lt;sup id=&#34;fnref:30&#34;&gt;&lt;a href=&#34;#fn:30&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;30&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Ehdokkaiden vastausten lisäksi joissain vaaleissa vaalikoneiden tarjoajat ovat julkaisseet myös palveluiden käyttäjien vastauksia. Tällöin datan määrä ja samalla potentiaalinen tutkimuksellinen hyöty kasvaa huomattavasti. Helsingin Sanomien varhaisia vaalikoneaineistojulkaisuja olivat vuosien 2007 eduskuntavaalien ja 2009 europarlamenttivaalien vaalikoneiden käyttäjien vastausten aineistot.&lt;sup id=&#34;fnref:31&#34;&gt;&lt;a href=&#34;#fn:31&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;31&lt;/a&gt;&lt;/sup&gt; Seuraavassa on (luettavuuden helpottamiseksi rivitettynä) otsikkorivit ja yksi rivi dataa vuoden 2007 aineiston alusta:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;quot;Inner_id&amp;quot;;
&amp;quot;User_id&amp;quot;;
&amp;quot;Age_group&amp;quot;;
&amp;quot;Sex&amp;quot;;
&amp;quot;Area_id&amp;quot;;
&amp;quot;Election_year&amp;quot;;
&amp;quot;winnerCandidate&amp;quot;;
&amp;quot;winnerParty&amp;quot;;
&amp;quot;Answers&amp;quot;;
&amp;quot;CandidatesList&amp;quot;;
&amp;quot;PartiesList&amp;quot;;
&amp;quot;Created&amp;quot;;
&amp;quot;Modified&amp;quot;

&amp;quot;4569&amp;quot;;
&amp;quot;11718105386517402&amp;quot;;
&amp;quot;0&amp;quot;;
&amp;quot;n&amp;quot;;
&amp;quot;1020&amp;quot;;
&amp;quot;2007&amp;quot;;
&amp;quot;3240&amp;quot;;
&amp;quot;Kokoomus&amp;quot;;
&amp;quot;20:1:134:1:2:;21:2:0:0:2:;22:3:0:0:2:;23:4:0:0:2:;24:5:0:0:2:;25:6:0:0:2:;26:7:0:0:2:;27:8:0:0:2:;28:9:0:0:2:;29:10:0:0:2:;30:11:0:0:2:;31:12:0:0:2:;32:13:0:0:2:;33:14:0:0:2:;34:15:0:0:2:;35:16:0:0:2:;36:17:0:0:2:;37:18:0:0:2:;38:19:0:0:2:;39:20:0:0:2:;40:21:0:0:2:;41:22:0:0:2:;42:23:0:0:2:;43:24:0:0:2:;44:25:0:0:2:;45:26:0:0:2:;46:27:229:3:2:;&amp;quot;;
&amp;quot;3240:663:Pynnönen:Jarmo:Kok:83;4316:623:Luoma-Nirva:Jarno:Lib:57;2513:540:Hyttinen:Ilkka:Ipu:120;3233:398:Hyytiäinen:Sari:Kok:76;3232:392:Heinonen:Timo:Kok:75;2898:382:Sutinen:Reijo:Skp:53;3462:380:Nissilä:Minna:Kesk:67;3242:377:Vahter:Merja:Kok:85;3243:373:Viljanen:Ilkka:Kok:86;3463:367:Penttilä:Mika:Kesk:68;999999999:0:0:0:0:0;4162:-600:Savolainen:Leena:Vas:13;2628:-601:Raappana:Paavo:Vihr:116;4164:-629:Toivonen:Sari:Vas:15;&amp;quot;;
&amp;quot;Ipu:129:19:3;Kai Aaltonen:-287:32:1;Kd:-37:14:8;Kesk:-65:10:13;Kok:269:12:14;Lib:623:20:1;Ps:-38:17:10;Sdp:-381:11:13;Skp:-352:26:7;Sks:-397:25:1;Stp:-571:18:1;Vas:-450:16:14;Vihr:-316:15:12;&amp;quot;;
&amp;quot;2007-02-18 16:55:38&amp;quot;;
&amp;quot;2007-02-18 16:55:38&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Taulukko 4. Helsingin Sanomien vuoden 2007 eduskuntavaalien vaalikoneen yhden käyttäjän vastaukset csv-muodossa.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Data kertoo siis esimerkiksi vastaajan ikäryhmän, sukupuolen, vaalipiirin, vastaajalle sopivimmat ehdokkaat ja puolueet sekä vastaukset vaalikoneeseen. Vuoden 2007 aineisto sisältää 384694 riviä ja vuoden 2009 aineisto 228 476 riviä. Aineistojen tietorakenteet ovat samanlaiset.&lt;/p&gt;
&lt;p&gt;Ylen vuoden 2012 presidentinvaalien vaalikoneaineiston julkaisu sisältää käyttäjien vastaukset, joita on 244 976 riviä. Kysymykset löytyvät sarakkeilta, joita on 20. Vastaukset ovat numeerisina arvoina ja niiden selitteet löytyvät datan julkaisun verkkosivuilta. Ehdokasaineistoista poiketen käyttäjistä ei ole mitään kuvailevaa tai identifoivaa dataa.&lt;sup id=&#34;fnref:32&#34;&gt;&lt;a href=&#34;#fn:32&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;32&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Helsingin Sanomat julkaisi vuoden 2012 presidentinvaalien aineistosta sekä ehdokkaiden että käyttäjien vastaukset, mutta hieman tavallista rajoitetummalla, uudelleenjulkaisun kieltävällä lisenssillä ja vain rajapinnan kautta.&lt;sup id=&#34;fnref:33&#34;&gt;&lt;a href=&#34;#fn:33&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;33&lt;/a&gt;&lt;/sup&gt; Aineistoa ei ladattu ja tutkittu suoraan tätä artikkelia varten, mutta Louhos-tutkijaryhmä on julkaissut kuvaajia aineistosta, jotka erittelevät kuinka vastaajat jakautuvat eri demografisten piirteiden mukaan. Aineisto sisältää yli 200 000 käyttäjän vastaukset.&lt;sup id=&#34;fnref:34&#34;&gt;&lt;a href=&#34;#fn:34&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;34&lt;/a&gt;&lt;/sup&gt; Aineiston luotettavuuteen liittyy joitakin reunaehtoja, mutta se tarjoaa kokonsa vuoksi huomattavasti ilmaisuvoimaa tilastolliseen tarkasteluun.&lt;sup id=&#34;fnref:35&#34;&gt;&lt;a href=&#34;#fn:35&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;35&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Vuoden 2012 Kuntakoneesta HS julkaisi myös n. 11 000 käyttäjän vastaukset. Aineisto sisältää yksinkertaisuudessaa vastaajan kotikunnan ja toisessa sarakkeessa ne kunnat, joiden haluaisi muodostavan kuntaliitoksen.&lt;sup id=&#34;fnref:36&#34;&gt;&lt;a href=&#34;#fn:36&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;36&lt;/a&gt;&lt;/sup&gt; Erityisesti juuri vaalikoneiden käyttäjien vastaukset sisältävät aineistot ovat mahdollistaneet vaaleissa valittujen ehdokkaiden, kaikkien ehdokkaiden ja kansalaisten arvojen vertailut.&lt;/p&gt;
&lt;p&gt;Vain ehdokkaiden vastaukset sisältävät vaalikoneaineistot ovat tyypillisesti muutamien tai joidenkin kymmenien megatavujen kokoisia, jolloin niistä puhuminen big datana ei välttämättä ole oikein oikeutettua. Sen sijaan käyttäjien vastaukset sisältävät aineistot ovat useita satoja megatavuja, ja hieman ohjelmasta ja koneesta riippuen aineistojen käsittely saattaa olla enemmän tai vähemmän sujuvaa. Esimerkiksi Helsingin Sanomien vuoden 2007 pakkaamaton 500-megatavuinen aineisto osoittautui ylivoimaiseksi Open Officelle ja suhteellisen tehokkaalle tietokoneelleni, jossa on i5-prosessori ja 8 Gt työmuistia. Näin ollen ainakin yhden näkökulman mukaan big datan mainitseminen tällaisten aineistojen yhteydessä voi olla perusteltua.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tutkimuksellista “pikaruokaa” vaalikonedatasta&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vaalikoneainestoja on hyödynnetty hyvin monipuolisesti. Tavat vaihtelevat yksinkertaisista kehittyneisiin tilastollisiin menetelmiin, visualisointeihin kuten ehdokkaiden ja puolueiden arvokarttoihin ja sisällöllisiin tutkimuksiin, jossa hallitusohjelmaa vertaillaan vastauksiin tai se uudelleenkirjoitetaan niiden perusteella. Seuraavat esimerkit eivät edusta perinteistä tieteenteon “hidasta” tapaa vaan päinvastoin, informaatioajalle ominaista ketterää lähestymistapaa.&lt;/p&gt;
&lt;p&gt;Yksinkertaisia vastausten jakaumia edustavia tutkimuksia edustavat esimerkiksi Jouni Tuomiston ym. Kansanedustajien arvot -artikkeli, joka selvitti eniten samanmielisyyttä ja toisaalta erimielisyyttä herättäneitä kysymyksiä.&lt;sup id=&#34;fnref:37&#34;&gt;&lt;a href=&#34;#fn:37&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;37&lt;/a&gt;&lt;/sup&gt; Ehkä kaikkein suosituin tapa vaalikonevastausten hyödyntämiseen ovat olleet erilaiset visualisoinnit, jotka sijoittavat kansanedustajat arvokartalle eri ristiriitaulottuuvuksien suhteen, kuten kuvassa 2. Ne ovat havainnollistavia, toimivat yksilö- ja puoluetasolla sekä parhaimmillaan visuaalisesti näyttäviä että käytettävyydeltään hyviä, joskus jopa addiktiivisia.&lt;sup id=&#34;fnref:38&#34;&gt;&lt;a href=&#34;#fn:38&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;38&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2016-09-29-politiikan-tutkimuksen-aineistot.fi_files/kuva2_arvokartta.png&#34; alt=&#34;kuva2&#34;&gt;
&lt;em&gt;Kuva 2. Martti Leppäsen visualisoima kansanedustajien ja puolueiden arvokartta. Ulla-Maj Wideroosin arvot sijoittuvat aivan keskelle sekä vasemmisto-oikeisto että konservatiivi-arvoliberaali -ulottuvuuksa. Kuvakaappaus Helsingin Sanomien sivuilta.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Niiden taustalla olevat valinnat eri ristiriitaulottuvuuksien valinnasta, tilastollisista menetelmistä ja tulkinnoista ovat herättäneet paljon keskustelua, kritiikkiä ja vaihtoehtoisia tulkintoja.&lt;sup id=&#34;fnref:39&#34;&gt;&lt;a href=&#34;#fn:39&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;39&lt;/a&gt;&lt;/sup&gt; Tarkastelemalla ilmiötä hieman etäämmältä voidaan huomata, että vaalikoneaineistot ovat innoittaneet vilkasta avointa tutkimusta, kun aineistot ovat lähtökohtaisesti avoimia ja osallistujat julkaisevat tutkimuksensa, kritiikkinsä ja menetelmänsä avoimesti.&lt;/p&gt;
&lt;p&gt;Politiikan sisältöjä tarkastelevia tutkimuksia edustavat esimerkiksi Jouni Tuomiston edellä mainitun artikkelin jatkoksi tehdyt analyysit poikkipuolue- ja jokapuoluehallituksista. Ensin mainittu hallituskokoonpano muodostuu puolueiden poikki niistä kansanedustajista, jotka kuuluvat vastausvaihtoehtojen enemistön kannalle. Kukin edustaja saa samanmielisyyspisteet enemmistömielisyydestään. Hallitusohjelma muodostuu niistä vaalikonekysymyksistä, jotka ehdottavat jotakin muutosta nykyiseen ja ehdotusta on kannattanut selkeä enemmistö.&lt;sup id=&#34;fnref:40&#34;&gt;&lt;a href=&#34;#fn:40&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;40&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Jokapuoluehallitus perustuu muuten samaan ajatukseen kuin poikkipuoluehallitus, mutta sen muodostamisessa huomioidaan puoluekurin vaikutus. Puolueen enemmistön kanta saa tällöin puolueen kaikkien edustajien äänen taakseen. Tällöin jotkin puolueita sisäisesti tasaisesti jakavista kysymyksistä voivat ratketa eduskunnan tasolla huomattavasti selkeämmin luvuin, ja niin hallitusohjelmastakin tulee erilainen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data ja demokratia&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tämän artikkelin taustoittamiseksi tutustuin hyvään pintaraapaisuun monipuolisia tutkimuksia ja aineistoja, jotka paljastavat ainakin sen, että politiikan tutkijoilta ei puutu aineistoja, eikä luovuutta ja uutta ajattelua menetelmävalintojen suhteen. Sen sijaan kehittymisen varaa lienee varmasti enemmän menetelmien tieteellisessä pätevyydessä ja teknisessä sovellettavuudessa. Ohjelmointitaitoiset voivat hyödyntää nopeasti valmiita koodikirjastoja enemmän tai vähemmän soveltuviin aineistoihin tai kehittää omia ratkaisujaan, mutta tulkintojen validiteetin arvioiminen jää joko dokumentaation, ei-ohjelmointitaitoisille suunnattujen vastaavien työkalujen saatavuuden tai toisten ohjelmointitaitoisten samojen aiheiden tutkijoiden aktiivisuuden varaan. Kun vielä ajan henki suosii nopeaa ja näyttävää tutkimustulosten viestintää, tieteellinen laatu voi joutua sivulliseksi uhriksi. Hyvä esimerkki ei-ohjelmistotaitoisille suunnatusta data-aineistojen tutkimustyökalusta on kuitenkin Kielipankin Korp-käyttöliittymä, jolla voi analysoida suuria tekstiaineistoja.&lt;sup id=&#34;fnref:41&#34;&gt;&lt;a href=&#34;#fn:41&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;41&lt;/a&gt;&lt;/sup&gt; Tämänkaltaisia työkaluja toivoisi näkevän tulevaisuudessa myös politiikan tutkimuksen alueella. Se ei poista tutkijoiden tarvetta menetelmien ymmärtämiseen, mutta voi luoda siltaa ohjelmointiin ja eri substanssikysymyksiin erikoistuneiden tieteenharjoittajien välille.&lt;/p&gt;
&lt;p&gt;Toinen erityisen mielenkiintoinen kysymys on vaalikone- ja sosiaalisen median aineistojen todistusvoima kansalaisten arvojen ja julkisen mielipiteen suhteen. On parhaillaan eri tutkijoiden ja tutkimushankkeiden työn alla ratkoa menetelmiin liittyviä teknisiä ongelmia siitä kuinka vaalikonedatasta ja sosiaalisen median keskusteluista jalostetaan niin sanottua kansan tahtoa, joka voitaisiin ilmaista esimerkiksi hallitusohjelman tai yksittäisten lakien muodossa. Aineistolähtöisyyden vastavoimaksi asettuu kuitenkin luotettavuuteen ja edustavuuteen liittyvät kysymykset. Syrjiikö digikuilu vielä 2010-luvun lopulla joitakin ryhmiä tai ovat vaalikoneet tai sosiaalinen media itsessään tai niitä ylläpitävät mediatalot epädemokraattista vääristymää aiheuttava tekijä? Olisi itse asiassa mielenkiintoista paneutua siihen, kumpaa ihmiset vierastavat enemmän -äänestämistä vai verkkoa poliittisen mielipiteenilmaisun välineenä. Jos verkkoa ei nähdä ongelmana ja siirrytään pohtimaan aineistojen täyttä potentiaalia demokratian kannalta, voidaan asetelma pelkistää vaikka seuraavanlaiseen kysymykseen: kumpi on demokraattisempaa, johtaa hallitusohjelma suoraan vaalikoneen (tai kahden, Helsingin Sanomat ja Yle, synteesistä) yli 200 000 vastaajan otoksesta vai että vajaan kolmen miljoonan äänestäjän tahto pelkistetään 200 edustajaan, joista vain pieni osa osallistuu eturyhmien edustajien ja korkeiden virkamiesten kanssa neuvottelemaan ja kirjoittamaan vaalikauden tavoitteita? Nyt kun aineistoja alkaa olla tarjolla ja menetelmät kehittyvät, olisi älyllistä epärehellisyyttä hyödyntää niitä vain puolueiden tai edustuksellisuuden ongelmien ratkaisemiseen ja jättää taustalla piilevä laajempi demokratian toimintaedellytysten ongelma huomiotta.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tämä artikkeli on kirjoitettu alkujaan keväällä 2016 opintosuoritukseksi valtio-opin syventävien menetelmien kurssille. Sitä on päivitetty julkaisun yhteydessä vähäisissä määrin. Artikkelista on julkaistu myös &lt;a href=&#34;http://alusta.uta.fi/artikkelit/2016/09/06/suuret-ja-avoimet-aineistot-politiikan-tutkimuksessa.html&#34; title=&#34;tiivistelmä Alustassa&#34;&gt;tiivistelmä Alusta!-verkkolehdessä&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;lähdeluettelo&#34;&gt;Lähdeluettelo&lt;/h2&gt;
&lt;p&gt;Datavaalit (2016), &amp;lt;&lt;a href=&#34;http://www.datavaalit.fi/&#34;&gt;http://www.datavaalit.fi/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Datavaalit (2016b), &amp;lt;&lt;a href=&#34;https://github.com/avoindata&#34;&gt;https://github.com/avoindata&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Digivaalit (2015), &amp;lt;&lt;a href=&#34;https://www.hiit.fi/digivaalit-2015&#34;&gt;https://www.hiit.fi/digivaalit-2015&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Digivaalit (2016) &amp;lt;&lt;a href=&#34;https://rajapinta.files.wordpress.com/2016/04/dv2015-posteri-verkosto-lores.pdf&#34;&gt;https://rajapinta.files.wordpress.com/2016/04/dv2015-posteri-verkosto-lores.pdf&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Eranti, Veikko &amp;amp; Ylä-Anttila Tuukka (2016) &amp;lt;&lt;a href=&#34;http://www.slideshare.net/tuylaant/using-topic-modeling-to-study-everyday-civic-talk-and-protopolitical-engagements&#34;&gt;http://www.slideshare.net/tuylaant/using-topic-modeling-to-study-everyday-civic-talk-and-protopolitical-engagements&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Haakana, Kari (2011) &amp;lt;&lt;a href=&#34;http://yle.fi/aihe/artikkeli/2011/05/16/vuoden-2011-vaalikonetiedot-nyt-avoimena-datana&#34;&gt;http://yle.fi/aihe/artikkeli/2011/05/16/vuoden-2011-vaalikonetiedot-nyt-avoimena-datana&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Haakana, Kari (2012) &amp;lt;&lt;a href=&#34;http://yle.fi/aihe/artikkeli/2012/01/13/presidentinvaalien-vaalikoneen-kayttajien-vastaukset-avoimena-datana&#34;&gt;http://yle.fi/aihe/artikkeli/2012/01/13/presidentinvaalien-vaalikoneen-kayttajien-vastaukset-avoimena-datana&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Helsingin Sanomat (2012) &amp;lt;&lt;a href=&#34;http://www.hs.fi/politiikka/a1305606343277&#34;&gt;http://www.hs.fi/politiikka/a1305606343277&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Ted Holmes (2005)
&amp;lt;&lt;a href=&#34;http://simplyted.blogspot.fi/2005/12/how-to-visualize-data.html&#34;&gt;http://simplyted.blogspot.fi/2005/12/how-to-visualize-data.html&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Kekkonen, Arto (2016) &amp;lt;&lt;a href=&#34;https://rajapinta.files.wordpress.com/2016/04/dv2015-posteri-kekkonen-lores.pdf&#34;&gt;https://rajapinta.files.wordpress.com/2016/04/dv2015-posteri-kekkonen-lores.pdf&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Laaksonen, Salla-Maaria (2015) &amp;lt;&lt;a href=&#34;https://rajapinta.co/2015/04/19/alustavia-analyyseja-eduskuntavaalipohinasta-sosiaalisessa-mediassa/&#34;&gt;https://rajapinta.co/2015/04/19/alustavia-analyyseja-eduskuntavaalipohinasta-sosiaalisessa-mediassa/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Laaksonen, Salla-Maaria (2015b) &amp;lt;&lt;a href=&#34;https://rajapinta.co/2015/09/17/verkon-agendaa-asettamassa-vaikuttajaindeksilaskelmia-digivaalit-2015-projektista/&#34;&gt;https://rajapinta.co/2015/09/17/verkon-agendaa-asettamassa-vaikuttajaindeksilaskelmia-digivaalit-2015-projektista/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Laaksonen, Salla-Maaria (2015c) &amp;lt;&lt;a href=&#34;https://rajapinta.co/2015/06/04/suomi24-data-science-hackathon-results-and-afterthoughts/&#34;&gt;https://rajapinta.co/2015/06/04/suomi24-data-science-hackathon-results-and-afterthoughts/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Laaksonen, Salla-Maaria (2016a) &amp;lt;&lt;a href=&#34;https://rajapinta.files.wordpress.com/2016/04/digivaalit_finalseminar-pptx.pdf&#34;&gt;https://rajapinta.files.wordpress.com/2016/04/digivaalit_finalseminar-pptx.pdf&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Laaksonen, Salla-Maaria (2016b), &amp;lt;&lt;a href=&#34;https://rajapinta.co/2016/05/02/sosiaalinen-media-tutkimusaineiston-hankala-aarrearkku/&#34;&gt;https://rajapinta.co/2016/05/02/sosiaalinen-media-tutkimusaineiston-hankala-aarrearkku/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Lagus, Krista, Mika Pantzar, Minna Ruckenstein ja Marjoriikka Ylisiurua (2016), Suomi24 -Muodonantoa aineistolle. &amp;lt;&lt;a href=&#34;http://blogs.helsinki.fi/citizenmindscapes/&#34;&gt;http://blogs.helsinki.fi/citizenmindscapes/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Lahti, Leo (2012a), Kunnallisvaaliehdokkaiden aktiivisuus sosiaalisessa mediassa: puolueiden vertailua. &amp;lt;&lt;a href=&#34;https://louhos.wordpress.com/2012/10/26/kunnallisvaaliehdokkaiden-aktiivisuus-sosiaalisessa-mediassa-puolueiden-vertailua/&#34;&gt;https://louhos.wordpress.com/2012/10/26/kunnallisvaaliehdokkaiden-aktiivisuus-sosiaalisessa-mediassa-puolueiden-vertailua/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Lahti, Leo (2012b), Kunnallisvaalien vertailukelpoiset ehdokasdatat CSV-taulukkoina: 2004 / 2008 / 2012 &amp;lt;&lt;a href=&#34;https://louhos.wordpress.com/2012/10/05/kunnallisvaalien-vertailukelpoiset-ehdokasdatat-csv-taulukkoina-2004-2008-2012/&#34;&gt;https://louhos.wordpress.com/2012/10/05/kunnallisvaalien-vertailukelpoiset-ehdokasdatat-csv-taulukkoina-2004-2008-2012/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Lahti, Leo (2012c), Datavaalit: Oikeusministeriön vaalidatat sorvattu auki. &amp;lt;&lt;a href=&#34;https://louhos.wordpress.com/2012/09/28/datavaalit-oikeusministerion-vaalitulosdata-sorvattu-auki/&#34;&gt;https://louhos.wordpress.com/2012/09/28/datavaalit-oikeusministerion-vaalitulosdata-sorvattu-auki/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Lahti, Leo (2012d), Helsingin Sanomien avoin vaalikonedata: osa2. &amp;lt;&lt;a href=&#34;https://louhos.wordpress.com/2012/02/05/helsingin-sanomien-avoin-vaalikonedata-osa2/&#34;&gt;https://louhos.wordpress.com/2012/02/05/helsingin-sanomien-avoin-vaalikonedata-osa2/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Lahti, Leo (2013), Kunnallisvaalit sosiaalisessa mediassa. &amp;lt;&lt;a href=&#34;https://louhos.wordpress.com/2013/01/26/kunnallisvaalit-sosiaalisessa-mediassa/&#34;&gt;https://louhos.wordpress.com/2013/01/26/kunnallisvaalit-sosiaalisessa-mediassa/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Leppänen, Martti (2011a)&lt;a href=&#34;http://www2.hs.fi/extrat/kotimaa/puoluekentta/&#34;&gt; &lt;a href=&#34;http://www2.hs.fi/extrat/kotimaa/puoluekentta/&#34;&gt;http://www2.hs.fi/extrat/kotimaa/puoluekentta/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Leppänen, Martti (2011b), Puoluekenttä. &amp;lt;&lt;a href=&#34;http://puoluekentta.tstm.info/&#34;&gt;http://puoluekentta.tstm.info/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;MTV (2006), Presidentinvaalit 2006: ehdokkaiden vastaukset MTV3:n vaalikoneeseen. Yhteiskuntatieteellinen tietoarkisto [jakaja]. &amp;lt;&lt;a href=&#34;http://urn.fi/urn:nbn:fi:fsd:T-FSD2127&#34;&gt;http://urn.fi/urn:nbn:fi:fsd:T-FSD2127&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Marttila Mari (2016) &amp;lt;&lt;a href=&#34;https://rajapinta.files.wordpress.com/2016/04/dv2015-posteri-marttila-lores.pdf&#34;&gt;https://rajapinta.files.wordpress.com/2016/04/dv2015-posteri-marttila-lores.pdf&lt;/a&gt;] &amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2011a) &amp;lt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/hs-julkaisee-vaalikoneensa-avoimena-tietona-ennen-vaaleja&#34;&gt;http://blogit.hs.fi/hsnext/hs-julkaisee-vaalikoneensa-avoimena-tietona-ennen-vaaleja&lt;/a&gt; &amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2011b) &amp;lt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/hsn-vaalikone-on-nyt-avointa-tietoa&#34;&gt;http://blogit.hs.fi/hsnext/hsn-vaalikone-on-nyt-avointa-tietoa&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2011c) &amp;lt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/vaalikonedata-avoimeksi-kristilliset-eniten-avioliitossa&#34;&gt;http://blogit.hs.fi/hsnext/vaalikonedata-avoimeksi-kristilliset-eniten-avioliitossa&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2011d) &amp;lt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/15-uusiokayttoa-hsn-vaalikonedatalle-viikossa&#34;&gt;http://blogit.hs.fi/hsnext/15-uusiokayttoa-hsn-vaalikonedatalle-viikossa&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2012a) &amp;lt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/helsingin-sanomat-julkaisee-vaalikoneen-tiedot-avoimena-rajapintana&#34;&gt;http://blogit.hs.fi/hsnext/helsingin-sanomat-julkaisee-vaalikoneen-tiedot-avoimena-rajapintana&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2012b) &amp;lt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/nain-kuntalaiset-yhdistaisivat-kotikuntansa-kuntakoneen-vastaukset-avodatana&#34;&gt;http://blogit.hs.fi/hsnext/nain-kuntalaiset-yhdistaisivat-kotikuntansa-kuntakoneen-vastaukset-avodatana&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2012c) &amp;lt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/hs-open-tapahtumissa-luodaan-tietojournalismia&#34;&gt;http://blogit.hs.fi/hsnext/hs-open-tapahtumissa-luodaan-tietojournalismia&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Mäkinen, Esa (2015) &amp;lt;&lt;a href=&#34;http://www.hs.fi/politiikka/a1305929269692&#34;&gt;http://www.hs.fi/politiikka/a1305929269692&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Parkkinen, Juuso (2012) &amp;lt;&lt;a href=&#34;https://louhos.wordpress.com/2012/01/06/kenesta-seuraava-presidentti-ennusta-itse-hsn-vaalikonedatan-avulla/&#34;&gt;https://louhos.wordpress.com/2012/01/06/kenesta-seuraava-presidentti-ennusta-itse-hsn-vaalikonedatan-avulla/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Poikola, Antti, Kola, Petri &amp;amp; Hintikka, Kari A. (2010), Julkinen data. johdatus tietovarantojen
avaamiseen. Helsinki: Liikenne- ja viestintäministeriö.&lt;/p&gt;
&lt;p&gt;Pollock, Rufus (2014) &amp;lt;&lt;a href=&#34;http://blog.okfn.org/2014/09/30/why-the-open-definition-matters-for-open-data-quality-compatibility-and-simplicity/&#34;&gt;http://blog.okfn.org/2014/09/30/why-the-open-definition-matters-for-open-data-quality-compatibility-and-simplicity/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Quora (2016), &amp;lt;&lt;a href=&#34;https://www.quora.com/How-much-data-is-Big-Data&#34;&gt;https://www.quora.com/How-much-data-is-Big-Data&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Rouse, Margaret (2008) &amp;lt;&lt;a href=&#34;http://searchstorage.techtarget.com/definition/How-many-bytes-for&#34;&gt;http://searchstorage.techtarget.com/definition/How-many-bytes-for&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Sairanen, Heikki (2016)[ &lt;a href=&#34;http://sairanen.org/wordpress/blog/2016/04/24/poliittiset-akselit/%5D(http://sairanen.org/wordpress/blog/2016/04/24/poliittiset-akselit/)&#34;&gt;http://sairanen.org/wordpress/blog/2016/04/24/poliittiset-akselit/](http://sairanen.org/wordpress/blog/2016/04/24/poliittiset-akselit/)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Stack Overflow (2016), &amp;lt;&lt;a href=&#34;http://stackoverflow.com/questions/14045056/how-big-data-is-bigdata&#34;&gt;http://stackoverflow.com/questions/14045056/how-big-data-is-bigdata&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Tuokko, Mari (2015) &amp;lt;&lt;a href=&#34;https://rajapinta.co/2015/05/25/vaalit2015-muutama-sana-olohuonetentista-ja-twitterista/&#34;&gt;https://rajapinta.co/2015/05/25/vaalit2015-muutama-sana-olohuonetentista-ja-twitterista/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Tuokko, Mari (2016) &amp;lt;&lt;a href=&#34;https://rajapinta.co/2016/03/10/digivaalit-2015-ehdokkaiden-ja-kansalaisten-vuorovaikutus-sosiaalisessa-mediassa-vaalikampanjoinnin-aikana-tyhjyyteen-huutelua-vai-merkityksellista-dialogia/&#34;&gt;https://rajapinta.co/2016/03/10/digivaalit-2015-ehdokkaiden-ja-kansalaisten-vuorovaikutus-sosiaalisessa-mediassa-vaalikampanjoinnin-aikana-tyhjyyteen-huutelua-vai-merkityksellista-dialogia/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Tuomisto, Jouni ym. (2011a) &amp;lt;&lt;a href=&#34;http://fi.opasnet.org/fi/Kansanedustajien_arvot&#34;&gt;http://fi.opasnet.org/fi/Kansanedustajien_arvot&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Tuomisto, Jouni ym. (2011b) &amp;lt;&lt;a href=&#34;http://fi.opasnet.org/fi/Poikkipuoluehallitus&#34;&gt;http://fi.opasnet.org/fi/Poikkipuoluehallitus&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Tuomisto, Jouni ym. (2011c) &amp;lt;&lt;a href=&#34;http://fi.opasnet.org/fi/Jokapuoluehallitus&#34;&gt;http://fi.opasnet.org/fi/Jokapuoluehallitus&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Törmänen, Juha (2011)[ &lt;a href=&#34;http://peili.kirkas.info/archive/hsvaalikone11/kartta/%5D(http://peili.kirkas.info/archive/hsvaalikone11/kartta/)&#34;&gt;http://peili.kirkas.info/archive/hsvaalikone11/kartta/](http://peili.kirkas.info/archive/hsvaalikone11/kartta/)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Törmänen, Juha (2012)[ &lt;a href=&#34;http://peili.kirkas.info/archive/hsvaalikone12/%5D(http://peili.kirkas.info/archive/hsvaalikone12/)&#34;&gt;http://peili.kirkas.info/archive/hsvaalikone12/](http://peili.kirkas.info/archive/hsvaalikone12/)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Valtiontalouden tarkastusvirasto (2016), &amp;lt;&lt;a href=&#34;http://www.vaalirahoitus.fi/&#34;&gt;http://www.vaalirahoitus.fi/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Wikipedia: Big data (2016), &amp;lt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Big_data&amp;amp;oldid=722833400&#34;&gt;https://en.wikipedia.org/w/index.php?title=Big_data&amp;amp;oldid=722833400&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Yhteiskuntatieteellinen tietoarkisto (2016), &amp;lt;&lt;a href=&#34;http://www.fsd.uta.fi/fi/aineistot/taustatietoa/vaalidataa.html&#34;&gt;http://www.fsd.uta.fi/fi/aineistot/taustatietoa/vaalidataa.html&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Yle (2012) &amp;lt;&lt;a href=&#34;http://yle.fi/uutiset/nyt_sita_saa_vaalikonedataa/6331306&#34;&gt;http://yle.fi/uutiset/nyt_sita_saa_vaalikonedataa/6331306&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Yle (2015) &amp;lt;&lt;a href=&#34;http://yle.fi/uutiset/yle_julkaisee_vaalikoneen_vastaukset_avoimena_datana/7869597&#34;&gt;http://yle.fi/uutiset/yle_julkaisee_vaalikoneen_vastaukset_avoimena_datana/7869597&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Yle (2016) &amp;lt;&lt;a href=&#34;http://yle.fi/aihe/artikkeli/2016/05/18/ylen-sisaltoja-tarjolla-avoimena-datana&#34;&gt;http://yle.fi/aihe/artikkeli/2016/05/18/ylen-sisaltoja-tarjolla-avoimena-datana&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Pamela Vagata, Kevin Wilfong 2014
&amp;lt;&lt;a href=&#34;https://code.facebook.com/posts/229861827208629/scaling-the-facebook-data-warehouse-to-300-pb/&#34;&gt;https://code.facebook.com/posts/229861827208629/scaling-the-facebook-data-warehouse-to-300-pb/&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Xu, Wei, (2016) Twitter API Tutorial &amp;lt;&lt;a href=&#34;http://socialmedia-class.org/twittertutorial.html&#34;&gt;http://socialmedia-class.org/twittertutorial.html&lt;/a&gt;&amp;gt;&lt;/p&gt;
&lt;h2 id=&#34;tekstin-sisäiset-viitteet&#34;&gt;Tekstin sisäiset viitteet&lt;/h2&gt;
&lt;section class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Poikola, Kola ja Hintikka 2010, 13-14. &lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Holmes 2005; Rouse 2008; Vagata ja Wilfong 2014. &lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Quora 2016; Stack Overflow 2016; Wikipedia: Big data 2016. &lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Emt. &lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Poikola ym. 2010; Pollock 2014. &lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Lagus, Pantzar, Ruckenstein &amp;amp; Ylisiurua 2016. &lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:7&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Laaksonen 2016b. &lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:8&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Xu 2016. &lt;a href=&#34;#fnref:8&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:9&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Wu 2015. &lt;a href=&#34;#fnref:9&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:10&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Datavaalit 2016. &lt;a href=&#34;#fnref:10&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:11&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Lahti 2012a; Lahti 2013. &lt;a href=&#34;#fnref:11&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:12&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Twiittien tarkka määrä jää epäselväksi, sillä Rajapinta-blogissa puhutaan koko aineiston osalta Facebookin kanssa yhdessä yli 1,5 miljoonasta viestistä, mutta pelkkien Twiittien osalta johdonmukaisin tulkinta on erikseen mainittu noin yli 200 000 twiitin aineisto. Kts. Digivaalit 2016. &lt;a href=&#34;https://rajapinta.co/2016/04/07/digivaalit-2015-paatosseminaarin-materiaali/&#34;&gt;https://rajapinta.co/2016/04/07/digivaalit-2015-paatosseminaarin-materiaali/&lt;/a&gt; &lt;a href=&#34;#fnref:12&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:13&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Digivaalit 2015; Laaksonen 2016a; Laaksonen 2016b. &lt;a href=&#34;#fnref:13&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:14&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Digivaalit 2016. &lt;a href=&#34;#fnref:14&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:15&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Marttila 2016. &lt;a href=&#34;#fnref:15&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:16&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Kekkonen 2016. &lt;a href=&#34;#fnref:16&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:17&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Tuokko 2016. &lt;a href=&#34;#fnref:17&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:18&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Tuokko 2015. &lt;a href=&#34;#fnref:18&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:19&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Laaksonen 2015b. &lt;a href=&#34;#fnref:19&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:20&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Lagus ym. 2016. &lt;a href=&#34;#fnref:20&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:21&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Emt., 43. &lt;a href=&#34;#fnref:21&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:22&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Eranti ja Ylä-Anttila 2016. &lt;a href=&#34;#fnref:22&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:23&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Laaksonen 2015c. &lt;a href=&#34;#fnref:23&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:24&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Valtiontalouden tarkastusvirasto 2016. &lt;a href=&#34;#fnref:24&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:25&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Datavaalit 2016b; Lahti 2012b; Lahti 2012c. &lt;a href=&#34;#fnref:25&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:26&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Haakana 2011; Haakana 2012; Mäkinen 2011a; Mäkinen 2011b; Mäkinen 2015; Yle 2012; Yle 2016. &lt;a href=&#34;#fnref:26&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:27&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Mäkinen 2011c. &lt;a href=&#34;#fnref:27&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:28&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;MTV 2006. &lt;a href=&#34;#fnref:28&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:29&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Yhteiskuntatieteellinen tietoarkisto 2016. &lt;a href=&#34;#fnref:29&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:30&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Mäkinen 2015; Yle 2015. &lt;a href=&#34;#fnref:30&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:31&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Mäkinen 2011c. &lt;a href=&#34;#fnref:31&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:32&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Haakana 2012. &lt;a href=&#34;#fnref:32&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:33&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Mäkinen 2012a. &lt;a href=&#34;#fnref:33&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:34&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Parkkinen 2012. &lt;a href=&#34;#fnref:34&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:35&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Lahti 2012d. &lt;a href=&#34;#fnref:35&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:36&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Mäkinen 2012b. &lt;a href=&#34;#fnref:36&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:37&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Tuomisto ym. 2011a. &lt;a href=&#34;#fnref:37&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:38&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Kts. esim. Helsingin Sanomat 2012; Leppänen 2011a; Leppänen 2011b; Mäkinen 2012c; Sairanen 2016; Törmänen 2011; Törmänen 2012. &lt;a href=&#34;#fnref:38&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:39&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Mäkinen 2011d. &lt;a href=&#34;#fnref:39&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:40&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Tuomisto ym. 2011b; Tuomisto ym. 2011c. &lt;a href=&#34;#fnref:40&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:41&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Lagus ym. 2016. &lt;a href=&#34;#fnref:41&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description> 
  </item>
  
<item>
  <title>Tieteellisen kirjoittamisen uudet välineet: opaskokoelma tekeillä</title>
  <link>http://ropengov.org/fi/2015/08/tieteellisen-kirjoittamisen-opas/</link>
  <pubDate>Tue, 11 Aug 2015 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2015/08/tieteellisen-kirjoittamisen-opas/</guid>
  <description>&lt;p&gt;Tieteellisen kirjoittamisen vaihtoehdoista heräsi &lt;a href=&#34;https://www.facebook.com/groups/open.science.fi/permalink/639448819503656/&#34;&gt;keskustelua&lt;/a&gt; Open Science Finland-ryhmässä. Saatavilla on runsaasti uusia toistettavaa tai hajautettua raportointia tukevia välineitä kuten &lt;a href=&#34;https://en.wikipedia.org/wiki/Markdown&#34;&gt;markdown&lt;/a&gt;, &lt;a href=&#34;http://pandoc.org&#34;&gt;pandoc&lt;/a&gt;, &lt;a href=&#34;https://www.authorea.com/&#34;&gt;authorea&lt;/a&gt; ja monia muita. Tämänkin blogin postaukset on kirjoitettu Rmarkdownilla. Vaihtoehtojen moninaisuus ja teknisyys voivat hämmentää aiheeseen perehtymätöntä.&lt;/p&gt;
&lt;p&gt;Keskustelujen pohjalta on nyt alettu koostaa talkootyönä &lt;a href=&#34;https://gitkrax.github.io/md-tiede-fi/&#34;&gt;verkko-opasta&lt;/a&gt; näiden välineiden hyödyntämiseen tieteellisen kirjoittamisen näkökulmasta. &lt;a href=&#34;https://gitkrax.github.io/md-tiede-fi/&#34;&gt;Lisäykset oppaaseen&lt;/a&gt; ja &lt;a href=&#34;https://www.facebook.com/groups/open.science.fi/permalink/639448819503656/&#34;&gt;keskusteluun&lt;/a&gt; ovat tervetulleita !&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Kuntatiedon visualisointi R:n gisfin-kirjastolla</title>
  <link>http://ropengov.org/fi/2015/06/kuntakartat/</link>
  <pubDate>Sat, 06 Jun 2015 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2015/06/kuntakartat/</guid>
  <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;PÄIVITYS 2020-11-02: gisfin-paketin kehitystyö on lopetettu ja kehitystyö on siirtynyt &lt;a href=&#34;https://github.com/rOpenGov/geofi&#34;&gt;geofi-paketin&lt;/a&gt; pariin. Tämä alun perin Louhos-blogissa julkaistu kirjoitus on arkistoitu rOpenGov-blogiin esimerkkinä aiempien vuosien kehitystyöstä. Alla esitetyt esimerkit eivät todennäköisesti enää toimi geofi-paketin uusilla versioilla.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Kuntatiedon visualisointi Suomen kartalla R-kielellä nousi kuluneella viikolla keskusteluun Finnish Open Data Ecosystem-foorumin &lt;a href=&#34;https://www.facebook.com/groups/fi.okfn/permalink/10153486329250628/&#34;&gt;Facebook-ketjussa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tähän on monta tapaa, ja valmiiden välineiden käyttö helpottaa tehtävää. Suomalaisen paikkatiedon visualisointiin suunnatussa &lt;a href=&#34;https://github.com/rOpenGov/gisfin&#34;&gt;gisfin&lt;/a&gt;-paketissa on valmiit wrapperit kuntatiedon visualisointiin. &lt;a href=&#34;https://github.com/rOpenGov/gisfin/blob/master/vignettes/gisfin_tutorial.md&#34;&gt;Päivitä paketin kehitysversio Githubista&lt;/a&gt; saadaksesi kaikki toiminnot käyttöön.&lt;/p&gt;
&lt;p&gt;Kokosimme tähän blogipostaukseen tiiviit esimerkit. Lisää suomalaisen paikkatiedon R-työkaluista löytyy gisfin-paketin &lt;a href=&#34;https://github.com/rOpenGov/gisfin/blob/master/vignettes/gisfin_tutorial.md&#34;&gt;tutoriaalisivulta&lt;/a&gt;, jossa kuntien lisäksi saatavilla on mm. maakuntarajat, postinumeroalueet, äänestysalueet, aluejakokartat, Helsingin aluekarttoja, väestöruututietoja, spatiaalisia tilastoja ym.&lt;/p&gt;
&lt;h3 id=&#34;esimerkkidata-thln-sairastavuusindeksi&#34;&gt;Esimerkkidata: THL:n sairastavuusindeksi&lt;/h3&gt;
&lt;p&gt;Käytämme esimerkkinä kuntatason aineistojen visualisoinnissa
sairastavuusindeksiä, jonka voi ladata &lt;a href=&#34;http://www.sotkanet.fi/sotkanet/fi/index&#34;&gt;THL:n
sotkanet-palvelusta&lt;/a&gt; R:ään
&lt;a href=&#34;https://github.com/rOpenGov/sotkanet&#34;&gt;sotkanet&lt;/a&gt;-paketilla. Jostain syystä sotkanet-portaalin indeksiä ei saa vuotta 2010 pitemmälle joten otetaan se:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;# List all available indicators from THL Sotkanet
library(sotkanet) 
sotkanet.indicators &amp;lt;- SotkanetIndicators(type = &amp;quot;table&amp;quot;)

# Check specific indicators for &#39;sairastavuusindeksi&#39;
# sotkanet.indicators[grep(&amp;quot;sairastavuusindeksi&amp;quot;, sotkanet.indicators$indicator.title.fi),]

# This shows that the index 244 is THL sairastavuusindeksi.
# Retrieve THL sairastavuusindeksi 2010 for municipalities
# (newer information is not available???)
healthindex &amp;lt;- GetDataSotkanet(indicators = 244, year = 2010, region.category = &amp;quot;KUNTA&amp;quot;)

# Let us rename the value field for clarity
healthindex$Sairastavuusindeksi &amp;lt;- healthindex$primary.value
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Voit tallentaa datat tiedostoon ja lukea ne sieltä takaisin (tai vaihtaa tilalle oman aineistosi):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;# Write the data to file
write.csv(healthindex, file = &amp;quot;mydata.csv&amp;quot;, row.names = FALSE)

# Read the same data from file
# (instead you can just use the original mydata that was written in this file)
# or alternatively you can replace your own data in the file mydata.csv:
healthindex &amp;lt;- read.csv(file = &amp;quot;mydata.csv&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;kuntarajojen-lataus-maanmittauslaitokselta&#34;&gt;Kuntarajojen lataus Maanmittauslaitokselta&lt;/h3&gt;
&lt;p&gt;Lataa kuntarajat R:ään seuraavalla komennolla. Tässä esimerkissä käytämme &lt;a href=&#34;https://github.com/avoindata/mml&#34;&gt;valmiiksi esikäsiteltyjä Maanmittauslaitoksen kuntarajoja 2013&lt;/a&gt; (Yleiskartta-1000 Hallintoalueet). Muiden MML-aineistojen lataamiseen perehdy funktioon get_mml.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;library(gisfin)
map &amp;lt;- get_municipality_map(data.source = &amp;quot;MML&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Toinen vaihtoehto olisi ladata kuntarajat &lt;a href=&#34;http://gadm.org/country&#34;&gt;GADM-palvelusta&lt;/a&gt;. GADMin kuntakartta sisältää tällä hetkellä vanhentunutta tietoa, joten sivuutamme sen tässä esimerkissä. GADMin kartoista voi kuitenkin olla apua muiden alueitten visualisoinnissa.&lt;/p&gt;
&lt;h3 id=&#34;tietojen-liittäminen-kuntakarttaan&#34;&gt;Tietojen liittäminen kuntakarttaan&lt;/h3&gt;
&lt;p&gt;Liitä THL:n sairastavuusindeksin tiedot MML:n kuntakarttaan
kuntakoodin nojalla (MML-datassa &amp;ldquo;kuntakoodi&amp;rdquo; ja healthindex-datassa
&amp;ldquo;region.code&amp;rdquo;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;sp &amp;lt;- sp::merge(map, healthindex, by.x = &amp;quot;kuntakoodi&amp;quot;, by.y=&amp;quot;region.code&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;visualisointi-maanmittauslaitoksen-kuntarajoilla&#34;&gt;Visualisointi Maanmittauslaitoksen kuntarajoilla&lt;/h3&gt;
&lt;p&gt;Nyt datan voi visualisoida Suomen kuntakartalla sp-paketilla:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;# Define the 20% quantiles for plotting
quantiles &amp;lt;- quantile(sp$Sairastavuusindeksi, probs = seq(0, 1, .2))

# Discretize the data. This is easier to comprehend than continuous scale.
# And I could not find how to change color scale in spplot for continuous scale -
# suggestions are welcome.
sp$Sairastavuusindeksi2 &amp;lt;- cut(sp$Sairastavuusindeksi, quantiles)

# Define blue-white-red palette 
library(leaflet)
palette &amp;lt;- colorNumeric(c(&amp;quot;blue&amp;quot;, &amp;quot;white&amp;quot;, &amp;quot;red&amp;quot;), domain = range(quantiles), na.color = &amp;quot;black&amp;quot;)

# Visualize:
spplot(sp, zcol = &amp;quot;Sairastavuusindeksi2&amp;quot;, colorkey = TRUE,
	   main = &amp;quot;THL ikävakioimaton sairastavuusindeksi 2010 (Sotkanet-indeksi 244)&amp;quot;,
	   col.regions = palette(quantiles))
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-06-06-kuntakartat.fi_files/20150606-mmlplot-1.png&#34; alt=&#34;center&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;nopea-visualisointi&#34;&gt;Nopea visualisointi&lt;/h3&gt;
&lt;p&gt;Voit vaihtoehtoisesti käyttää aluedatan nopeaan visualisointiin räätälöityä wrapperiä. Tämä tuottaa ggplot2-objektin, jonka visualisointiparametreja voi halutessasi säätää lisää tarpeen mukaan:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;p &amp;lt;- region_plot(sp, color = &amp;quot;Sairastavuusindeksi&amp;quot;, region = &amp;quot;kuntakoodi&amp;quot;)
print(p)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-06-06-kuntakartat.fi_files/20150606-mmlplot2b-1.png&#34; alt=&#34;center&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;vuorovaikutteinen-kuntakartta&#34;&gt;Vuorovaikutteinen kuntakartta&lt;/h3&gt;
&lt;p&gt;Karttojen vuorovaikutteiseen visualisointiin soveltuvat ainakin &lt;a href=&#34;http://rmaps.github.io/&#34;&gt;rMaps&lt;/a&gt; ja &lt;a href=&#34;https://rstudio.github.io/leaflet/&#34;&gt;leaflet&lt;/a&gt;-paketit. Seuraava esimerkki tulostaa leaflet-paketin avulla selaimeen vuorovaikutteisen kuntakartan &lt;a href=&#34;https://github.com/finKeva/DataKuntakartalle/blob/master/dataKuntakartalle.r&#34;&gt;Dmitry Poletaevin koodia mukaillen&lt;/a&gt;. Lopputulos muistuttaa &lt;a href=&#34;http://rpubs.com/welxo88/kela_tth_IvsIIsuhde&#34;&gt;Dmitryn RPubs-esimerkkiä&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-{%&#34; data-lang=&#34;{%&#34;&gt;# Define the region and color variables and title:
region &amp;lt;- &amp;quot;kuntanimi&amp;quot;
color &amp;lt;- &amp;quot;Sairastavuusindeksi&amp;quot;
main &amp;lt;- &amp;quot;THL:n Sairastavuusindeksi&amp;quot;

# Define color palette
palette &amp;lt;- colorNumeric(c(&amp;quot;blue&amp;quot;, &amp;quot;white&amp;quot;, &amp;quot;red&amp;quot;), NULL)

# Define the text for popup box
state_popup &amp;lt;- paste0(&amp;quot;&amp;lt;strong&amp;gt;Kunta: &amp;lt;/strong&amp;gt;&amp;quot;, sp[[region]], 
                        &amp;quot;&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;&amp;quot;, main, &amp;quot;: &amp;lt;/strong&amp;gt;&amp;quot;, 
                        round(sp@data[,c(color)], digits=2))

# Generate interactive visualization
p &amp;lt;- leaflet(data = sp) %&amp;gt;%
       addTiles() %&amp;gt;% 
       addPolygons(fillColor = ~palette(get(color)), 
                fillOpacity = 0.7, 
                color = &amp;quot;#000000&amp;quot;, 
                weight = 1,
                popup = state_popup)

# Open in browser
print(p)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;rOpenGov-pakettien kehitys tapahtuu vapaaehtoispohjalta. Pakettien toiminnallisuuteen, dokumentaatioon, tutoriaaliin tai liittyvät &lt;a href=&#34;https://github.com/rOpenGov/gisfin&#34;&gt;kontribuutiot ovat tervetulleita&lt;/a&gt;. Julkaisemme mieluusti täydennyksiä tähän postaukseen sekä muita R-kielen käyttöä käsitteleviä blogikirjoituksia.&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Urbaanien asuinympäristöjen suosio kasvaa</title>
  <link>http://ropengov.org/fi/2015/05/urbanisaatio/</link>
  <pubDate>Tue, 19 May 2015 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2015/05/urbanisaatio/</guid>
  <description>&lt;p&gt;Asuntojen hintojen nousu on viime vuosina keskittynyt taajamiin. Ilmiö on havaittavissa koko Suomessa, erityisesti pääkaupunkiseudulla, ja näkyy asukastiheyden ja hintojen nousunopeuden korrelaationa (alla olevissa kuvissa). Todennäköinen syy hintojen epätasaiselle kehitykselle on urbaanien asuinympäristöjen arvostuksen kasvu.&lt;/p&gt;
&lt;p&gt;Maailmalla on vallannut alaa uusi urbanismin aalto, jossa ihmiset haluavat muuttaa tiiviisiin kaupunkikeskustoihin omakotitalolähiöiden sijaan (ks esim. &lt;a href=&#34;http://www.nytimes.com/2014/04/17/opinion/americas-urban-future.html&#34;&gt;NYT&lt;/a&gt;). Korkeasta väestötiheydestä sanotaan olevan monia etuja: Se tarjoaa monipuoliset palvelut, työpaikkojen ja palveluiden hyvän saavutettavuuden, mahdollisuuden rakentaa viihtyisää kävely-ympäristöä ja tehokkaasti toimivan joukkoliikenteen. Lisäksi tiivis rakentaminen säästää viheralueita ja luo edellytykset talouskasvulle, mm. koska saman alan yritykset saavat lähekkäin sijaitsemisesta kasautumisetuja.&lt;/p&gt;
&lt;p&gt;Millainen kehitys on Suomessa? Asuntojen hintojen muutokset kuvastavat muutoksia siinä, mitä asukkaan arvostavat, eli millaisssa asunnoissa he haluaisivat asua. &lt;a href=&#34;http://reaktor.fi/datascience&#34;&gt;Reaktor Oy:n data scientistit&lt;/a&gt;, joihin itsekin kuulun, &lt;a href=&#34;http://louhos.github.io/news/2015/05/07/asuntohintojen-muutokset/&#34;&gt;mallinsivat&lt;/a&gt; asuntojen hintojen kehitystä vuosina 2005-2014 ja tekivät niistä &lt;a href=&#34;http://kannattaakokauppa.fi&#34;&gt;interaktiivisen kartan&lt;/a&gt;. Malli antaa postinumerotasolla asuntojen hinnan kehityksen keskineliöhintana, lineaarisena trendinä ja trendin muutoksena. Näiden perusteella voidaan tutkia asukkaiden arvostusten muutoksia.&lt;/p&gt;
&lt;p&gt;Asuinalueen urbaaniudelle on monia mittareita, joista yksinkertaisin on väestötiheys. Alla kuvataan asuntojen hintojen muutosten ja väestötiheyden yhteyttä kunakin tarkasteluvuonna. Vaaka-akseli kuvaa väestötiheyttä asukkaina neliökilometrillä logaritmisella skaalalla, pystyakseli ennustettua hinnan muutosta prosentteina per vuosi ja jokaiselle postinumeroalueelle on erillinen pisteensä.
Kuvaajasta nähdään, että tarkastelujakson alkupuolella (2005-2009) harvemmin asuttujen alueiden hinnat ovat nousseet keskimäärin nopeammin kuin tiheämmin asuttujen alueiden. Sen sijaan kohti tarkastelujakson loppua muutos on kääntynyt päinvastaiseksi: keskimäärin enemmän nousevat niiden asuntojen hinnat, jotka sijaitsevat tiheämmin asutuilla alueilla.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-05-19-urbanisaatio.fi_files/unnamed-chunk-1-1.png&#34; alt=&#34;Kuvaaja&#34;&gt;&lt;/p&gt;
&lt;p&gt;Suomen tiheimmin asutut alueet sijaitsevat Helsingissä, joten kannattaa tarkastella myös erikseen tilannetta Helsingissä. Alla vastaava kehitys Helsingistä. Kuvaajasta näkee, että koko tarkastelujakson ajan tiheämmin asuttujen alueiden asuntojen hinnat ovat nousseet harvemmin asuttujen alueiden asuntojen hintoja nopeammin.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-05-19-urbanisaatio.fi_files/unnamed-chunk-2-1.png&#34; alt=&#34;Kuvaaja&#34;&gt;&lt;/p&gt;
&lt;p&gt;Tilannetta voidaan tarkastella myös yksittäisten kuntien osalta. Alle on kuvattu yhteys väestötiheyden ja lineaarisen hintakehityksen välillä Suomen yhdentoista suurimman kaupungin osalta. Jos suora saa tietyn vuoden kohdalla positiivisen arvon, se tarkoittaa sitä, että kyseisessä kaupungissa tiheämmin asuttujen alueiden asuntojen hinnat nousivat enemmän kuin harvempaan asuttujen alueiden asuntojen hinnat. Vastaavasti päinvastoin negatiiviset arvot tarkoittavat harvemmin asuttujen alueiden asuntojen hintojen nopeampaa nousua. Suorien luottamusvälit on saatu &lt;a href=&#34;http://louhos.github.io/news/2015/05/07/asuntohintojen-muutokset/&#34;&gt;mallin posteriorinäytteistä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-05-19-urbanisaatio.fi_files/unnamed-chunk-3-1.png&#34; alt=&#34;Kuvaaja&#34;&gt;&lt;/p&gt;
&lt;p&gt;Kuvaajista nähdään, että kaikissa Suomen 11 suurimmassa kaupungissa urbaanit asuinalueet ovat kasvattaneet suosiotaan. Tämä kehitys on ollut erityisen vahvaa pääkaupunkiseudulla.&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Asuntohintojen alueellinen kehitys selviää todennäköisyysohjelmoinnilla</title>
  <link>http://ropengov.org/fi/2015/05/asuntohintojen-alueellinen-kehitys/</link>
  <pubDate>Thu, 07 May 2015 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2015/05/asuntohintojen-alueellinen-kehitys/</guid>
  <description>&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;h2 id=&#34;mitä-teimme&#34;&gt;Mitä teimme?&lt;/h2&gt;
&lt;p&gt;Mallinsimme osakeasuntojen hintoja ja niiden muutoksia, postinumerotasolla, koko Suomessa, vuosina 2005–2014, perustuen Tilastokeskuksen jakamiin kauppa- ja asukasmäärätietoihin. Mallin arvioita hinnoista voi tarkastella &lt;a href=&#34;http://kannattaakokauppa.fi/&#34;&gt;vuorovaikutteisesta karttavisualisoinnista&lt;/a&gt;. Tuloksista voi lukea lisää &lt;a href=&#34;http://reaktor.com/blog/asuntojen-trendit-ja-miten-niista-tehdaan-luotettavia-ennusteita&#34;&gt;Reaktorin blogista&lt;/a&gt;. Työn takana on Reaktorin &lt;a href=&#34;http://reaktor.com/datascience&#34;&gt;Data Science -tiimi&lt;/a&gt;. Mallinnuksen lähdekoodi löytyy &lt;a href=&#34;https://github.com/reaktor/Neliohinnat&#34;&gt;GitHubista&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;mallinsimme&#34;&gt;Mallinsimme?&lt;/h2&gt;
&lt;p&gt;Tilastokeskuksen avaamat asuntojen hintatiedot ovat keskiarvoja per postinumero ja vuosi. Jos kauppoja on alle kuusi, keskiarvokin on sensuroitu. Hinnan ohella ilmoitetaan kauppojen määrä.&lt;/p&gt;
&lt;p&gt;Raakadatasta on useimmille postinumeroille vaikea suoraan arvioida hintoja ja etenkin niiden muutoksia.&lt;/p&gt;
&lt;p&gt;Alla on vasemmalla satunnaisten postinumeroiden vuosittaisia kauppamääriä. Sensuroidut tiedot on merkitty punaisella. Oikealla postinumero-vuosi-yhdistelmät on järjestetty kauppojen määrän mukaan. Kauppoja ei ole tehty tai tieto on sensuroitu siis n. 17,5% tapauksista, ja noin puolet keskihinnoista joko puuttuu tai on laskettu alle 30 kaupan perusteella.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-06-11-apartment-prices.fi_files/harvuus.png&#34; alt=&#34;Data on harvaa&#34;&gt;&lt;/p&gt;
&lt;p&gt;Puuttuva tieto on puuttuvaa, mutta edes 6&amp;ndash;30 kaupan keskiarvo &lt;em&gt;ei kuvaa luotettavasti alueen kaikkien osakkeiden hintatasoa&lt;/em&gt;. Myydyt asunnot ovat satunnaisesti keskihintaa kalliimpia ja halvempia. Vielä huonompaa jälkeä syntyy, kun näin vähistä kaupoista yritetään suoraan arvioida hintojen muutoksia. &lt;strong&gt;Mediassa julkaistut listat parhaiten ja huonoiten menestyvistä alueista ovatkin lähes satunnaisia&lt;/strong&gt;, tiheimpiä taajamia lukuunottamatta.&lt;/p&gt;
&lt;p&gt;Hinnoista saa paremman kuvan, kun aineistoon sovittaa tilastollisen mallin. Tai jos ei saa, malli paljastaa lähtötietojen heikkouden &amp;mdash; hyvin tehdystä mallista saa epävarmuusarviot kiinnostaville asioille, kuten hintatasoille.&lt;/p&gt;
&lt;p&gt;Malli voi myös ottaa huomioon alueellisen jatkuvuuden, ts. lähekkäisten postinumeroalueiden samankaltaisuuden. Se osaa painottaa trendi- ja keskihinta-arvioissa kauppojen määrän oikein, ja vielä paikata jäljelle jäävää epävarmuutta postinumeroalueen muilla ominaisuuksilla, kuten väestötiheydellä.&lt;/p&gt;
&lt;p&gt;Alla vasemmalla on kartta postinumeroiden keskihinnoista tarkastelujaksolla 2005&amp;ndash;2014, logaritmisena huippuhintojen hajonnan vuoksi, oikeassa kuvassa samat logaritmiset hinnat mallista. Vasemman kartan valkoisille alueille ei keskihintaa saatu, koska kauppoja ei ollut lainkaan.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-06-11-apartment-prices.fi_files/raw-vs-model.png&#34; alt=&#34;Raakadataa ja mallin hintoja Espoosta&#34;&gt;&lt;/p&gt;
&lt;p&gt;Vielä alla näemme kuvan eräistä Espoon postinumeroalueista. Pisteet kuvaavat Tilastokeskuksen ilmoittamia vuosihintoja, pisteiden koko kauppojen määrää. Viivat ovat mallin arvioita hintatasosta, harmaat alueet arvion epävarmuuksia, mallin itsensä mielestä.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-06-11-apartment-prices.fi_files/espoota.png&#34; alt=&#34;Raakadataa ja mallin hintoja Espoosta&#34;&gt;&lt;/p&gt;
&lt;p&gt;Hinta-arvioita on saatu vähistäkin kaupoista, ja etenkin vuosimuutokset ovat luotettavamman näköisiä kuin mitä melko paljon heittelevistä keskihinnoista suoraan laskien saisi. Hintojen mallintaminen siis kannattaa.&lt;/p&gt;
&lt;p&gt;Mallista saa ennusteen lähivuosille, mutta ennusteen kanssa kannattaa olla varovainen. Talouden kehitystä ja muita hintoihin ratkaisevasti vaikuttavia seikkoja on mahdoton ennustaa tarkasti muutamaa kuukautta pidemmälle. &lt;em&gt;Malli on parhaimmillaan kuvattaessa lähimenneisyyden hintakehityksen pääpiirteitä, ei ennustettaessa tulevaisuutta.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Alla on yksityiskohtaisempaa tietoa datasta, mallista ja visualisoinnista.&lt;/p&gt;
&lt;h2 id=&#34;ympäristö&#34;&gt;Ympäristö&lt;/h2&gt;
&lt;p&gt;Mallinnus tehtiin &lt;a href=&#34;http://www.r-project.org&#34;&gt;R-ympäristössä&lt;/a&gt;, itse malli &lt;a href=&#34;http://mc-stan.org&#34;&gt;Stan-kirjastolla&lt;/a&gt;, ja kaikki lähdekoodi on saatavilla &lt;a href=&#34;https://github.com/reaktor/Neliohinnat&#34;&gt;GitHubista&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;data&#34;&gt;Data&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://www.stat.fi/til/ashi/index.html&#34;&gt;Asuntojen hintatiedot&lt;/a&gt; saa Tilastokeskukselta kätevästi R:ään &lt;a href=&#34;http://louhos.github.io/&#34;&gt;Louhos&lt;/a&gt;- ja &lt;a href=&#34;http://ropengov.github.io/&#34;&gt;Ropengov&lt;/a&gt;-projektien kirjastoilla &lt;a href=&#34;http://cran.r-project.org/web/packages/pxweb/index.html&#34;&gt;pxweb&lt;/a&gt; (hinnat) ja &lt;a href=&#34;https://github.com/ropengov/gisfin&#34;&gt;gisfin&lt;/a&gt; (muut). Postinumeroalueiden karttapohja haettiin &lt;a href=&#34;http://www.palomaki.info/apps/pnro/&#34;&gt;Duukkikselta&lt;/a&gt;. Skriptit datojen hakemiseen, käsittelyyn ja yhdistelyyn ovat &lt;a href=&#34;https://github.com/reaktor/Neliohinnat&#34;&gt;GitHub-repossa&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;karttavisualisointi&#34;&gt;Karttavisualisointi&lt;/h2&gt;
&lt;p&gt;Karttapohjia postinumeroalueittaiselle aineistolle saa ainakin Tilastokeskuksen &lt;a href=&#34;http://www.stat.fi/tup/rajapintapalvelut/paavo.html&#34;&gt;Paavo-rajapinnasta&lt;/a&gt; ja &lt;a href=&#34;http://www.palomaki.info/apps/pnro/&#34;&gt;Duukkikselta&lt;/a&gt;. Paavo tarjoaa kartasta kahta versiota. Merialueet sisältävä kartta ei sovi visualisointiin ilman erillistä rantaviivaa. Rantaviivaan rajattu näytti hyvältä, mutta tarkkuudesta maksettaisiin GeoJSON-objektin koolla: yli 20 megatavua. Päädyimme käyttämään Duukkiksen pohjaa, jossa karkea rantaviiva tuottaa meille hyvän kompromissin koon ja ulkonäön välillä.&lt;/p&gt;
&lt;p&gt;Pieniä eroja postinumeroissa oli, joten muutama alue on saattanut karttapohjan valinnan takia kadota.&lt;/p&gt;
&lt;p&gt;Malli tuottaa hinta-arvioita vaikkei postinumerossa olisi osakehuoneistoja, kaupoista puhumattakaan: pelkkä sijainti ja väestötiheys riittävät. Muutamilta pieniltä, teollisuus- ja sairaala-alueiden näköisiltä postinumeroilta puuttuu väestötietokin, ehkä koska niissä ei virallisesti asu ketään. Nämä pienet postinumeroalueet näkyvät kartassa harmaana ja ilman ennustetta.&lt;/p&gt;
&lt;h2 id=&#34;malli&#34;&gt;Malli&lt;/h2&gt;
&lt;p&gt;Mallin asuntojen hinnoista pitää ottaa huomioon monta asiaa. Tärkein on tietenkin &lt;em&gt;toteutuneiden kauppojen hinnat&lt;/em&gt; — joista tiedämme vain keskiarvon jos sitäkään. Tiedossa oleva kauppojen lukumäärä auttaa, koska keskihinta kertoo tarkemmin hintatasosta kun kauppoja on enemmän.&lt;/p&gt;
&lt;p&gt;Koska kauppatietoa on etenkin maalta vähän, on hyvä ottaa malliin &lt;em&gt;postinumeroiden ominaisuuksia&lt;/em&gt;, jotka selittävät hintavaihtelua. Taajamissa asunnot ovat kalliimpia, joten asumistiheys on ilmeisen tärkeää. Postinumeroittainen asukastiheys ei ole sama asia kuin keskimääräinen asumistiheys, mutta korreloi siihen vahvasti.&lt;/p&gt;
&lt;p&gt;Hintojen alueellinen vaihtelu tekee lähekkäisistä postinumeroista keskimäärin samankaltaisia. Tätä voi hyödyntää hinta-arvioissa: naapuripostinumeron kaupat kertovat ainakin karkealla tasolla omastakin alueesta, etenkin jos oman alueen kauppoja on vähän. Tietenkään emme voi tehdä riippuvuudesta vahvaa oletusta, mutta voimme antaa mallin havaita riippuvuuden ja käyttää sitä, jos riippuvuutta on.&lt;/p&gt;
&lt;p&gt;Päädyimme mallissa koodaamaan alueiden lähekkäisyyden hierarkiaksi, joka saadaan suoraan numerosta: Esim. 02940 on Uusimaata (0), Espoota (02) ja Pohjois-Espoota (029). Hierarkia antaa mahdollisuuden mallille pitää näiden ja muiden vastaavien sisäkkäisten alueiden postinumeroita samanlaisina ympäristöön verrattuna, jos ne sitä ovat. (Spatiaalinen lähekkäisyys olisi vaihtoehto, mutta se on monella tapaa teknisesti hankalampi ja kadottaa mahdollisen äititaajaman vaikutuksen.)&lt;/p&gt;
&lt;p&gt;Hinnoissa kiinnostavinta on tason jälkeen ajallinen muutos. Niinpä hintatason ja vuoden keskinäinen suhde mallissa on oleellinen sen luonteen ja informatiivisuuden kannalta. Vuosille voisi kullekin antaa omat hintatasonsa, mutta hintatason ajallinen muutos olisi vapaiden vuositasojen mallissa liiankin vapaasti määritelty, eikä ennustetta ensi vuodelle syntyisi. Ja koska hintatason muutokset ovat hintojen tapaan alueellisia ja voivat riippua esim. väestötiheydestä, päädyimme malliin, jossa hinnan ajallinen muutos eli trendi ja trendin muutos ovat eksplisiittisesti mukana.&lt;/p&gt;
&lt;p&gt;Vuoden vaikutus mallissa on siis kvadraattinen, ts. joka postinumerolla on mallissa oma trendinsä ja trendin muutosnopeus per vuosi. Lisäksi väestötiheys pääsee ennustamaan näitä muutoksia. Sen vaikutus näkyy etenkin jos kauppoja on vain vähän tai ei ollenkaan.&lt;/p&gt;
&lt;p&gt;Postinumerokohtaisia hintaparametreja kertyy yhteensä kuusi: hintataso, trendi, trendin muutos, ja väestötiheyden vaikutus näihin kaikkiin. Parametreilla on arvot ja varianssit myös postinumeroa isommille hierarkian alueille (Uusimaa, Espoo, jne.), josta ne pääsevät vaikuttamaan postinumerokohtaisiin arvioihin etenkin kun kauppoja on vähän. Parametreilla on myös eri hierarkiatasoilla kovarianssit, jolloin ne voivat auttaa toistensa estimointia tapauksissa joissa hintadata ei suoraan riitä.&lt;/p&gt;
&lt;p&gt;Yhteenvetona kaavaksi, mallin alataso havaitulle keskihinnalle $y$ on&lt;/p&gt;
&lt;p&gt;$$
\log h_{it} =
\beta_{i1} + \beta_{i2} t + \beta_{i3} t^2 + \beta_{i’4} d_i + \beta_{i’5} d_i t + \beta_{i’6} d_i t^2 ,
$$&lt;/p&gt;
&lt;p&gt;$$
\log y_{it} \sim
\textrm{t}\ \left(\log h_{it}, \sqrt{\sigma^2_y + \frac{\sigma^2_w}{n_{it}}}, \nu\right) ,
$$&lt;/p&gt;
&lt;p&gt;jossa $i$ on postinumeroalue, $t$ vuosi, $\beta$ ovat postinumerokohtaisia hintakertoimia, $i’$ on postinumeron alin hierarkiataso (väestötiheysparametrit ovat yhteisiä kullekin $i’$-alueelle), $t()$ on t-jakauma, $\sigma_y$ vuosikohtainen hajonta, $\sigma_w$ kauppahintojen hajonta mittausyksikön (vuosi$\times$postinumero) sisällä, ja $\nu$ t-jakautuneen residuaalin vapausaste. Hinnat käsitellään mallissa logaritmisena, jolloin absoluuttisella hintaskaalalla malli on multiplikatiivinen. Hajonnat ja $\nu$ estimoidaan kaiken muun ohella. Kertoimille $\beta$ on multinormaali priori kovarianssimatriiseineen, ja lisäksi ylemmille hierarkiatasoille eli postinumeroa suuremmille alueille omat vastaavat rakenteensa ($\beta$ ja sen priorit). Yksityiskohdat tätä tarkemmin selviävät parhaiten &lt;a href=&#34;https://github.com/reaktor/Neliohinnat/blob/master/source/m4.stan&#34;&gt;mallikoodista&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vapausasteen $\nu$ estimaatti on luokkaa 6,5, eli hintojen residuaali on normaalijakaumaa selvästi pitkähäntäisempi. Suoraan mallin parametreista (koodissa matriisi &amp;ldquo;Omega&amp;rdquo;) nähdään, että hintataso ja trendi korreloivat yli postinumeroalueiden ($r$=0,28), samoin trendin muutos ja hintataso ($r$=0,43). Halvat alueet ovat siis viimeisen n. kymmenen vuoden aikana halventuneet edelleen, ja kalliit kallistuneet. Tämä liittynee asutuksen keskittymiseen.&lt;/p&gt;
&lt;p&gt;Postinumerokohtaisista estimaateista nähdään, että asukastiheys korreloi niin hintatasoon kuin sen muutoksiinkin:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-06-11-apartment-prices.fi_files/tiheys-korrelaatiot.png&#34; alt=&#34;Asukastiheyden ja hinnan korrelaatiot&#34;&gt;&lt;/p&gt;
&lt;p&gt;Malli on estimoitu Stan-kirjastolla (&lt;a href=&#34;http://mc-stan.org/&#34;&gt;http://mc-stan.org/&lt;/a&gt;). Stan on &lt;a href=&#34;https://louhos.wordpress.com/2014/01/29/stan-kj/&#34;&gt;todennäköisyysohjelmointikieli&lt;/a&gt;, joka tuottaa generatiivisesta mallin kuvauksesta estimointialgoritmin. Vaihtoehdoista estimoinnin itse koodaaminen olisi huomattavan työlästä, kun taas valmiiden mallipakettien (lme4, mgcv, …) käyttäminen pakottaisi tyytymään rajoittuneempaan malliin, joka kuvaisi asuntojen hintoja ja niiden vaihtelua huonommin.&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Kenen joukoissa seisot - ennustaako kone ehdokkaan puoluekannan?</title>
  <link>http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/</link>
  <pubDate>Fri, 17 Apr 2015 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;Avoimesta Ylen ja HS:n vaalikonedatasta löytyy hyviä analyysejä ja visualisointeja, esimerkiksi Juha Törmäsen &lt;a href=&#34;http://kirkas.info/artikkeli/tilastollinen-poliitikkokartta-2015&#34;&gt;analyysi ja visualisointi&lt;/a&gt;, Markku Niemivirran &lt;a href=&#34;http://blogs.helsinki.fi/niemivir/?p=257&#34;&gt;analyysit HS:n&lt;/a&gt; ja &lt;a href=&#34;http://blogs.helsinki.fi/niemivir/?p=293&#34;&gt;Ylen datasta&lt;/a&gt; ja näiden &lt;a href=&#34;http://users.aalto.fi/~leinona1/vaalit2015/&#34;&gt;visualisointi&lt;/a&gt; (Taipale, Leinonen, Niemivirta). Latenttien komponettien mallinnuksesta kiinnostuneet voivat vilkaista myös Janne Sinkkosen &lt;a href=&#34;https://github.com/euxoa/vaalit&#34;&gt;latentin multinomiaalimallin koodia&lt;/a&gt;. Mallin tuottama &lt;a href=&#34;https://dl.dropboxusercontent.com/u/8403120/Hki-Uusimaa-partyplots.pdf&#34;&gt;grafiikka tuloksista Uudellemaalle&lt;/a&gt; kiinnostanee kaikkia.&lt;/p&gt;
&lt;p&gt;Edellisissä on faktoroitu alkuperäisiä vastauksia ja ryhmitelty ehdokkaita; tehty siis varsinaista analyysiä vastausten taustalla olevista tekijöistä. Analyysit ovat oikein hyviä, joten kokeilen jotain muuta: &lt;em&gt;luokittelijaa&lt;/em&gt; Ylen vaalikonedatalle. Luokittelija mittaa suoraan kuinka hyvin kysymykset erottelevat puolueita toisistaan ja kuinka todennäköinen ehdokas on kullekin puolueelle. Osaako kone erottaa puolueet toisistaan? Kuka on Ylen kysymysten perusteella kaikkein piraatein, kokoomuslaisin tai vasemmistolaisin? Voiko pelkkien taustatietojen perusteella arvata ehdokkaan puoluekannan? Mitkä kysymykset oppiva kone valitsee erotteleviksi?&lt;/p&gt;
&lt;div id=&#34;kaksi-luokittelijaa-ylen-vaalikonevastauksista&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Kaksi luokittelijaa Ylen vaalikonevastauksista&lt;/h2&gt;
&lt;p&gt;Luokittelijat on tehty &lt;a href=&#34;http://vaalikone.yle.fi/eduskuntavaalit2015/&#34;&gt;Ylen vaalikoneen&lt;/a&gt; &lt;a href=&#34;http://yle.fi/uutiset/yle_julkaisee_vaalikoneen_vastaukset_avoimena_datana/7869597&#34;&gt;avoimen datan&lt;/a&gt; kaikille ehdokkaille yhteisten monivalintavastausten perusteella. Toinen perustuu saman datan taustatietoihin: ikä, sukupuoli, kieli, uskontokuntaan kuuluminen, tulot, työnantajan laatu, koulutus.&lt;/p&gt;
&lt;p&gt;Ensimmäistä voi kutsua vaikkapa käyttäytymis- tai arvoperustaiseksi ja jälkimmäistä demografiaperusteiseksi. Käyn läpi lähinnä ensimmäistä, mielipiteisiin perustuvaa ja vähän demografiaperustaita.&lt;/p&gt;
&lt;p&gt;Tekstin lopussa on lisätietoa siitä, mitä “luokittelu” tässä yhteydessä tarkoittaa - ja ihan lopussa on lyhyt tekninen kuvaus (tiivistelmä: &lt;code&gt;glmnet&lt;/code&gt;:in multinomiaalimalli, regularisoinnissa käytetään L1-normia)&lt;/p&gt;
&lt;div id=&#34;puolueet-ja-määrät&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Puolueet ja määrät&lt;/h3&gt;
&lt;p&gt;Ylen vaalikonedatasta löytyy kokeiluun 1849 ehdokasta. Jätin suosiolla pois ne puolueet, joilla vastaajia on alle viisi. Luokittelija nimittäin yrittää minimoida kokonaisluokitteluvirhettä ja jos luokkien esiintymisellä on suuri ero, pienet luokat saattavat hävitä kokonaisvirheen pienentämiseksi, eikä ristiinvalidointiinkaan riitä dataa.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/figure-html/unnamed-chunk-1-1.png&#34; width=&#34;1152&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Nykyisten eduskuntapuolueiden lyhenteet lienevät selviä, muut lyhenteet ovat:
Itsenäisyyspuolue (IP), Kommunistinen Työväenpuolue (KTP), Muutos 2011 (M11), Piraattipuolue (PIR)
Pirkanmaan Sitoutumattomat yhteislista (PSYL), Suomen Kommunistinen Puolue (SKP) ja Suomen Työväenpuolue (STP).&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;luokittelutulokset-vastausten-perusteella&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Luokittelutulokset vastausten perusteella&lt;/h2&gt;
&lt;div id=&#34;kolme-neljästä-luokittuu-oikein&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Kolme neljästä luokittuu oikein&lt;/h3&gt;
&lt;p&gt;Malli antaa ristiinvalidoidun tarkkuusennusteen 76%. Noin 24% ehdokkaista luokittuu siis väärään puolueeseen, kun perusteena käytetään Ylen tekemiä kysymyksiä suoraan. Tätä voi suhteuttaa: jos ainoa informaatio (priori) olisi se, kuinka paljon puolueilla on ehdokkaita, olisi kannattavinta arvata aina SDP:ta, jolla on aineistossa eniten ehdokkaita, noin 11%.&lt;/p&gt;
&lt;p&gt;Tulos on paljon arvausta parempi, kun priori on noin 11%. Ylen vaalikoneen datan perusteella yksinkertainen oppiva kone siis pystyy useimmiten tunnistamaan ehdokkaan puoluekannan. Kaipa puolueet sitten eroavat toisistaan.&lt;/p&gt;
&lt;p&gt;Luokittelijan tai kysymysten käsittelyn muokkaamisella tulosta voisi ehkä parantaa, mutta se ei ole tekemäni lyhyen harjoituksen kannalta oleellista.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;sekaannusmatriisi&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Sekaannusmatriisi&lt;/h3&gt;
&lt;p&gt;Virhe on eri suuruinen eri puolueilla ja puolueet sekaantuvat eri tavoin. Luokittelukokeessa ehkä mielenkiintoisinta onkin se, miten eri puolueet sekaantuvat toisiinsa vaalikonevastausten perusteella. Seuraavassa ehdokkaat on luokiteltu ja lasketaan, kuinka monta prosenttia kunkin puolueen ehdokkaista saa minkäkin ennustetun puolueen.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/figure-html/unnamed-chunk-2-1.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;p&gt;RIVIT kertovat oikean puolueen ja sarakkeet ennustetun. Luvut ovat prosentteja ja rivit summatutuvat noin sataan (prosenttiluvut pyöristettyjä).&lt;/p&gt;
&lt;p&gt;Esimerkiksi Kokoomus ja Kristillisdemokraatit erottuvat hyvin, toisaalta näkyy kuinka pienten puolueiden/listojen ehdokaat luokitellaan isompiin: Kommunistinen Työväenpuolue, Pirkanmaan sitoutumattomat ja Suomen Työväenpuolue sirottuvat muihin puolueisiin. Puolueiden eri- ja samankaltaisuutta (Ylen kysymysten perusteella!) voi katsella matriisista: Esimerkiksi isoista puolueista Keskusta luokittuu heikoiten ja osaa luokittelija luulee vihreiksi, kristillisdemokraateiksi, perussuomalaisiksi tai kokoomuslaisiksi. SKP sekaantuu osittain Vasemmistoliittoon ja Muutos 2011 Perussuomalaisiin. Toisaalta esimerkiksi harva, jos kukaan vihreä luokittu kristillisdemokraatiksi tai kokoomuslainen vasemmistoliittolaiseksi.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;mennään-henkilötasolle&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Mennään henkilötasolle&lt;/h3&gt;
&lt;p&gt;Käytetty luokittelija toimii niin, että luokiteltava saa ennusteen todennäköisyydestä olla kunkin puolueen ehdokas.
Tässä vaiheessa on hyvä vielä muistuttaa, että kaikkiaan tämä harjoitus mittaa Ylen kysymysten ja käytetyn menetelmän kykyä tehdä luokittelua, ei todellista aatten puhtautta ja paloa. Pienimmät puolueet luokittuvat sen verran huonosti, että olen reilu ja otan esimerkiksi kymmenen puoluetta, joilla on tässä aineistossa eniten ehdokkaita.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/figure-html/unnamed-chunk-3-1.png&#34; width=&#34;1152&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Sarakkeet ovat todennäköisyys (pyöristettynä kokonaisiin prosentteihin) kullekin luokalle (puolueelle). Pienimmät puolueet on jätetty pois joten rivit eivät summaudu aina sataan.&lt;/p&gt;
&lt;p&gt;Helpotuksen huokaus: kaikki näiden puolueiden puheenjohtajat ennustuvat oikein ja vieläpä isolla marginaalilla seuraavaksi todennäköisimpään. On hauska pohtia, mitä tästä voisi nähdä. No, ainakin porvaripuolueiden puheenjohtajilla on hyvin pieni todennäköisyys luokittua Vasemmistoliittoon ja vastaavasti vasemmistopuolueiden puheenjohtajilla Kokoomukseen.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;kertoimet-mitä-kone-on-oppinut&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Kertoimet: mitä kone on oppinut?&lt;/h3&gt;
&lt;p&gt;Kertoimen etumerkistä voi päätellä, mihin suuntaan erottelevat kysymykset vaikuttavat. Yksinkertaistaen: kukin ehdokas saa saa kuulumisestaan luokkaan (puolueeseen) pisteluvun, johon vaikuttavat nollasta poikkeavat kertoimet. Jos kerroin on nolla, on samantekevää kyseisen puolueen suhteen, miten on vastannut. Pisteluku lasketaan joka puolueelle erikseen. Esimerkiksi myöteinen suhtautuminen perustuloon tuo pisteitä Vihreiden tai Keskustan ehdokkaana ololle, mutta kertoo päinvastaista sosiaalidemokraattien listoille kuulumisesta. KD:n ehdokkaillakin on asiaan kanta (keskimäärin keskimääräistä kielteisempi): nolla kertoo vain, että luokittelijan mielestä tätä kysymystä ei kannata huomioida kristillisdemokraattien kohdalla.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/figure-html/unnamed-chunk-4-1.png&#34; width=&#34;1440&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Entä tuo &lt;code&gt;euc&lt;/code&gt;? Lisäsin yhden johdetun muuttujan, joka kertoo kuinka kauas nollatasosta (nollataso = ohita tai tyhjä) ehdokas on vastannut. Näyttää siltä, että luokittelija hyödyntää sitä. Esimerkiksi keskimääräistä “miedommin” vastaaminen puoltaa kuulumista Keskustan ehdokkaisiin. Samalla voi demonstroida sitä että kertoimet &lt;em&gt;eivät&lt;/em&gt; kuvaa suoraan puolueiden suhteita keskimääräiseen, vaan sitä miten tietoa käytetään luokittelussa. Alla &lt;a href=&#34;http://en.wikipedia.org/wiki/Box_plot&#34;&gt;Tukeyn laatikkokaavio&lt;/a&gt; muuttujan &lt;code&gt;euc&lt;/code&gt; arvoista eri puolueiile. Paksu viiva on mediaani.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/figure-html/unnamed-chunk-5-1.png&#34; width=&#34;768&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Esimerkiksi Vasemmistoliiton kerroin on nolla, vaikka ehdokkaissa on monia muita puolueita enemmän “jyrkkiä” vastaajia.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;istuvat-vs.-uudet-ehdokkaat&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Istuvat vs. uudet ehdokkaat&lt;/h3&gt;
&lt;p&gt;Verrataan istuvien ja uusien ehdokkaiden luokittelun onnistumisprosentteja&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/figure-html/unnamed-chunk-6-1.png&#34; width=&#34;192&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Istuvat luokittuvat selvästi paremmin. Määrät ovat pieniä, joten kokeilin sattuman välttämiseksi tehdä mallin pelkästään aineiston 159 istuvalla kansanedustajalla (pl. Muutos 2011, jolla on vain yksi edustaja), luokittelutarkkuus on ristiinvalidoituna 88 % tienoilla. Ryhmäkuri on sisäistynyt.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;demografinen-luokittelija&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Demografinen luokittelija&lt;/h3&gt;
&lt;p&gt;Ylen datassa on taustatietoina mm. tulot, sukupuoli, äidinkieli, lapset, koulutus, työnantajan laatu (yksityinen/julkinen), uskontokunta ja sijoitukset. Kokeilin miten käy, jos käyttää vain näitä tietoja. Kokonaistarkkuus on 27%. Tulos on tietysti huonompi kuin mielipiteisiin perustuvalla luokittelijalla ja hyvä niin - mutta sentään arvausta selvästi parempi. Kun tarkastelee sekaannusmatriisia, huomaa että kyllä demografia ja tulot (tai se että ei halua näitä kertoa) tietyissä tapauksissa ehdokkaiden puoluekannoista kertoo. Itse asiassa RKP luokittuu &lt;em&gt;paremmin&lt;/em&gt; kuin asiakysymysten avulla, avaintekijä on tässä äidinkieli. Keskusta on varmaankin “keskiluokkainen” taustaltaan ja vetää siksi monta ehdokasta. KD:n erottuvuutta muista porvaripuolueista selittää suuri sen suuri määrä muihin kristillisiin kirkkokuntiin kuuluvia, joita muissa puolueissa on vähän.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/fi/2015/04/vaalit2015-luokittelu/index.fi_files/figure-html/unnamed-chunk-7-1.png&#34; width=&#34;960&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;mikä-on-luokittelija&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Mikä on luokittelija?&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Luokittelu&lt;/em&gt; on koneoppimisen yksi perustehtävä. Luokiteltaville alkioille, tässä ehdokkaille, on olemassa oikea &lt;em&gt;luokka&lt;/em&gt;, puolue. Lisäksi on selittävää dataa, tässä vastauksia kysymyksiin. Luokittelija muodostetaan käyttämällä aineistoa, jossa tunnetaan sekä selittävä data että oikea luokkatieto. Luokittelijalla voidaan sitten ennustaa oikean luokka muun datan perusteella, kun luokkatieto puuttuu.&lt;/p&gt;
&lt;p&gt;Luokittelu on siis &lt;em&gt;prediktiivinen&lt;/em&gt;, ennustava tehtävä. Tässä tapauksessa kaikille ehdokkaille tiedetään oikea puolue, Ennustuskykyä simuloidaan &lt;em&gt;ristiinvalidoinnilla&lt;/em&gt;, jossa osaa ehdokkaista käytetään mallin muodostamiseen ja osalla validoidaan kuinka hyvin malli osaa ennustaa. Luokittelija ei voi tehdä ihmeitä: jos kysymykset eivät tuo informaatiota riittävästi, ei luokittelija sitä voi mistään taikoa. Yksi tapa lisätä luokittelukykyä on lisätä dataa, siis kysymyksiä, tai tehdä luokittelijan rakenteesta monimutkaisempi. Tässä piilee väärin tehtynä ansa: luokittelija &lt;em&gt;ylioppii&lt;/em&gt; detaljeja ja alkaakin ennustaa uutta aineistoa yhä huonommin. Tätä vastaan taistellaan regularisoinnilla.&lt;/p&gt;
&lt;p&gt;Käytän lineaarista &lt;em&gt;logistista multinomiaalimallia&lt;/em&gt;, joka antaa myös ehdokkaille todennäköisyyden kuulua kaikkiin puolueisiin. Lisäksi luokittelijan kertoimet antavat kuvan siitä, millä perusteilla luokkapäätös on tehty. Käytän L1-sakkoa (“lasso”), joka jättää kokonaan huomiotta kysymyksiä, jotka sotkisivat luokittelua. Luokittimen kerroinmatriisiin jäävät vain (luokittimen mielestä) puolueelle riittävät ja yleistyskyvyn säilyttävät erottelevat muuttujat.&lt;/p&gt;
&lt;div id=&#34;lyhyt-tekninen-kuvaus&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Lyhyt tekninen kuvaus&lt;/h3&gt;
&lt;p&gt;Vastausvaihtoehdot on muunnettu seuraavasti&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;täysin eri mieltä / Ei = -1&lt;/li&gt;
&lt;li&gt;jokseenkin eri mieltä: -1/2&lt;/li&gt;
&lt;li&gt;ohita kysymys / Tyhjä: 0&lt;/li&gt;
&lt;li&gt;jokseenkin samaa mieltä: 1/2&lt;/li&gt;
&lt;li&gt;täysin samaa mieltä / Kyllä: 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lisäksi on laskettu muuttuja &lt;code&gt;euc&lt;/code&gt; joka on vastausvektorin euklidinen etäisyys nollavektoriin, mikä siis kuvaa vastaustavan “äärimmäisyyttä” tai “laimeutta”.&lt;/p&gt;
&lt;p&gt;(Demografiapohajaiseen luokittimeen vastaukset on 1-of-C -koodattu, puuttuva tieto eksplisiittisenä luokkana, ikä on likukuluku.)&lt;/p&gt;
&lt;p&gt;Luokittelija on &lt;a href=&#34;http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html#log&#34;&gt;R:n &lt;code&gt;glmnet&lt;/code&gt; -paketin&lt;/a&gt; multinomiaalimalli. Kokeessa on käytetty suoraan &lt;code&gt;cv.glmnet&lt;/code&gt; -funktiota joka hakee regularisaatioparametrin 10-taitteisella ristiinvalidoinnilla.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;classifier&amp;lt;-cv.glmnet(x,y,family=&amp;quot;multinomial&amp;quot;,type.measure=&amp;quot;class&amp;quot;,standardize=TRUE,intercept=TRUE,alpha=1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;glmnet&lt;/code&gt; standardoi muuttujat itse ja asettaa intercept-termin. Vipu &lt;code&gt;alpha=1&lt;/code&gt; asettaa mallin käyttämään L1-sakkoa regularisoinnissa (“lasso”). (&lt;code&gt;alpha=0&lt;/code&gt; olisi L2-sakko ja tältä väliltä saataisiin “elastic net” -regularisointi.)
Kokeilin myös L2:ta, mutta tulos ei ollut ainakaan parempi.&lt;/p&gt;
&lt;p&gt;Luokittelun kokonaisvirhe on parhaan mallin ristiinvalidaatiosta. Sekaannusmatriisin prosenttiluvut on puolestaan mallia sovellettu koko aineistoon, jolloin virhe on pari prosenttiyksikköä optimistisempi. Kokonaisvirhe olisi 21%, kun se ristiivalidoituna on siis 23,5%.&lt;/p&gt;
&lt;p&gt;Koska muuttujia on suhteellisen vähän suhteessa dataan ja malli on lineaarinen ja &lt;code&gt;glmnet&lt;/code&gt;:in regularisoinnin pitäisi olla laadukas, en ryhtynyt tekemään tästä sen ankarampaa validointia.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;lähdekoodi&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Lähdekoodi&lt;/h3&gt;
&lt;p&gt;Datan esikäsittelyyn ja luokitteluun käytetty skripti sekä esikäsitellyt datat löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/tree/master/vaalit2015/luokittelu&#34;&gt;GitHubista&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Kaikkien ehdokkaiden lasketut todennäköisyydet kuulua kuhunkin puolueeseen löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/vaalit2015/luokittelu/ehdokkaat.yle.csv&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Kirjoittaja Johan Himberg on data scientist Reaktorilla ja kävi jo äänestämässä eduskuntavaaleissa.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&#34;license&#34; href=&#34;http://creativecommons.org/licenses/by/4.0/&#34;&gt;
&lt;img alt=&#34;Creative Commons -käyttölupa&#34; style=&#34;border-width:0&#34;
src=&#34;http://i.creativecommons.org/l/by/4.0/88x31.png&#34; /&gt; &lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</description> 
  </item>
  
<item>
  <title>Avoimella paikkatiedolla kohti älykkäämpää kaupunkia</title>
  <link>http://ropengov.org/fi/2015/03/hsy-paikkatietoseminaari/</link>
  <pubDate>Fri, 13 Mar 2015 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2015/03/hsy-paikkatietoseminaari/</guid>
  <description>&lt;p&gt;Helsingin Seudun Ympäristöpalvelut (&lt;a href=&#34;https://www.hsy.fi/fi/asukkaalle/Sivut/default.aspx&#34;&gt;HSY&lt;/a&gt;) järjesti keskiviikkona vuotuisen paikkatietoseminaarin Heurekassa. Tämän vuoden seminaarissa teemana oli älykäs kaupunki, ja vieläpä kehitys älykkäästä viisaaseen kaupunkiin. Tapahtuman ohjelma ja esitysten kalvot löytyvät &lt;a href=&#34;https://www.hsy.fi/fi/asiantuntijalle/tapahtumat/seminaarit/paikkatietoseminaarit/Sivut/Paikkatietoseminaarit.aspx&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sain kutsun puhumaan seminaarin yli 200 päiselle yleisölle avoimen paikkatiedon visualisoinnista ja mallinnuksesta. Päädyin kertomaan viime syksynä Antin ja Jannen kanssa tekemästämme fillarilaskentadatan analyysistä. &lt;a href=&#34;http://www.slideshare.net/ouzor/hsy-2015-fillaridata&#34;&gt;Esityksessäni&lt;/a&gt; herätti mielenkiintoa erityisesti avoimen tekemisen korostaminen ja myös R:llä tehdyt visualisoinnit ja mallinnus kiinnostivat. Alla esimerkkinä lämpötilan vaikutuksesta pyöräilymääriin kertova kuva. Lisää tuloksia voi lukea &lt;a href=&#34;http://www.kaupunkifillari.fi/blog/2015/03/04/pyoraily-on-arkista-touhua&#34;&gt;Kaupunkifillari-blogista&lt;/a&gt;, ja lisäksi data ja lähdekoodi ovat saatavilla &lt;a href=&#34;https://github.com/apoikola/fillarilaskennat/&#34;&gt;GitHubissa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-03-13-hsy-paikkatietoseminaari.fi_files/a4f_lampotila_vari_v2.png&#34; alt=&#34;lampotila&#34;&gt;&lt;/p&gt;
&lt;p&gt;Seminaarissa oli paljon mielenkiintoista ohjelmaa liittyen paikkatietoon ja älykkäisiin kaupunkeihin. &lt;a href=&#34;https://www.hsy.fi/fi/asiantuntijalle/seututieto/paikkatiedot/Sivut/SeutuRuutu.aspx&#34;&gt;SeutuRuutu&lt;/a&gt; on käyttöliittymä mielenkiintoisiin Helsingin seudun paikkatietoaineistoihin, kuten tarkkaan väestötietoon. Näitä ei kuitenkaan ole avoimesti saatavana, vaan käyttöön pitää hakea lupa.&lt;/p&gt;
&lt;p&gt;Miliza Ryötin ja Tuire Valkosen &lt;a href=&#34;https://www.hsy.fi/fi/asiantuntijalle/tapahtumat/seminaarit/paikkatietoseminaarit/Documents/2015/Miliza_Ryoti_ja_Tuire_Valkonen.pdf&#34;&gt;kalvoista&lt;/a&gt; voi katsoa esimerkkejä Helsingin Seudun Maankäyttösuunnitelmasta 2050, Asuntostrategiasta 2025 ja Liikennejärjestelmäsuunnitelmasta (HLJ) 2015. Itseäni kiinnostivat erityisesti HLJ:n pyöräilyn kehittämiseen liittyvät kehityssuunnitelmat, joista kuvakaappaus esimerkkinä alla.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-03-13-hsy-paikkatietoseminaari.fi_files/fillari_elama.png&#34; alt=&#34;fillari&#34;&gt;&lt;/p&gt;
&lt;p&gt;Marko Kauppi ja Jouko Järnefelt Tampereen kaupungilta esittelivät avoimen lähdekoodin ratkaisuja paikkatiedon analysointiin ja visualisointiin. Kannattaa tsekata Joukon &lt;a href=&#34;https://www.hsy.fi/fi/asiantuntijalle/tapahtumat/seminaarit/paikkatietoseminaarit/Documents/2015/Jouko_Jarnefelt.pdf&#34;&gt;kalvot&lt;/a&gt;, niissä on lukuisia hienoja QuantumGIS (link) :llä tehtyjä paikkatietovisuja, joista kuvakaappaus alla.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-03-13-hsy-paikkatietoseminaari.fi_files/qgis.png&#34; alt=&#34;qgis&#34;&gt;&lt;/p&gt;
&lt;p&gt;Esa Mäkinen kertoi hienojen videopätkien säestämänä Hesarin tekemistä datajournalismin jutuista. Esa myös esitti paikkatiedon avaajille toiveita, joista erityisesti toive aluejakojen yhtenäistämistä tiedon tuottajien välillä on erittäin relevantti. Seuraavaksi Outi Hermans loi katsauksen paikkatiedon käytön kehittämiseen Helsingin kaupungilla vuosina 2011-2014. Tuona aikana kehitettiin mm. &lt;a href=&#34;http://hri.fi/&#34;&gt;Helsinki Region Infosharen&lt;/a&gt; datakatalogia, joka onkin yksi Suomen parhaista avoimen datan varastoista.&lt;/p&gt;
&lt;p&gt;Ari Purhonen kertasi tiedon jalostusketjun jossa datasta jalostetaan informaatiota, tietämystä ja lopulta mahdollisesti jopa viisautta. Hän näytti myös esimerkkejä miten Espoon kaupungilla käytetään 3D-visualisointeja kaupungin kehitystyössä ja osallistamisessa. Mielenkiintoista oli myös &lt;a href=&#34;http://gispo.fi/Gispo&#34;&gt;Pekka Sarkolan&lt;/a&gt; tekemä pilottianalyysi liito-oraville sopivien tienylityspaikkojen datalähtöisestä tunnistamisesta (kuvakaappaus alla).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-03-13-hsy-paikkatietoseminaari.fi_files/orava.png&#34; alt=&#34;orava&#34;&gt;&lt;/p&gt;
&lt;p&gt;3D-visualisoinneista pistivät paremmaksi Pekka Virkamäki ja Petri Kokko, jotka esittelivät Vantaan asuntomessuilla pilotoitavaa 5D mallia. Pelimaailmasta napatun 3D-moottorin avulla arkkitehtien suunnitemiin pystyi tutustumaan tarkasti ja lisäksi seuraamaan sunnittelu- ja rakennustöiden edistymistä. Hyvä esimerkki teknologian luomista mahdollisuuksista!&lt;/p&gt;
&lt;p&gt;Jari Kähkölä Staralta kertoi &lt;a href=&#34;http://www.auratkartalla.com/&#34;&gt;Aurat Kartalla&lt;/a&gt; -visualisoinnista tuttuihin työkoneisiin liittyvistä kehityssuunnitelmista. Faris Alsuhail kertoi tekemästään kouluterveyskyselyaineiston tutkimuksesta, jossa vertailtiin alueellisia eroja koululaisten hyvinvoinnin välillä. Koulujen yksilöimisen välttämiseksi tutkimus jouduttiin tekemään karkealla suuraluetasolla, jolloin eroja alueiden välillä oli todella vähän verrattuna esimerkiksi sukupuolten välisiin eroihin (kuvakaappaus alla). Toivottavasti tulevaisuudessa löytyy keinoja näin tärkeän aineiston tarkempaan tutkimiseen!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2015-03-13-hsy-paikkatietoseminaari.fi_files/terveys.png&#34; alt=&#34;terveys&#34;&gt;&lt;/p&gt;
&lt;p&gt;Seminaari oli erittäin mielenkiintoinen ja hyvin järjestetty tapahtuma, kiitos järjestäjille, puhujille ja yleisölle! Toivottavasti ensi vuonna nähdään vielä enemmän mielenkiintoisia avoimen paikkatiedon sovelluksia.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
</description> 
  </item>
  
<item>
  <title>Kansanedustajien Tahdon-kantojen ja iän korrelaatio</title>
  <link>http://ropengov.org/fi/2014/11/kansanedustajat-tahdon-ika/</link>
  <pubDate>Sat, 22 Nov 2014 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2014/11/kansanedustajat-tahdon-ika/</guid>
  <description>&lt;p&gt;Tasa-arvoinen avioliittolaki käsitellään eduskunnassa 28.11.2014. Sivistysvaliokunta asettui niukasti vastustamaan uudistusta. Mielenkiintoiseksi asian tekee sen, että vastustajien ja kannattajien välillä menee selkeä ikäraja, kuten ao. HS:n uutisgrafiikasta nähdään (&lt;a href=&#34;http://www.hs.fi/politiikka/a1305900001070&#34;&gt;HS 21.11.2014&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2014-11-22-kansanedustajat-tahdon-ika.fi_files/HS.png&#34; alt=&#34;Kuvaaja&#34;&gt;&lt;/p&gt;
&lt;p&gt;Helsingin sanomat tutki myös kansanedustajien kantoja perustuen “useista eri lähteistä ja haastatteluista saatuihin tietoihin kansanedustajien kannoista, ja muutamassa tapauksessa kansanedustajien omiin ilmoituksiin” (&lt;a href=&#34;http://www.hs.fi/politiikka/a1305900001070&#34;&gt;HS 21.11.2014&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Onko näiden kansanedustajien kantojen ja heidän ikänsä välillä yhtä vahva korrelaatio kuin sivistysvaliokunnassa?&lt;/p&gt;
&lt;p&gt;Tarvittavat tiedot saa HS:n artikkelista ja eduskunnan sivuilta ja niistä saa kätevästi plotattua jakaumia ja histogrammeja R:n ggplot2-kirjastolla.  Alla on kuva viiden vuoden bineihin jaetuista histogrammeista.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2014-11-22-kansanedustajat-tahdon-ika.fi_files/tahdon_ika_hist.png&#34; alt=&#34;Kuvaaja&#34;&gt;&lt;/p&gt;
&lt;p&gt;Alla vielä toinen kuva jossa on estimoitu kunkin mielipiteen osuus kaikista iän mukaan.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2014-11-22-kansanedustajat-tahdon-ika.fi_files/tahdon_ika_density.png&#34; alt=&#34;Kuvaaja&#34;&gt;&lt;/p&gt;
&lt;p&gt;Vaikka ero kannassa iän mukaan ei olekaan enää yhtä selvä kuin sivistysvaliokunnassa, näyttää siltä, että vanhemmat todennäköisemmin äänestävät ei, nuoremmat jaa ja epävarmat ovat iältään siltä väliltä. Huomattavaa on, että vanhin kansanedustaja Jörn Donner puoltaa ehdotusta, kun taas nuorin edustaja Miko Niikko vastustaa sitä, mikä näkyy myös kuvaajissa selvästi.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://louhos.github.io/static/data/Tahdonmod.csv&#34;&gt;Lataa data csv:nä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Iltasanomat teetti aiheesta kyselyn kansanedustajille, tätä olisi mielenkiintoista verrata HS:n arvioon (&lt;a href=&#34;http://www.iltasanomat.fi/kotimaa/art-1288780101649.html&#34;&gt;IS 24.11.2014&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&#34;tarkempi-kuvaus-työprosessista&#34;&gt;Tarkempi kuvaus työprosessista&lt;/h3&gt;
&lt;p&gt;Kansanedustajien kannat sai suoraan copy-pasteamalla HS:n artikkelista. Sen sijaan heidän syntymävuotensa vaati enemmän työtä, koska mihinkään ei ole koottu kaikkien tämänhetkisten kansanedustajien tarkkoja syntymävuosia. Helposti on saatavissa &lt;a href=&#34;http://www.eduskunta.fi/triphome/bin/tixhaku.sh?lyh=hex8230?lomake=tix5050&#34;&gt;syntymäaika vuosikymmenittäin&lt;/a&gt;, joka saattaisi riittää, mutta päätin kuitenkin hakea jokaisen kansanedustajan syntymävuoden erikseen eduskunnan &lt;a href=&#34;http://www.eduskunta.fi/triphome/bin/hex3000.sh?haku=suppea&amp;amp;kanta=hetekau&amp;amp;kieli=su&amp;amp;paluuhaku=%2Fthwfakta%2Fhetekau%2Fhex%2Fhex3000.shtml&amp;amp;LYH=LYHEDU&amp;amp;ASC=&amp;amp;SUKUNIMI=&amp;amp;ETUNIMI=&amp;amp;KOTIKUNTA=&amp;amp;VAALIPIIRI=&amp;amp;EKRJ_KOODI=&amp;amp;SUKUPUOLI=&amp;amp;EDUSKUNTAKIELI=&#34;&gt;kansanedustajalistauksesta&lt;/a&gt;, jossa on linkki kunkin kansanedustajan tietosivulle, josta saa kansanedustajan syntymäajan.&lt;/p&gt;
&lt;p&gt;Koska vanhat konstit ovat monesti parempia kuin pussillinen uusia, päätin tietojen haun lynxillä ja käsittelyn pythonilla, joka subprocess-kirjastoa käyttäen kutsuu lynxiä. Käsittelyn jälkeen minulla oli csv-tiedosto, jossa on kunkin kansanedustajan nimi, syntymävuosi ja oletettu kanta tasa-arvoiseen avioliittolakiin. Ääkkösten kanssa joutui vähän kikkailemaan, koska sivuilta suoraan hakiessa ja toisaalta HS:n artikkelista copy-pastetessa ääkköset joutuivat eri formaattiin. En kuitenkaan tarvinnut kansanedustajien nimiä sinänsä, joten hoidin asian yksinkertaisella replace-rimpsulla.&lt;/p&gt;
&lt;p&gt;Plottausvaihtoehtojen tarkasteluun käytin kattavaa &lt;a href=&#34;http://blog.lib.umn.edu/jeli0026/soils/2014/01/making-kick-ass-histograms-and-density-plots-with-ggplot2.html&#34;&gt;Making histograms and density plots with ggplot2&lt;/a&gt; -blogikirjoitusta.&lt;/p&gt;
&lt;p&gt;Kirjoittaja Jaakko Särelä on Reaktor Innovations Oy:n Senior Data Scientist ja harrastaa vapaa-aikanaan yhteiskunnallista vaikuttamista ja kaupunkiaktivismia.&lt;/p&gt;
&lt;p&gt;Päivitys 24.11.2014: Vaihdettu paremmat kuvat ja data csv:nä. Lisätty linkki Iltasanomien uutiseen aiheesta.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
</description> 
  </item>
  
<item>
  <title>gisfin - Avoimen suomalaisen paikkatiedon työkalupakki R-kielelle</title>
  <link>http://ropengov.org/fi/2014/08/gisfin-kirjasto/</link>
  <pubDate>Sun, 24 Aug 2014 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2014/08/gisfin-kirjasto/</guid>
  <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;PÄIVITYS 2020-11-02: gisfin-paketin kehitystyö on lopetettu ja kehitystyö on siirtynyt &lt;a href=&#34;https://github.com/rOpenGov/geofi&#34;&gt;geofi-paketin&lt;/a&gt; pariin. Tämä alun perin Louhos-blogissa julkaistu kirjoitus on arkistoitu rOpenGov-blogiin esimerkkinä aiempien vuosien kehitystyöstä. Alla esitetyt esimerkit eivät todennäköisesti enää toimi geofi-paketin uusilla versioilla.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://fi.wikipedia.org/wiki/Paikkatieto&#34;&gt;Paikkatiedon&lt;/a&gt; käsittely on keskeinen osa avoimen datan analysointia ja visualisointia. Nykyisellään paikkatietoaineistot ovat hajallaan eri lähteissä, tiedostomuodoissa ja koordinaattijärjestelmissä, joten niiden hyödyntäminen vaatii huomattavaa erityisosaamista. Iso osa paikkatietoaineistojen käsittelyyn liittyvistä toimenpiteistä on kuitenkin automatisoitavissa. Tästä syystä olemme kehittäneet suomalaisen paikkatiedon käsittelyyn tarkoitetun R-paketin: &lt;a href=&#34;https://github.com/rOpenGov/gisfin&#34;&gt;&lt;code&gt;gisfin&lt;/code&gt;&lt;/a&gt;. &lt;a href=&#34;http://datademo.fi/&#34;&gt;Datademo-rahoituksen&lt;/a&gt; turvin olemme saaneet &lt;code&gt;gisfin&lt;/code&gt;-paketin kehityksen vauhdikkaaseen alkuun.&lt;/p&gt;
&lt;p&gt;Paketin kehitysversio löytyy &lt;a href=&#34;https://github.com/rOpenGov/gisfin&#34;&gt;githubista&lt;/a&gt; ja vaikka kehitettävää on vielä paljon, voi pakettia jo hyödyntää monenlaisiin tehtäviin. Datalähteet, joita paketti hyödyntää, sekä lyhyet käyttöä kuvaavat esimerkit löytyvät paketin &lt;a href=&#34;https://github.com/rOpenGov/helsinki/blob/master/vignettes/gisfin_tutorial.md&#34;&gt;tutoriaalista&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tärkeimmät tällä hetkellä mukanava olevat lähteet ovat&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://ptp.hel.fi/avoindata/&#34;&gt;Helsingin kaupungin Kiinteistöviraston aluejakokartat (HKK)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.hsy.fi/seututieto/kaupunki/paikkatiedot/Sivut/Avoindata.aspx&#34;&gt;Helsingin seudun ympäristöpalvelun paikkatietoaineistot (HSY)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.maanmittauslaitos.fi/avoindata&#34;&gt;Maanmittauslaitoksen avointa dataa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.stat.fi/tup/rajapintapalvelut/index_en.html&#34;&gt;Tilastokeskuksen paikkatietoaineistoja&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Seuraavaksi aiomme laajentaa yksittäisistä kaupungeista saatavilla olevan datan määrä sisällyttämällä pakettiin &lt;a href=&#34;http://paikkatietokeskus.lounaispaikka.fi/fi/aineistot/&#34;&gt;Lounaispaikan&lt;/a&gt; Turku-aineistoja. &lt;a href=&#34;http://louhos.github.io/contact.html&#34;&gt;Ota yhteyttä&lt;/a&gt; jos haluat ehdottaa uusia datalähteitä!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gisfin&lt;/code&gt;-paketti jatkaa suomalaisen avoimen datan R-ekosysteemin laajenemista. Keväällä &lt;a href=&#34;http://louhos.github.io/news/2014/06/11/helsinki-kirjasto/&#34;&gt;toteutimme&lt;/a&gt; Datademon edellisen kierroksen rahoituksen turvin pääkaupunkiseudun avoimeen dataan keskittyneen &lt;a href=&#34;https://github.com/rOpenGov/helsinki&#34;&gt;&lt;code&gt;helsinki&lt;/code&gt;-paketin&lt;/a&gt;. Omalta osaltamme Datademo on tarjonnyt sopivia resursseja kehitystyön ylläpitämiseen ja kokemuksemme molemmista kierroksista ovat olleet erittäin positiivisia.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gisfin&lt;/code&gt; on edelleen aktiivisen kehityksen alla ja tulevaisuudessa lisäämme &lt;a href=&#34;https://github.com/rOpenGov/gisfin/blob/master/vignettes/todo-datasets.md&#34;&gt;uusia datalähteitä&lt;/a&gt; ja kehitämme käyttöesimerkkejä. Paketin kehitykseen liittyi loppumetreillä mukaan myös Jussi Jousimo Helsingin yliopistolta, joka toi mukaan Tilastokeskuksen paikkatietoaineistoja. Lisäksi meillä on Jussin johdolla työn alla &lt;a href=&#34;https://github.com/rOpenGov/fmi&#34;&gt;&lt;code&gt;fmi&lt;/code&gt;-paketti&lt;/a&gt; Ilmatieteen laitoksen &lt;a href=&#34;https://ilmatieteenlaitos.fi/avoin-data&#34;&gt;avointen datojen&lt;/a&gt; käsittelyyn sekä yleisesti paikkatiedon verkkojakeluun tarkoitettua &lt;a href=&#34;https://en.wikipedia.org/wiki/Web_Feature_Service&#34;&gt;WFS&lt;/a&gt;-rajapintamäärittelyä ymmärtävä &lt;a href=&#34;https://github.com/rOpenGov/rwfs&#34;&gt;&lt;code&gt;rwfs&lt;/code&gt;-paketti&lt;/a&gt;. Suomalainen avoimen datan R-ekosysteemi jatkaa siis laajenemistaan myös tulevaisuudessa!&lt;/p&gt;
&lt;h2 id=&#34;esimerkkejä&#34;&gt;Esimerkkejä&lt;/h2&gt;
&lt;h3 id=&#34;suomen-kunnat-kartalle&#34;&gt;Suomen kunnat kartalle&lt;/h3&gt;
&lt;p&gt;Kuntarajat ovat tarpeellisia erilaisissa vaikkappa vaaleihin tai tilastotietoihin liittyvissä visualisoinneissa. Toisaalta kuntarajat muuttuvat lähes vuosittain. Ajantasainen kuntaraja-aineisto on saatavissa Maanmittauslaitokslta, mutta verrattain hankalassa GML-formaatissa. Alla oleva esimerkki näyttää, kuinka &lt;code&gt;list_mml_datasets&lt;/code&gt;-funktiota voidaan käyttää listaamaan saatavilla olevat MML:n avoimet aineistot. Tämä jälkeen kuntaraja-aineisto (hallintoalueet) haetaan &lt;code&gt;get_mml&lt;/code&gt;  -funktiolla.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;library&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gisfin&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;list_mml_datasets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## $`2012`&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## character(0)&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## $`Maastotietokanta-tiesto1`&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [1] &amp;#34;N61_v&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## $`Maastotietokanta-tiesto2`&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [1] &amp;#34;N62_p&amp;#34; &amp;#34;N62_s&amp;#34; &amp;#34;N62_t&amp;#34; &amp;#34;N62_v&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## $`Yleiskartta-1000`&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [1] &amp;#34;AmpumaRaja&amp;#34;             &amp;#34;HallintoAlue&amp;#34;          &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [3] &amp;#34;HallintoAlue_DataFrame&amp;#34; &amp;#34;HallintoalueRaja&amp;#34;      &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [5] &amp;#34;KaasuJohto&amp;#34;             &amp;#34;KarttanimiPiste500&amp;#34;    &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [7] &amp;#34;KarttanimiPiste1000&amp;#34;    &amp;#34;KorkeusAlue&amp;#34;           &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [9] &amp;#34;KorkeusViiva500&amp;#34;        &amp;#34;KorkeusViiva1000&amp;#34;      &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [11] &amp;#34;LentokenttaPiste&amp;#34;       &amp;#34;LiikenneAlue&amp;#34;          &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [13] &amp;#34;MaaAlue&amp;#34;                &amp;#34;Maasto1Reuna&amp;#34;          &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [15] &amp;#34;Maasto2Alue&amp;#34;            &amp;#34;MetsaRaja&amp;#34;             &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [17] &amp;#34;PeltoAlue&amp;#34;              &amp;#34;RautatieViiva&amp;#34;         &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [19] &amp;#34;SahkoLinja&amp;#34;             &amp;#34;SuojaAlue&amp;#34;             &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [21] &amp;#34;SuojametsaRaja&amp;#34;         &amp;#34;SuojeluAlue&amp;#34;           &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [23] &amp;#34;TaajamaAlue&amp;#34;            &amp;#34;TaajamaPiste&amp;#34;          &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [25] &amp;#34;TieViiva&amp;#34;               &amp;#34;VesiAlue&amp;#34;              &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [27] &amp;#34;VesiViiva&amp;#34;             &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## $`Yleiskartta-4500`&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [1] &amp;#34;HallintoAlue&amp;#34;        &amp;#34;HallintoalueRaja&amp;#34;    &amp;#34;KarttanimiPiste2000&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [4] &amp;#34;KarttanimiPiste4500&amp;#34; &amp;#34;KarttanimiPiste8000&amp;#34; &amp;#34;KorkeusAlue&amp;#34;        &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##  [7] &amp;#34;KorkeusViiva&amp;#34;        &amp;#34;Maasto1Reuna&amp;#34;        &amp;#34;RautatieViiva&amp;#34;      &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [10] &amp;#34;TaajamaPiste2000&amp;#34;    &amp;#34;TaajamaPiste4500&amp;#34;    &amp;#34;TaajamaPiste8000&amp;#34;   &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [13] &amp;#34;TieViiva2000&amp;#34;        &amp;#34;TieViiva4500&amp;#34;        &amp;#34;TieViiva8000&amp;#34;       &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [16] &amp;#34;VesiAlue&amp;#34;            &amp;#34;VesiViiva2000&amp;#34;       &amp;#34;VesiViiva4500&amp;#34;      &lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## [19] &amp;#34;VesiViiva8000&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Haetaan hallinto-alue aineisto&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;sp.mml&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;get_mml&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;map.id&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Yleiskartta-4500&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;data.id&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;HallintoAlue&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Luodaan sopiva temaattinen karttaväritys aineistolle&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;sp.mml&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;COL&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;factor&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;generate_map_colours&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.mml&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Piirretään kartta-aineisto käyttäen kuntia&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;spplot&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.mml&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;zcol&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;COL&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;col.regions&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rainbow&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;length&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;levels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.mml&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;COL&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;colorkey&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;FALSE&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2014-08-24-gisfin-kirjasto.fi_files/MML_kunnat-1.png&#34; alt=&#34;center&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;helsingin-äänestysalueet&#34;&gt;Helsingin äänestysalueet&lt;/h3&gt;
&lt;p&gt;Maamme suuremmat kaupungit kuten Helsinki, Turku ja Tampere tarjoavat monenlaisia avoimia aineistoja, joista osa on myös paikkaan sidottuja. Helsingissä paikkatietoaineistoja on saatavilla esimerkiksi &lt;a href=&#34;http://ptp.hel.fi/&#34;&gt;Helsingin kaupungin paikkatietopalveluiden&lt;/a&gt; kautta. Seuraava esimerkki noutaa kaupungin sivuilta pääkaupunkiseudun äänestysalueet ja visualisoi kartan kunnittain.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.aanestys&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;get_helsinki_aluejakokartat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;map.specifier&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aanestysalue&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;spplot&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.aanestys&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;zcol&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;KUNTA&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;col.regions&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rainbow&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;length&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;levels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.aanestys&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KUNTA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;colorkey&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;FALSE&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2014-08-24-gisfin-kirjasto.fi_files/hkk-aanestysalue-1.png&#34; alt=&#34;center&#34;&gt;&lt;/p&gt;
&lt;p&gt;Seuraava esimerkki puolestaan näyttää, kuinka Helsingin peruspiirijako voidaan piirtää Googlen karttapalvelusta saadun taustakartan päälle. Haetaan ensin aineisto:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;library&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ggmap&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Error in library(ggmap): there is no package called &amp;#39;ggmap&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;library&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ggplot2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;sp.piiri&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;get_helsinki_spatial&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;map.type&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;piirijako&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;map.specifier&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ALUEJAKO_PERUSPIIRI&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Googlen kartta-aineistot ovat maantieteellisessä,
&lt;a href=&#34;https://fi.wikipedia.org/wiki/WGS84&#34;&gt;WGS84&lt;/a&gt;-pohjaisessa
koordinaattijärjestelmässä. Peruspiirien piirtämistä varten selvitetään ensin
missä koordinaattijärjestelmässä peruspiiriaineisto on:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.piiri&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;proj4string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;## CRS arguments:
##  +init=epsg:3879 +proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=25500000
## +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;http://www.epsg-registry.org/&#34;&gt;EPSG&lt;/a&gt;-koodi 3879 paljastaa, että aineisto on
Helsingissä käytössä olevassa ETRS89/GK25FIN tasokoordinaattijärjestelmässä.
Aineiston saamiseksi yhteismitalliseksi Googlen taustakartan kanssa, on se ensin
projisoitava maantieteelliseen koordinaattijärjestelmään:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.piiri&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sp&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;spTransform&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.piiri&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;CRS&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;+proj=longlat +datum=WGS84&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lopuksi piirretään peruspiirit ja taustakartta käyttäen suosittua
&lt;code&gt;ggplot2&lt;/code&gt;-pakettia ja sen karttalaajennosta, &lt;code&gt;ggmap&lt;/code&gt;-pakettia:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Syötetään keskikoordinaatit peruspiirien maaantieteelliselle ulottuvuudelle&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;hel.center&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;apply&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;bbox&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.piiri&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mean&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Haetaan kartta Googlen karttapalvelusta&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;hel.map&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ggmap&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;get_map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;location&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;hel.center&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;source&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;google&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;zoom&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;scale&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;## Error in loadNamespace(name): there is no package called &#39;ggmap&#39;
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Muokataan paikkatietoaineisto ggplot2:lle sopivaan muotoon ja piirretään&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# aineistot&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;df.piiri&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sp2df&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sp.piiri&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;region&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;NIMI&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;ggmap&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;hel.map&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;geom_polygon&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;df.piiri&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;aes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;long&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;fill&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;NIMI&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;alpha&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0.5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;theme&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;legend.position&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;## Error in eval(expr, envir, enclos): could not find function &amp;quot;ggmap&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;!-- raw HTML omitted --&gt;
</description> 
  </item>
  
<item>
  <title>STAN ja Kilpisjärven kesät</title>
  <link>http://ropengov.org/fi/2014/01/stan-kilpisjarvi/</link>
  <pubDate>Wed, 29 Jan 2014 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2014/01/stan-kilpisjarvi/</guid>
  <description>&lt;p&gt;Johtopäätöksiä tai edes käyttökelpoista visualisaatiota ei useinkaan pysty tekemään datasta suoraan, vaan tarvitaan mallintamista. Mallintaminen erottaa kiinnostavan ja ei-kiinnostavan variaation, ja auttaa johtopäätösten luotettavuuden arvioinnissa.&lt;/p&gt;
&lt;p&gt;Pienehköissä projekteissa mallintaminen perustuu valmiisiin mallikohtaisiin ohjelmistopaketteihin. Esim. jos työskennellään &lt;a href=&#34;http://www.r-project.org/&#34;&gt;R&lt;/a&gt;:ssä, regressiomalli syntyy &lt;a href=&#34;http://stat.ethz.ch/R-manual/R-patched/library/stats/html/lm.html&#34;&gt;lm()&lt;/a&gt;-funktiolla. Jos ennustettavassa on patologisen oloisia poikkeamia, voidaan lm():n sijaan käyttää &lt;a href=&#34;http://cran.r-project.org/web/views/Robust.html&#34;&gt;robustia&lt;/a&gt; regressiota. Epälineaaristen vaikutusten huomiointi onnistuu parhaiten &lt;a href=&#34;http://cran.r-project.org/web/packages/mgcv/index.html&#34;&gt;mgcv&lt;/a&gt;-paketin gam()-funktiolla. Jos selittäjissä on kovin moniarvoisia nominaalimuuttujia ja data on harva ja iso, turvaudutaan &lt;a href=&#34;http://cran.r-project.org/web/packages/lme4/index.html&#34;&gt;lme4&lt;/a&gt;-pakettiin, jne. Pakettia valitessa pitää päättää mitkä datan piirteet unohtaa, koska mikään paketti ei ole tarpeeksi joustava.&lt;/p&gt;
&lt;h3 id=&#34;rakenteinen-data&#34;&gt;Rakenteinen data&lt;/h3&gt;
&lt;p&gt;Nykyään puhutaan rakenteettomasta datasta (unstructured data) ja tarkoitetaan usein datan esitysmuotoa: se ei ole relaatio-tietokantaan sopivina taulukoina. Tilastollisesti puhutaan rakenteellisesta datasta silloin kun ei ole osoitettavissa mittausyksikköä, riippumatonta ”näytettä”. Esim. spatiaalinen tai aikasarjadata on luonnostaan rakenteellista, koska vierekkäiset näytteet ovat yleensä samantyyppisiä. Sama pätee hierarkiaan: jos maitten sisällä on läänejä, läänien sisällä kuntia, ja kuntien sisällä asukkaita, ja näistä on vielä toistomittauksia, ei datasta ole osoitettavissa ”näytteen” tasoa, josta olisi riippumattomia toistoja. Hieman hämäävästi, esitysmuodoltaan ”rakenteeton” data on usein tilastollisesti rakenteellista, koska rakenne on oikeasti niin monimutkainen että sen esittämisestä relaatiokannan keinoin on luovutettu.&lt;/p&gt;
&lt;p&gt;Riippuvuuksia sisältävän datan kanssa valmispakettien ongelmat korostuvat. Riippuvuusrakenteet ovat aina datakohtaisia, ja niiden esittämiseen tarvitaan joustava mallinnuskieli.&lt;/p&gt;
&lt;h3 id=&#34;tee-se-itse&#34;&gt;Tee se itse?&lt;/h3&gt;
&lt;p&gt;Vaihtoehto valmiiden mallikohtaisten pakettien käytölle on koodata mallin estimointi itse. Tutkimustyössä uuden mallin estimoinnin koodaaminen itse on perusteltua, käytännön mallinnusprojekteissa vain jos mallinnuksen hyöty on huomattava. Etenkin avoimen datan projekteissa budjetti on usein pieni.&lt;/p&gt;
&lt;p&gt;Itse koodaamisen ja mallispesifien pakettien välissä on ollut 1990-luvun alusta asti &lt;a href=&#34;http://www.mrc-bsu.cam.ac.uk/bugs/&#34;&gt;BUGS&lt;/a&gt;-perheen työkaluja (WinBUGS, OpenBUGS, &lt;a href=&#34;http://mcmc-jags.sourceforge.net/&#34;&gt;JAGS&lt;/a&gt;), joilla voi helposti koodata melkein minkä tahansa mallin. Näiden käyttö on rajoittunut pienehköihin datoihin, koska estimointi tulkattavalla Gibbs-sämplerikoodilla on hidasta.&lt;/p&gt;
&lt;h3 id=&#34;todennäköisyysohjelmointi&#34;&gt;Todennäköisyysohjelmointi&lt;/h3&gt;
&lt;p&gt;Tilanne on nyt muuttumassa. &lt;a href=&#34;http://mc-stan.org/&#34;&gt;Stan&lt;/a&gt;-ohjelmistopaketti tukee hamiltonilaiseen mekaniikkaan perustuvaa &lt;a href=&#34;http://arxiv.org/pdf/1206.1901.pdf&#34;&gt;HMC&lt;/a&gt;:tä, joka on yleensä Gibbs-sämpleriä merkittävästi nopeampi. Stan tuottaa mallinkuvauksesta C++-koodia, joka käännetään natiivikirjastoksi. Matriisioperaatioihin Stan käyttää tehokasta &lt;a href=&#34;http://eigen.tuxfamily.org/index.php?title=Main_Page&#34;&gt;Eigen&lt;/a&gt;-kirjastoa. HMC tarvitsee likelihood-funktion ensimmäisen asteen derivaatat: Stan laskee nämä analyyttisesti mallikoodin perusteella. Stan osaa myös laskea perinteisiä MAP/ML-ratkaisuja BFGS-optimoinnilla. Myöhemmin Staniin on tulossa analyyttinen toisen asteen derivointi (&lt;a href=&#34;http://www.dcs.gla.ac.uk/inference/rmhmc/&#34;&gt;RHMC&lt;/a&gt;, &lt;a href=&#34;http://en.wikipedia.org/wiki/Laplace&#39;s_method&#34;&gt;Laplace-approksimaatiot&lt;/a&gt;) ja luultavasti myös approksimatiivisia estimointimenetelmiä kuten EP (&lt;a href=&#34;http://research.microsoft.com/en-us/um/people/minka/papers/ep/minka-ep-tut-slides.pdf&#34;&gt;expectation propagation&lt;/a&gt;) ja &lt;a href=&#34;http://www.cs.uoi.gr/~arly/papers/SPM08.pdf&#34;&gt;variationaaliset posteriori-approksimaatiot&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Stan onkin selvä kehitysaskel kohti uutta ohjelmistoteknistä suuntausta, todennäköisyysohjelmointia (&lt;a href=&#34;http://radar.oreilly.com/2013/04/probabilistic-programming.html&#34;&gt;probabilistic programming&lt;/a&gt;). Idea on kuvata vain dataa tuottava mekanismi, generatiivinen malli, ja mahdollisesti käytettävien approksimaatioiden taso ja muoto. Kääntäjä huolehtii estimointifunktionaalisuuden tuottamisesta. Näin pystytään käyttämään entistä merkittävästi joustavampia malleja.&lt;/p&gt;
&lt;p&gt;Stanin ohjelmointi vaatii tietenkin kokemusta generatiivisista malleista, ja myös on ymmärrettävä käytettävän estimointiprosessin ominaisuudet, jotta monimutkaisemmasta mallista saa tehokkaan. Esimerkiksi parametriavaruuden tai oikeammin posteriorin geometrian olisi syytä olla sämplerille helppo, ilman ”&lt;a href=&#34;http://www.db.toronto.edu/~radford/fbm.2004-11-10.doc/Ex-dist-f.html&#34;&gt;todennäköisyyskuiluja&lt;/a&gt;”. Joskus myöhemmin &lt;a href=&#34;http://arxiv.org/abs/1212.4693&#34;&gt;RHMC&lt;/a&gt; tai parempi kääntäjä voi helpottaa tilannetta geometrian osalta, mutta toisaalta isomman datan kanssa on aina tehtävä oikaisuja, ja niiden valinta vaatii ammattitaitoa. Tulevaisuuden kääntäjät voivat ymmärtää ja optimoida parametriavaruuden geometriaa.&lt;/p&gt;
&lt;p&gt;Stanin ja vastaavien todennäköisyysohjelmoinnin kielien päälle kehittyykin luultaavasti sovelluskohtaisi erityisratkaisuja. Tästä on jo esimerkkikin: &lt;a href=&#34;https://github.com/rmcelreath/glmer2stan&#34;&gt;glmer2stan&lt;/a&gt; sallii lme4:n mallinkuvauksien (formula) käytön Stanin kanssa.&lt;/p&gt;
&lt;p&gt;Muista todennäköisyysohjelmoinnin projekteja ovat mm. &lt;a href=&#34;https://github.com/pymc-devs/pymc/tree/pymc3&#34;&gt;PyMC&lt;/a&gt;, &lt;a href=&#34;http://mcmc-jags.sourceforge.net/&#34;&gt;JAGS&lt;/a&gt;, &lt;a href=&#34;http://research.microsoft.com/en-us/um/cambridge/projects/infernet/&#34;&gt;Infer.NET&lt;/a&gt; ja &lt;a href=&#34;http://probcomp.csail.mit.edu/venture/&#34;&gt;Venture&lt;/a&gt;. &lt;a href=&#34;http://en.wikipedia.org/wiki/DARPA&#34;&gt;DARPA&lt;/a&gt; rahoittaa todennäköisyysohjelmoinnin tutkimusta &lt;a href=&#34;http://ppaml.galois.com/wiki/&#34;&gt;PPAML&lt;/a&gt;-ohjelmassaan.&lt;/p&gt;
&lt;h3 id=&#34;kilpisjärven-kesät&#34;&gt;Kilpisjärven kesät&lt;/h3&gt;
&lt;p&gt;(Alla olevan intron koodit ovat &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi&#34;&gt;Githubissa&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://eca.knmi.nl/dailydata/datadictionary.php&#34;&gt;European Climate Assessment&lt;/a&gt; -sivuilta on ladattavissa lämpötilamittausten aikasarjoja yksittäisiltä mittausasemilta. Sieltä voi ladata myös Kilpisjärven lämpötilasarjan päivätasolla. Jos haluamme tietää näkyykö kesien lämpeneminen jo Kilpisjärven tiedoissa, päiväkohtaiset havainnot kannattaa ensin aggregoida vuosittaisiksi kesäkuukausien keskilämpötiloiksi: (Oma &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kilpisjarvi-summer-temp.txt&#34;&gt;aikasarjani&lt;/a&gt; on peräisin suoraan &lt;a href=&#34;http://ilmatieteenlaitos.fi/&#34;&gt;Ilmatieteen laitokselta&lt;/a&gt;, minkä ei pitäisi muuttaa tuloksia, ainakaan oleellisesti.)&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/kilpisjarvi-raw.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/kilpisjarvi-raw.png&#34; width=&#34;800&#34;
alt=&#34;Nouseva regressiosuora pistepilvessä, joka kuvaa kesäkuukausien lämpötilojen muutosta vuodesta 1900-luvun puolivälistä eteenpäin.&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Kilpisjärven kesäkuukausien keskilämpötiloja viime vuosikymmeniltä.&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Sarjaan on helppo sovittaa &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj.R&#34;&gt;trendi R:ssä&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;m&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lm&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;temp&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;year&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;d&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;summary&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;m&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;-1.96&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1.96&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sqrt&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;diag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;vcov&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;m&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;year&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;coef&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;m&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;year&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Trendi poikkeaa nollasta merkitsevyystasolla p=0.0115, ja trendin 95% luottamusväli on 0.05–0.36 astetta per vuosikymmen. Eli kyllä Kilpisjärven kesät näyttäisivät jo lämmenneen!&lt;/p&gt;
&lt;p&gt;Mieltä jää kalvamaan kuitenkin epäilys autokorrelaatiosta. Kylmät ja lämpimät vuodet tunnetusti esiintyvät ainakin globaaleissa aikasarjoissa peräkkäin, johtuen mm. suursäätilan keskimääräisestä pysyvyydestä jopa vuosien yli (&lt;a href=&#34;http://en.wikipedia.org/wiki/Arctic_oscillation&#34;&gt;AO/NAO&lt;/a&gt;), merten tilasta (&lt;a href=&#34;http://en.wikipedia.org/wiki/El_Ni%C3%B1o&#34;&gt;ENSO&lt;/a&gt;), &lt;a href=&#34;http://www.cotf.edu/ete/modules/volcanoes/vclimate.html&#34;&gt;tulivuorista&lt;/a&gt; ja hieman &lt;a href=&#34;http://en.wikipedia.org/wiki/Solar_variation&#34;&gt;auringon aktiivisuudestakin&lt;/a&gt;. Jos näin, peräkkäiset vuodet eivät ole riippumattomia, näytteiden efektiivinen määrä on pienempi kuin vuosien (62), ja p-arvo ja luottamusväli ovat ylioptimistisia. Myöskin sarjan alkupuolella on isoja poikkeamia keskimääräisestä. Ehkä ne rikkovat normaalijakaumaoletukset ja vaikuttavat p-arvoon?&lt;/p&gt;
&lt;p&gt;Eli näinkin yksinkertaisella datalla saadaan aikaan hankala tilanne, jossa ratkaisuksi pitää lähteä etsimään R:stä aikasarjapakettia, joka sallisi trendien estimoinnin ja mielellään robustin regression. Sellainen voi ollakin olemassa, mutta ei ole ihan helppo löytää.&lt;/p&gt;
&lt;h3 id=&#34;lineaarinen-regressio-stanilla&#34;&gt;Lineaarinen regressio Stanilla&lt;/h3&gt;
&lt;p&gt;Kokeilemme siis mallintamista &lt;a href=&#34;http://mc-stan.org/&#34;&gt;Stanilla&lt;/a&gt;. Aluksi lineaarinen regressio, eli sama malli jonka sovitimme yllä lm()-funktiolla. &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj-lm.stan&#34;&gt;Mallin kuvaus&lt;/a&gt; on alla. Huomaa että malliin ei ole yksinkertaisuuden vuoksi määritelty prioreita. Yleensä ne kannattaa määritellä.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;N&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y[N]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;parameters&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;baseline&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;trend&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigma&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;model&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;for &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;N&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y[t]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;normal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;baseline&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;trend&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigma&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;… ja R-koodi:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;library&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;rstan&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;sdat&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;list&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;N&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;nrow&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;d&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;d&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;temp&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;m.slm&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;stan_model&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;kj-lm.stan&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;fit&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sampling&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;m.slm&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sdat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;iter&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20000&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;trends&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;extract&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;fit&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;trend&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;[[1]]&lt;/span&gt;
&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sum&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;trends&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;length&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;trends&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;quantile&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;trends&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0.025&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1-0.025&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vähempikin määrä iteraatioita riittäisi, esim. 1000 näytettä per ketju antaa yhteensä 500–800 efektiivistä näytettä posteriorista ja vie aikaa n. 0.7 sekuntia. Mutta nyt haluamme tarkan p-arvon vertailua varten. p-arvo on 0.0125, eli melko lailla sama kuin R:n lm()-funktiolla saatu.&lt;/p&gt;
&lt;h3 id=&#34;robusti-regressio&#34;&gt;Robusti regressio&lt;/h3&gt;
&lt;p&gt;Mallin residuaali on helppo vaihtaa &lt;a href=&#34;http://en.wikipedia.org/wiki/Student&#39;s_t-distribution#Robust_parametric_modeling&#34;&gt;t-jakaumaksi&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;N&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y[N]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;parameters&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;baseline&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;trend&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigma&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;df&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;model&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;df&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;normal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;for &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;N&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y[t]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;student_t&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;df&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;+1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;baseline&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;trend&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigma&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;p-arvo (0.0092) ja trendin luottamusväli  (0.05–0.37) eivät juurikaan muuttuneet, mutta hieman sarjan isot alkupään poikkeamat ovat häirinneet trendin estimointia. Tähän viittaa myös virhejakauman vapausasteiden posteriori: vapausasteilla 1–10 jakaumasta tulee jo selvästi normaalijakaumaa &lt;a href=&#34;http://en.wikipedia.org/wiki/Student&#39;s_t-distribution#Probability_density_function&#34;&gt;pitkähäntäisempi&lt;/a&gt;.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/df-posterior.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/df-posterior.png&#34; width=&#34;800&#34;
alt=&#34;Virhejakauman vapausasteiden posteriorijakauma. Jakauma on positiivisesti vino (positive skew), mikä tarkoittaa että sen oikealla puolella oleva häntä on pidempi.&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Virhejakauman vapausasteiden posteriorijakauma.&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id=&#34;autokorrelaatiot&#34;&gt;Autokorrelaatiot&lt;/h3&gt;
&lt;p&gt;Unohdamme hetkeksi residuaalit, ja siirrymme &lt;a href=&#34;http://en.wikipedia.org/wiki/Autocorrelation&#34;&gt;autokorrelaatioiden&lt;/a&gt; ongelmaan. Lämpötilasarjassa voisi olla pitkän aikavälin syklisyyttä, mutta datassa ei silmämääräisesti näy kummempia kuoppia, ja sellaisten erottaminen trendistä on jo määritelmällisesti vaikeaa. Keskitymme siis lyhyen aikavälin (1–10 vuotta) korrelaatioihin.&lt;/p&gt;
&lt;p&gt;Yksi vaihtoehto olisi parametrisoida residuaaleille korrelaatiomatriisi. Helpompaa ja laskennallisesti tehokkaampaa on kuitenkin tehdä peräkkäisistä estimointivirheistä lineaarisesti riippuvia. Eli määrittelemme kertoimet &lt;em&gt;theta[lag], lag&lt;/em&gt;=1…10, joilla aiempi estimointivirhe kerrotaan ja otetaan huomioon kunkin vuoden kohdalla. Näiden päälle tuleva ’uusi’ estimointivirhe on sitten normaalijakautunutta riippumattomasti joka vuodelle. Mallia kutsutaan aikasarja-analyysissä &lt;a href=&#34;http://www.maths.qmul.ac.uk/~bb/TS_Chapter4_3&amp;amp;4.pdf&#34;&gt;MA-malliksi&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Stan-koodissa joka vuodelle lasketaan virhe, ensin ottaen koko estimointivirhe (havainto miinus trendi) ja vähentäen tästä vanhat, ikäänkuin muistetut virheet:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;N&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y[N]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; 
 &lt;span style=&#34;color:#000&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;D&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;//&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Maximum&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lag.&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;parameters&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;baseline&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;trend&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; 
 &lt;span style=&#34;color:#000&#34;&gt;real&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigma&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;vector&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lower&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;-1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;upper&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;[D]&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;theta&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;transformed&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;parameters&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;vector[N]&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;eta&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; 
 &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;vector[N]&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
   &lt;span style=&#34;color:#000&#34;&gt;for &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;N&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; 
   &lt;span style=&#34;color:#000&#34;&gt;eta[t]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;trend&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;baseline&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; 
   &lt;span style=&#34;color:#000&#34;&gt;for &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lag&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;D&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; 
        &lt;span style=&#34;color:#000&#34;&gt;if &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;t&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;eta[t]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;eta[t]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;theta[lag]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err[t&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;lag]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
   &lt;span style=&#34;color:#000&#34;&gt;err[t]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y[t]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;eta[t]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}}}&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;model&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;normal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;eta&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigma&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Koko mallikoodi on tiedostossa &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj-correlated.stan&#34;&gt;kj-correlated.stan&lt;/a&gt;, ja muistutuksena, käytetyt R-komennot yleisemminkin tiedostossa &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj.R&#34;&gt;kj.R&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nyt vastassa on ongelmia: 3000 MCMC-iteraatiota ei näytä riittävän virheiden (&lt;em&gt;err&lt;/em&gt;) ja &lt;em&gt;theta&lt;/em&gt;-parametrien kunnolliseen estimointiin. Sovitettu malliobjekti &lt;em&gt;fit&lt;/em&gt; kertoo samaa: kovin montaa riippumatonta näytettä ei ole saatu, ja neljästä eri ketjusta saadut theta-estimaatit poikkeavat liikaa toisistaan. Alla ruutukaappaus kommennon &lt;em&gt;plot(fit, pars=”theta”)&lt;/em&gt; jäljiltä. Viivat ovat 80% luottamusvälejä ja pisteet yksittäisten ketjujen mediaaneja:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/theta-badfit.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/theta-badfit.png&#34; width=&#34;800&#34;
alt=&#34;theta-badfit&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Theta-estimaattien tarkastelua&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id=&#34;aikasarjakerrointen-paimennusyrityksiä&#34;&gt;Aikasarjakerrointen paimennusyrityksiä&lt;/h3&gt;
&lt;p&gt;Ongelmana on ehkä trendin ja autokorrelaation keskinäinen epäidentifioituvuus. Myöskin loppupään theta-kertoimet ovat suuruusluokaltaan ja keskinäisiltä eroiltaan epärealistisia, eli priori theta-kertoimille on liian löysä.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj-correlated-pooled-theta.stan&#34;&gt;Malliin on helppo lisätä&lt;/a&gt;oletus theta-kerrointen mahdollisesta pienuudesta ja samankaltaisuudesta:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-r&#34; data-lang=&#34;r&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;theta&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;normal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;theta_sd&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;theta_sd&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;~&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;normal&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.5&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ko. priori sallii myös isot ja keskenään erisuuruiset kertoimet, jos data antaa niille tukea. Koko mallikoodi on tiedostossa kj-correlated-pooled-theta.stan. Huomaa että parametrin määrittelystä on poistettu rajoitus välille -1…1, koska se ei ole yhteensopiva normaalijakautuneen priorin kanssa. Sensijaan itse malliin on lisätty parametrille tanh()-muunnos, joka pitää ottaa huomioon mallia tulkittaessa.&lt;/p&gt;
&lt;p&gt;Näiden muutosten jälkeen useimmat ketjut satunnaisalustuksilla konvergoituvat samanlaiseen lopputulokseen.  Kun uskomme tämän olevan mallin oikea posteriori, voimme ajaa pitemmän ajon p-arvoa varten. Autokorrelaatiot, jos niitä on, tekevät tuloksista hieman epävarmempia koska efektiivinen näytteiden määrä pienenee. Tällä kertaa p-arvo on 0.016 ja 95% luottamusväli 10 vuoden trendille 0.04–0.37. Merkittävää muutosta ei siis autokorrelaatioista tai 11 parametrin lisäämisestä syntynyt. (Parametrien optimointi maximum likelihood -mielessä vastaisi alkuperäistä MA-mallia ilman theta-kerrointen prioria, eikä siis &lt;a href=&#34;http://bayesiancook.blogspot.fr/2014/02/parameter-estimation-optimizing-versus.html&#34;&gt;toimisi kovin hyvin&lt;/a&gt;.)&lt;/p&gt;
&lt;h3 id=&#34;kaikki-yhdessä&#34;&gt;Kaikki yhdessä&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj.stan&#34;&gt;Lisäämme malliin&lt;/a&gt; vielä lopuksi alkuperäisen mallin t-jakautuneet residuaalit. Pääpiirteiseen ajoon (3000 näytettä, 100–1000 efektiivistä näytettä) kuluu aikaa n. 3 sekuntia, ja pitkään ajoon (11000 efektiivistä näytettä trendille) tarkkaa p-arvoa varten 88 sekuntia. ”Lopullinen” p-arvo 0.013 on lähes identtinen alkuperäisen lm()-funktiolla saadun p-arvon kanssa (0.0115). Oliko vaivannäkö Stanin kanssa turhaa? Ei aivan, sillä  voimme olla rauhallisin mielin autokorrelaation ja sarjan alkupään suurten poikkeamien osalta. Ne ovat nyt mallissa mukana.&lt;/p&gt;
&lt;p&gt;P-arvon tuijottamisen jälkeen on hyvä pitää mielessä (vuosi)trendin posteriorijakauma:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/trend.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/trend.png&#34; width=&#34;800&#34;
alt=&#34;Vuositrendin posteriorijakauma&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Vuositrendin posteriorijakauma&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;P-arvolla on teoreettista mielenkiintoa malleja vertailtaessa ja pyhitettyjen rajojen (0.01, 0.05) alittaminen on tietenkin vakuuttavaa. Mutta johtopäätösten kannalta oleellista on, että trendi on luultavasti ollut luokkaa 0.1°–0.3° per vuosikymmen.&lt;/p&gt;
&lt;p&gt;Autokorrelaatioiden olemassaolo jää epäselväksi, mutta päätöstä niiden suhteen ei tarvitse tehdäkään: malli integroi eri mahdollisuuksien yli. &lt;em&gt;theta&lt;/em&gt;-kerrointen posteriorit eivät poikkea merkitsevästi nollasta. Toisaalta esim. ensimmäinen kerroin on luultavasti positiivinen:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/theta-posteriors.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/theta-posteriors.png&#34; width=&#34;800&#34;
alt=&#34;theta-posteriors&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Theta-kerrointen posteriorit&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 id=&#34;sovittuiko-data&#34;&gt;Sovittuiko data&lt;/h3&gt;
&lt;p&gt;Lopuksi vielä vilkaisemme mallin residuaaleita (residuaaliposteriorin keskiarvo, vrt. koodi tiedostossa &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj.R&#34;&gt;kj.R&lt;/a&gt;):&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/residuals.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2014-01-29-stan-kilpisjarvi.fi_files/residuals.png&#34; width=&#34;800&#34;
alt=&#34;Mallin residuaalit&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Mallin residuaalit&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Residuaaleissa ei näy merkillisyyksiä, joskin keskivaiheilla aikasarjaa näkyy aavistus notkahduksesta. Tiedostossa &lt;a href=&#34;https://github.com/euxoa/kilpisjarvi/blob/master/kj2.stan&#34;&gt;kj2.stan&lt;/a&gt; on vielä rikkaampi malli, jossa on ajan suhteen myös toisen asteen termi. Sen kerroin on positiivinen 80% todennäköisyyllä.&lt;/p&gt;
&lt;p&gt;Mallin ydinkoodi on hyvä, &lt;a href=&#34;https://groups.google.com/forum/#!topic/stan-users/qnvB4Bm2__k&#34;&gt;parempi&lt;/a&gt; kuin &lt;a href=&#34;http://mc-stan.org/manual.html&#34;&gt;Stanin manuaalin&lt;/a&gt; versiossa 2.1.0 oleva MA-mallin koodi. Mutta malliin voisi lisätä (epäinformatiiviset) priorit regressiokertoimille ja residuaaleille. Tällä kertaa prioreilla ei liene käytännön merkitystä, mutta joskus niiden puuttuminen voi johtaa estimointiongelmiin. Myöskään satunnaisinitialisaatio (init=”random”) ei toimi kaikille ketjuille. Ketjut voi alustaa myös deterministisesti (init=0), ja niin on pitemmille ketjuille tehtykin. Ne ovat silloin vähemmän satunnaisia ainakin alkupäästään, joten ketjuja ei voi luotettavasti verrata toisiinsa konvergenssin varmistamiseksi. Muitakin vaihtoehtoja on, esim. MAP-estimaatin voi etsiä optimizing()-komennolla ja käyttää sitä hieman perturboituna initialisointiin. MAP ei kuitenkaan hierarkian ylempien tasojen osalta toimi, koska optimoinnin kannalta theta-parametrit kannattaa vapauttaa (hyperpriorin puitteissa) täysin.&lt;/p&gt;
&lt;p&gt;Mallia voisi laajentaa ottamalla siihen mukaan esim.  useita vuodenaikoja, tai useampia mittausasemia. Näiden keskinäisten riippuvuuksien hallintaan voisi käyttää vaikkapa gaussisia prosesseja.&lt;/p&gt;
&lt;h3 id=&#34;huomioita&#34;&gt;Huomioita&lt;/h3&gt;
&lt;p&gt;Lineaarinen perusmalli sovittui Stanilla helposti, samoin kuin t-residuaalimalli, mutta autokorrelaatiomallin onnistunut estimointi vaati useiden erilaisten parametrisaatioiden kokeilua, ja lopulta samplerin parametrien konfiguraatiota (&lt;em&gt;stepsize_jitter=0.3&lt;/em&gt;, vrt. koodi). Näin lienee yleisemminkin. Stanin manuaalista löytyy valmiiksi koodattuna monta erilaista standardimallia. Mutta kun alkaa tehdä omia mallejaan, pitää varautua kokeiluihin ja iteraatioihin. Myös manuaalin vihjeet reparametrisaatiosta ja vektoroinnista on syytä ottaa vakavasti.&lt;/p&gt;
&lt;p&gt;Ajoajat ovat tällä mallilla kohtuullisia, mutta datakin on pieni. On vaikea antaa ylärajaa Stan-mallien datan koolle, koska estimoinnin nopeus riippuu niin paljon mallista. Käytännössä mallit luokkaa 10⁴–10⁶ datapisteelle ovat mahdollisia. Olen itse sovittanut malleja, joissa on satoja tuhansia datapisteitä ja yhtä paljon parametreja.&lt;/p&gt;
&lt;p&gt;(&lt;a href=&#34;https://twitter.com/euxoa&#34;&gt;Kirjoittaja&lt;/a&gt; on päätynyt &lt;a href=&#34;http://scholar.google.com/citations?user=Nd2g1MoAAAAJ&#34;&gt;akateemisten&lt;/a&gt; ja &lt;a href=&#34;http://www.linkedin.com/pub/janne-sinkkonen/4/84/669&#34;&gt;muiden&lt;/a&gt; kokeilujen jälkeen &lt;a href=&#34;http://reaktor.fi/&#34;&gt;Reaktorin&lt;/a&gt; &lt;a href=&#34;https://twitter.com/jeremyjarvis/status/428848527226437632/photo/1&#34;&gt;data science -tiimiin&lt;/a&gt;. Luonnoksia kommentoivat &lt;a href=&#34;https://twitter.com/ouzor&#34;&gt;ouzor&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/antagomir&#34;&gt;antagomir&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/JarkkoTikka&#34;&gt;Jarkko&lt;/a&gt; ja &lt;a href=&#34;https://twitter.com/jaakkosarela&#34;&gt;Jaakko&lt;/a&gt;. &lt;a href=&#34;http://saabriefing.com/&#34;&gt;Pauli&lt;/a&gt; antoi datat.)&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2014/01/29/stan-kj/&#34;&gt;https://louhos.wordpress.com/2014/01/29/stan-kj/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>rOpenGov: kansainvälinen R-ekosysteemi avoimelle datalle</title>
  <link>http://ropengov.org/fi/2013/12/ropengov-ekosysteemi/</link>
  <pubDate>Mon, 09 Dec 2013 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2013/12/ropengov-ekosysteemi/</guid>
  <description>&lt;p&gt;Suomalainen avoimen datan työkalupakki &lt;a href=&#34;http://louhos.github.com/sorvi&#34;&gt;sorvi&lt;/a&gt; tarjoaa automatisoituja haku- ja analyysirutiineja suomalaisille avoimen datan lähteille, kuten Tilastokeskuksen, Maanmittauslaitoksen, Helsingin seudun ympäristöpalveluiden, Terveyden ja hyvinvoinnin laitoksen ja muiden tahojen ylläpitämille tietovarannoille. Välineet tarjoavat uusia työvälineitä muun muassa yhteiskuntatieteilijöille, opiskelijoille, datajournalisteille, blogaajille ja järjestöille, jotka tahtovat hyödyntää yhteiskunnan uusia tietovarantoja työssään tehokkaasti ja läpinäkyvästi.&lt;/p&gt;
&lt;p&gt;Suomalaiselle sorville on viime aikoina ilmestynyt vastineita monissa maissa. Yhteistyön edistämiseksi olemme käynnistäneet kansainvälisen &lt;a href=&#34;http://ropengov.github.io&#34;&gt;rOpenGov&lt;/a&gt;-yhteisöprojektin, joka kokoaa yhteen R-ekosysteemiä laskennallisten yhteiskuntatieteiden työvälineeksi. Mukaan on jo liittynyt projekteja Suomen lisäksi Itävallasta, Puolasta, Ruotsista, Venäjältä, ja Yhdysvalloista. Uudet R-käyttäjät ovat tervetulleita talkoisiin!&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Alueellinen hyvinvointi – vuorovaikutteinen visualisointi Sotkanetin datasta</title>
  <link>http://ropengov.org/fi/2013/12/alueellinen-hyvinvointi/</link>
  <pubDate>Fri, 06 Dec 2013 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2013/12/alueellinen-hyvinvointi/</guid>
  <description>&lt;p&gt;Louhoksen ja &lt;a href=&#34;http://www.demoshelsinki.fi/&#34;&gt;Demos Helsingin&lt;/a&gt; yhteistyönä tehty &lt;a href=&#34;https://ouzor.shinyapps.io/sotkanet/&#34;&gt;vuorovaikutteinen visualisointi&lt;/a&gt; alueellisesta hyvinvoinnista sijoittui Apps4Finland 2013 -kilpailun Hahmota-sarjassa hienosti &lt;a href=&#34;http://www.apps4finland.fi/palkitut-tyot/&#34;&gt;kolmanneksi&lt;/a&gt;. Visualisointi mahdollistaa &lt;a href=&#34;http://uusi.sotkanet.fi/portal/page/portal/etusivu&#34;&gt;Sotkanetin&lt;/a&gt; hyvinvointi-indikaattoreiden havainnollisen tarkastelun ja mielenkiintoisten ilmiöiden löytämisen. Demos &lt;a href=&#34;http://www.demoshelsinki.fi/kasi-ylos-jos-yhteiskunta-ja-data-kiinnostavat/&#34;&gt;blogasi&lt;/a&gt; aiheesta aiemmin tällä viikolla, ja avaan tässä sitä lisää Louhoksen näkökulmasta.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2013-12-06-alueellinen-hyvinvointi.fi_files/apps4finland_2013-001.jpg&#34; alt=&#34;Apps4Finland_2013&#34;&gt;&lt;/p&gt;
&lt;p&gt;Louhoksen toiminta on toistaiseksi keskittynyt lähinnä avointen datasettien esikäsittelyyn ja hakurutiinien kehittämiseen &lt;a href=&#34;http://louhos.github.io/sorvi/&#34;&gt;sorvi&lt;/a&gt;-paketissa. Lisäksi olemme tehneet avatuista datoista yksinkertaisia visualisointeja ja bloganneet niistä. Tavoitteena on tehdä myös syvällisempiä analyysejä, mutta toistaiseksi niihin ei ole aika riittänyt päivätöiden ohella. Meillä ei myöskään ole kokemusta yhteiskuntatutkimuksesta, mikä vaikeuttaa mielenkiintoisten tutkimuskysymysten löytämistä.&lt;/p&gt;
&lt;p&gt;Vuoden 2013 keväällä tarjoutui mahdollisuus kokeilla yhteistyötä ajatushautomo Demos Helsingin tutkijoiden kanssa. Demos tekee monipuolista yhteiskunnallista tutkimusta, ja heidän käsittelemänsä aiheet kuten demokratia ja energiakysymykset ovat erittäin kiinnostavia. Avoimen datan myötä tällaiseen yhteiskunnalliseen tutkimukseen on mahdollista tuoda myös määrällisiä komponentteja.&lt;/p&gt;
&lt;p&gt;Alustavien tunnustelujen jälkeen päädyimme tutkimaan yhdessä Sotkanetin hyvinvointi-indikaattoreita, jotka &lt;a href=&#34;http://www.hri.fi/fi/ajankohtaista/sotkanet-indikaattoripankki-mukaan-sorvi-tyokalupakkiin/&#34;&gt;lisäsimme&lt;/a&gt; sorviin aiemmin tänä vuonna. Demoksen Juha Leppänen ja Satu Korhonen valitsivat Sotkanetista joukon mielenkiintoisia indikaattoreita erilaisista alueelliseen hyvinvointiin liittyvistä aiheista. Näiden pohjalta teimme vuorovaikutteisen visualisoinnin (ruutukaappaus alla), jota näpräämällä tutkijat pääsivät tulkitsemaan dataa.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2013-12-06-alueellinen-hyvinvointi.fi_files/indikaattorivertailu.png&#34; alt=&#34;indikaattorivertailu&#34;&gt;&lt;/p&gt;
&lt;p&gt;Tämä yhteistyökokeilu valoi uskoa tulevaisuuden yhteiskuntatutkimukseen jossa avoin data sekä avoimet datan käsittely- ja visualisointityökalut yhdistyvät tutkijoiden asiantuntemukseen. Vuoropuhelu, jossa tutkijat pääsevät vaikuttamaan data-analyysin kaikkiin vaiheisiin esittämällä kysymyksiä ja lopuksi tulkitsemaan dataa, mahdollistaa vaikeidenkin yhteiskunnallisten kysymysten lähestymisen uudella tavalla.&lt;/p&gt;
&lt;h3 id=&#34;visualisoinnin-teknisestä-toteutuksesta&#34;&gt;Visualisoinnin teknisestä toteutuksesta&lt;/h3&gt;
&lt;p&gt;Vuorovaikutteinen visualisointi on toteutettu RStudion mahtavalla &lt;a href=&#34;http://www.rstudio.com/shiny/&#34;&gt;Shiny-työkalulla&lt;/a&gt;, joka mahdollistaa visualisointien todella helpon toteuttamisen ja pystyttämisen RStudion tarjoamalle serverille. Itse visualisoinnit on tehty &lt;a href=&#34;https://developers.google.com/chart/&#34;&gt;Google Charts&lt;/a&gt;-työkaluilla käyttäen R:n &lt;a href=&#34;http://cran.r-project.org/web/packages/googleVis/index.html&#34;&gt;googleVis&lt;/a&gt;-pakettia ja lisäksi &lt;a href=&#34;http://cran.r-project.org/web/packages/ggmap/index.html&#34;&gt;ggmap&lt;/a&gt;-paketilla. Koodit datan käsittelyyn ja Shiny-visualisaatioon löytyvät &lt;a href=&#34;https://github.com/ouzor/sotkanet-shiny&#34;&gt;Githubista&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tämä oli ensimmäinen Shiny-härpäke jonka tein, joten kehitettävää on vielä paljon sekä käytettävyydessä että visuaalisella puolella. Kokemus oli kuitenkin erittäin lupaava ja uskon että Shinylle tulee paljon käyttöä tulevaisuudessa!&lt;/p&gt;
&lt;p&gt;PÄIVITYS 10.10.2014: Päivitetty uudet linkit visualisointiin ja lähdekoodiin.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2013/12/06/alueellinen-hyvinvointi/&#34;&gt;https://louhos.wordpress.com/2013/12/06/alueellinen-hyvinvointi/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Kunnallisvaalit sosiaalisessa mediassa</title>
  <link>http://ropengov.org/fi/2013/01/kunnallisvaalit-sosiaalisessa-mediassa/</link>
  <pubDate>Sat, 26 Jan 2013 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2013/01/kunnallisvaalit-sosiaalisessa-mediassa/</guid>
  <description>&lt;p&gt;&lt;img src=&#34;http://ropengov.org/images/datavaalit_logo_final_small.png#floatright&#34; alt=&#34;Datavaalit-logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;Datavaalit-sivustolla ylläpidettävään sosiaalisen median aggregaattiin on tätä kirjoitettaessa kasautunut dataa 987 ehdokkaan Twitter-syötteestä ja 2553 ehdokkaan Facebook-sivulta yhteensä 419975 päivitystä. Profiilien osoitteet on poimittu &lt;a href=&#34;https://vaalikone.yle.fi/&#34;&gt;Ylen vaalikoneesta&lt;/a&gt; sekä ehdokkaiden omien ilmoitusten perusteella. Esimerkeissä käytetty data on saatavilla CSV-dumppina GitHubin &lt;a href=&#34;https://github.com/avoindata/datavaalit-data/tree/master/some-aggregaatti&#34;&gt;avoindata-repositoryn&lt;/a&gt; kautta. Yksityiskohtaisempaa dataa on saatavilla Datavaalit-sivuston rajapinnan kautta.&lt;/p&gt;
&lt;p&gt;Poimimme muutamia esimerkkejä aineiston sisällöstä syksyn 2012 kunnallisvaaleihin liittyen. Esimerkit lähdekoodeineen löytyvät kokonaisuudessaan Louhoksen &lt;a href=&#34;https://github.com/louhos/sorvi/wiki/Datavaalit&#34;&gt;Datawikistä&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;sosiaalisen-median-päivitystiheydet-aikasarjana&#34;&gt;Sosiaalisen median päivitystiheydet aikasarjana&lt;/h3&gt;
&lt;p&gt;Syksyn 2012 kunnallisvaalien aikana puolueitten ehdokkaat päivittivät statuksiaan tavanomaista ahkerammin.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2013-01-26-kunnallisvaalit-some.fi_files/datavaalit-8.png&#34; alt=&#34;datavaalit-8&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;aktiivisimmat-statuspäivittäjät&#34;&gt;Aktiivisimmat statuspäivittäjät&lt;/h3&gt;
&lt;p&gt;Osa ehdokkaista jyrää sosiaalisessa mediassa ihan huolella.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2013-01-26-kunnallisvaalit-some.fi_files/some2.png&#34; alt=&#34;some2&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;miehet-twiittailee-naiset-ahkerampia-facebookin-käyttäjiä&#34;&gt;Miehet twiittailee, naiset ahkerampia Facebookin käyttäjiä?&lt;/h3&gt;
&lt;p&gt;Vertailussa ei ole huomioitu yksittäisten massatwiittajien vaikutusta tuloksiin.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2013-01-26-kunnallisvaalit-some.fi_files/some5.png&#34; alt=&#34;some5&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;puolueiden-aktiivisuus-sosiaalisessa-mediassa&#34;&gt;Puolueiden aktiivisuus sosiaalisessa mediassa&lt;/h3&gt;
&lt;p&gt;Suuret puolueet näkyvät paljon myös sosiaalisessa mediassa, koska ehdokkaitakin on enemmän. Datawikistä löytyy tämän lisäksi edustajaa kohden normalisoidut päivitystiheydet.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2013-01-26-kunnallisvaalit-some.fi_files/some4.png&#34; alt=&#34;some4&#34;&gt;&lt;/p&gt;
&lt;p&gt;PÄIVITYS 24.11.2020: Poistettu suora linkki vedonlyöntiyhtiön kaappaamalle datavaalit.fi-sivustolle.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2013/01/26/kunnallisvaalit-sosiaalisessa-mediassa/&#34;&gt;https://louhos.wordpress.com/2013/01/26/kunnallisvaalit-sosiaalisessa-mediassa/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Eduskunnan äänestysten hakurutiinit R-kielelle</title>
  <link>http://ropengov.org/fi/2012/11/eduskunnan-aanestysten-hakurutiinit-r-kielelle/</link>
  <pubDate>Wed, 07 Nov 2012 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2012/11/eduskunnan-aanestysten-hakurutiinit-r-kielelle/</guid>
  <description>&lt;p&gt;Eduskunnan äänestysdatan sujuva saatavuus mahdollistaa eduskunnassa tehtävien päätösten automaattisen seurannan ja edistää läpinäkyvyyttä. Mikko Heikkisen aiemmin julkaisema &lt;a href=&#34;https://www.biomi.org/web/eduskunnan_aanestykset/&#34;&gt;biomi.orgin&lt;/a&gt; eduskunta-APIn kautta on saatavilla osa eduskunnan äänestysdatoista.&lt;/p&gt;
&lt;p&gt;Lisäsimme nyt R-kieliset hakurutiinit eduskunnan äänestysdatalle &lt;a href=&#34;http://louhos.github.com/sorvi&#34;&gt;sorviin&lt;/a&gt; osana Datavaalit-hanketta. Näiden avulla löytyvät kaikki &lt;a href=&#34;https://www.biomi.org/web/eduskunnan_aanestykset/&#34;&gt;biomi.org&lt;/a&gt;-rajapinnan kautta saatavilla olevat eduskunnan äänestystiedot sekä äänestys- että edustajakohtaisesti. Yksityiskohtaisia hakuesimerkkejä löydät Louhoksen &lt;a href=&#34;https://github.com/louhos/sorvi/wiki/Eduskunta&#34;&gt;Datawikistä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ääkkösten ja muiden erikoismerkkien käsittely on vielä osin ratkaisematta; pull requestejä otetaan vastaan. Toinen, vakavampi ongelma liittyy eduskunnan äänestysdatan tämä hetkiseen saatavuuteen: eduskunnan äänestysdata on saatavilla koneluettavassa muodossa vain biomi.orgin kautta, jonka nykyinen päivitystiheys ei salli äänestysten reaaliaikaista seurantaa. Äänestysdatan jakaminen koneluettavassa muodossa suoraan eduskunnan palvelimilta edistäisi päätöksenteon seurantaa ja läpinäkyvyyttä ja olisi hyvää palvelua kansalaisten suuntaan – tältä osin heitämme pallon eduskunnalle.&lt;/p&gt;
&lt;p&gt;PÄIVITYS 24.11.2020: Poistettu suora linkki vedonlyöntiyhtiön kaappaamalle datavaalit.fi-sivustolle; Päivitetty biomi.org-linkki&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2012/11/07/eduskunnan-aanestysten-hakurutiinit-r-kielelle/&#34;&gt;https://louhos.wordpress.com/2012/11/07/eduskunnan-aanestysten-hakurutiinit-r-kielelle/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Kunnallisvaaliehdokkaiden aktiivisuus sosiaalisessa mediassa: puolueiden vertailua</title>
  <link>http://ropengov.org/fi/2012/10/kunnallisvaaliehdokkaiden-aktiivisuus-sosiaalisessa-mediassa/</link>
  <pubDate>Fri, 26 Oct 2012 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2012/10/kunnallisvaaliehdokkaiden-aktiivisuus-sosiaalisessa-mediassa/</guid>
  <description>&lt;p&gt;&lt;img src=&#34;http://ropengov.org/images/datavaalit_logo_final_small.png#floatright&#34; alt=&#34;Datavaalit-logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;Datavaalit-hanke on kerännyt runsaasti aineistoa kunnallisvaaliehdokkaista ja puolueista. Sivustolla ylläpidetään esimerkiksi sosiaalisen median aggregaattia, johon kerätään tietoja ehdokkaiden aktiivisuudesta mm. Facebookissa ja Twitterissä.&lt;/p&gt;
&lt;p&gt;Teimme muutamia esimerkkejä ehdokasaineistojen käsittelystä R-kielellä. Esimerkit hakevat dataa Oikeusministeriön, Tilastokeskuksen, Maanmittauslaitoksen ja Datavaalit-sivuston palvelimilta ja vertailevat ehdokkaiden aktiivisuutta sosiaalisessa mediassa puolueiden välillä, ja ne voidaan toistaa alusta loppuun automatisoidusti mukana tulevalla lähdekoodilla.&lt;/p&gt;
&lt;p&gt;Visualisoinnit lähdekoodeineen löydät &lt;a href=&#34;https://github.com/louhos/sorvi/wiki/Datavaalit&#34;&gt;Louhoksen Datawikistä&lt;/a&gt; ja Githubin &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/datavaalit/20121026-some.R&#34;&gt;takomo-reposta&lt;/a&gt;. Materiaaliin on tulossa myöhemmin täydennystä.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2012-10-26-kunnallisvaaliehdokkaiden-aktiivisuus.fi_files/datavaalit-3.png&#34; alt=&#34;datavaalit-3&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;http://ropengov.org/post/2012-10-26-kunnallisvaaliehdokkaiden-aktiivisuus.fi_files/datavaalit-109.png&#34; alt=&#34;datavaalit-109&#34;&gt;&lt;/p&gt;
&lt;p&gt;PÄIVITYS 24.11.2020: Poistettu suora linkki vedonlyöntiyhtiön kaappaamalle datavaalit.fi-sivustolle.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2012/10/26/kunnallisvaaliehdokkaiden-aktiivisuus-sosiaalisessa-mediassa-puolueiden-vertailua/&#34;&gt;https://louhos.wordpress.com/2012/10/26/kunnallisvaaliehdokkaiden-aktiivisuus-sosiaalisessa-mediassa-puolueiden-vertailua/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Kunnallisvaalien vertailukelpoiset ehdokasdatat CSV-taulukkoina: 2004 / 2008 / 2012</title>
  <link>http://ropengov.org/fi/2012/10/datavaalit-vertailukelpoiset-ehdokasdatat/</link>
  <pubDate>Fri, 05 Oct 2012 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2012/10/datavaalit-vertailukelpoiset-ehdokasdatat/</guid>
  <description>&lt;p&gt;&lt;img src=&#34;http://ropengov.org/images/datavaalit_logo_final_small.png#floatright&#34; alt=&#34;Datavaalit-logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;Vuoden 2012 kunnallisvaaliehdokkaiden vertailu aiempien kunnallisvaalien ehdokastietoihin on nyt ajankohtainen aihe. Ensimmäisiä vertailuja on julkaistu muun muassa &lt;a href=&#34;http://www.jylkkari.fi/2012/10/valtakunnallinen-ehdokasdata-tarjolla-tassa/&#34;&gt;Jyväskylän ylioppilaslehdessä&lt;/a&gt; ja Helsingin vaalipiirille on laadittu alustava &lt;a href=&#34;http://www.facebook.com/groups/datavaalit/permalink/276939669090920/&#34;&gt;puolueloikkaritaulukko&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Käyttövalmiissa muodossa olevien aineistojen puute kunnallisvaaleista 2004-2008 on kuitenkin jälleen osoittautunut merkittäväksi pullonkaulaksi koko maan kattaville vertailuille sen jälkeen, kun julkaisimme edellisessä blogipostauksessa OM:n koneluettavista raakadatoista koostetun käyttövalmiin CSV-tiedoston 2012 kunnallisvaalien ehdokasdatasta.&lt;/p&gt;
&lt;p&gt;Datavaalit työstää keskitettyä tietokantaa vaalidatan tarjoilulle helppokäyttöisessä muodossa, mutta työn edetessä julkaisemme alustavaa dataa käyttövalmiina CSV-taulukkoina Linus Torvaldsin tunnetuksi tekemää ”release early – release often”-taktiikkaa noudattaen. Nyt vuorossa vertailukelpoiset 2004-2012 ehdokasdatat.&lt;/p&gt;
&lt;h3 id=&#34;lataa-kunnallisvaalien-ehdokasdata-2004-2012&#34;&gt;Lataa kunnallisvaalien ehdokasdata 2004-2012&lt;/h3&gt;
&lt;p&gt;Taulukot on laadittu mahdollisimman vertailukelpoisiksi siten, että informaatiota ei katoa. Aineistot löytyvät nyt &lt;a href=&#34;https://github.com/avoindata/datavaalit-ehdokas-ja-tulostiedot&#34;&gt;GitHub-sivuilta&lt;/a&gt; ja Datavaalit-palvelimelta (linkki poistettu).&lt;/p&gt;
&lt;p&gt;Vuosien 2004-2008 aineistot on esitetty äänestysalueen tarkkuudella, lisäksi saatavilla on kuntatason yhteenvedot pienempinä erillistaulukoina. Vuoden 2012 osalta aineistot ovat kuntatasolla. Vuoden 2012 osalta mukana on joitakin lisätietokenttiä, lisäksi osa vuoden 2004-2008 kentistä puuttuu vuoden 2012 aineistoista. Yhteisten kenttien nimet ovat suoraan vertailukelpoisia taulukkojen välillä. Esikäsittely on tehty läpinäkyvästi alla linkatulla lähdekoodilla. Emme takaa aineiston virheettömyyttä. Pyydämme &lt;a href=&#34;http://louhos.github.com/contact.html&#34;&gt;raportoimaan mahdollisista puutteista&lt;/a&gt;. Ehdokasaineistojen vertailuja edistäisi entisestään, mikäli OM yksilöisi ehdokkaat uniikilla tunnuksella; samassakin kunnassa voi olla ehdolla saman nimisiä ehdokkaita.&lt;/p&gt;
&lt;h3 id=&#34;aineistolähteet-ja-lähdekoodi&#34;&gt;Aineistolähteet ja lähdekoodi&lt;/h3&gt;
&lt;p&gt;Aineistot on haettu &lt;a href=&#34;http://192.49.229.35/K2012/s/ehd_listat/kokomaa.htm#ladattavat&#34;&gt;Oikeusministeriön palvelimelta&lt;/a&gt; (2012; (C) OM 2012) ja &lt;a href=&#34;http://pxweb2.stat.fi/database/StatFin/databasetree_fi.asp&#34;&gt;Tilastokeskukselta&lt;/a&gt; (2004/2008, (C) Tilastokeskus 2012). Kuntakoodimuunnoksissa on lisäksi hyödynnetty &lt;a href=&#34;http://www.maanmittauslaitos.fi/avoindata&#34;&gt;Maanmittauslaitoksen aineistoja&lt;/a&gt; ((C) MML 2011-2012). Yhtenäistimme esim. kenttien nimiä taulukoiden välillä, lisäsimme selkokielisiä kenttiä koodinimien oheen, eriytimme etu- ja sukunimet, kunnat ja äänestysaluenimet omiin kenttiinsä ja järjestimme taulukkojen yhteiset kentät samaan järjestykseen. Lähdekoodi esikäsittelyyn on tehty &lt;a href=&#34;https://github.com/louhos/sorvi/tree/develop&#34;&gt;sorvi-paketin kehitysversiolla 0.1.92&lt;/a&gt; käyttäen alla olevaa lähdekoodia. Mahdolliset päivitykset alla olevaan lähdekoodiin tehdään suoraan &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/datavaalit/MunicipalElectionData.R&#34;&gt;takomo-repoon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PÄIVITYS 24.11.2020: Poistettu suora linkki vedonlyöntiyhtiön kaappaamalle datavaalit.fi-sivustolle.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2012/10/05/kunnallisvaalien-vertailukelpoiset-ehdokasdatat-csv-taulukkoina-2004-2008-2012/&#34;&gt;https://louhos.wordpress.com/2012/10/05/kunnallisvaalien-vertailukelpoiset-ehdokasdatat-csv-taulukkoina-2004-2008-2012/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Datavaalit: Oikeusministeriön vaalidatat sorvattu auki</title>
  <link>http://ropengov.org/fi/2012/09/datavaalit-oikeusministerion-vaalidatat/</link>
  <pubDate>Fri, 28 Sep 2012 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2012/09/datavaalit-oikeusministerion-vaalidatat/</guid>
  <description>&lt;p&gt;&lt;img src=&#34;http://ropengov.org/images/datavaalit_logo_final_small.png#floatright&#34; alt=&#34;Datavaalit-logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;Oikeusministeriö julkaisi eilen illalla (to 27.1.2012) koko maan kattavat tiedot &lt;a href=&#34;http://192.49.229.35/K2012/s/ehd_listat/kokomaa.htm#ladattavat&#34;&gt;kunnallisvaalien ehdokkaista ja puolueista&lt;/a&gt;. Mukana vuoden 2012 kunnallisvaaleissa on kaikkiaan 36305 ehdokasta. Yhdistelemällä aineistoa esimerkiksi viime kunnallis- ja eduskuntavaalien tuloksiin sekä kuntatason indikaattoreihin voidaan tuoda esiin uusia näkökulmia suomalaiseen kunnallispolitiikkaan.&lt;/p&gt;
&lt;h3 id=&#34;datavaalit-edistää-helppokäyttöisen-vaalidatan-saatavuutta&#34;&gt;Datavaalit edistää helppokäyttöisen vaalidatan saatavuutta&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://louhos.github.com/&#34;&gt;Louhos&lt;/a&gt; ja sorvi ovat aktiivisesti mukana viikko sitten &lt;a href=&#34;http://okfestival.org/datavaalit-data-elections-launch/&#34;&gt;Open Knowledge-festivaaleilla lanseeratussa&lt;/a&gt; Datavaalit-hankkeessa, jonka tavoitteena on tukea vaalidatan avaamista ja laajaa hyödyntämistä. Helppokäyttöisessä muodossa olevan päätöksentekodatan heikko saatavuus on keskeinen pullonkaula yhteiskunnallisesti vaikuttavassa datajournalismissa sekä läpinäkyvyyttä edistävien verkkopalveluiden yleistymisessä. Datavaalit-hanke kokoaa tietoja ehdokkaista, puolueista ja vaaleista kaikkien ulottuville. Datavaalit on sitoutumaton ja yhteisövetoinen hanke, jonka käynnistymistä Suomen itsenäisyyden juhlarahasto Sitra on tukenut Uusi Demokratia -kiihdytysrahoituksella.&lt;/p&gt;
&lt;h3 id=&#34;r-kieliset-rutiinit-vaalidatan-putsaamiseksi&#34;&gt;R-kieliset rutiinit vaalidatan putsaamiseksi&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://192.49.229.35/K2012/s/ehd_listat/kokomaa.htm#ladattavat&#34;&gt;Oikeusministeriön julkaisema vaalidata&lt;/a&gt; on sellaisenaan hankalasti käytettävää, koska aineisto on jaettu useisiin erillisiin tiedostoihin, kenttien otsikot puuttuvat, ja tiedostojen sisältö vaatii putsaamista. Edistääksemme vaalidatan mahdollisimman laajaa ja sujuvaa hyödyntämistä loimme &lt;a href=&#34;http://louhos.github.com/sorvi&#34;&gt;sorviin&lt;/a&gt; hakurutiinit, jolla koko aineiston voi hakea helposti R-ympäristöön ilman hankalia esikäsittelyvaiheita. Rutiinit lukevat vaalipiirikohtaiset taulut, yhdistävät ne koko maan kattavaksi yhtenäiseksi taulukoksi, ja lisäävät sarakeotsikot sekä selkokieliset nimet koodinimellä ilmoitettujen kenttien oheen. Hakurutiinit löytyvät sorvi-paketin &lt;a href=&#34;https://github.com/louhos/sorvi/tree/develop&#34;&gt;develop-haaran&lt;/a&gt; versiosta 0.1.88, ja esimerkkikoodi niiden käyttöön on Louhoksen &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/datavaalit/election.results.R&#34;&gt;takomo-repossa&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;lataa-siistitty-vaalidata-csv&#34;&gt;Lataa siistitty vaalidata-CSV&lt;/h3&gt;
&lt;p&gt;Tuloksena on kaksi selkeää koko maan kattavaa vaalidata-taulukkoa, yksi ehdokkaille ja toinen puolueille. Päätimme pistää ensimmäiset CSV-muotoiset datat jakoon datavaalit.fi-palvelimelle samalla, kun sivuston kattavampi ja helppokäyttöinen tietokantaratkaisu on työn alla. Voit ladata CSV-tiedostot (tai tiiviimmät gzipatut versiot) seuraavista linkeistä:&lt;/p&gt;
&lt;p&gt;Ehdokasdata: CSV (linkki poistettu)
Puoluedata: CSV (linkki poistettu)&lt;/p&gt;
&lt;p&gt;Välineet Oikeusministeriön tarjoaman vaalidatan siistimiseksi helppokäyttöiseen muotoon ovat vielä kehitysvaiheessa, emmekä takaa aineistojen virheettömyyttä. Ilmoitukset mahdollisista puutteista ovat erittäin &lt;a href=&#34;http://louhos.github.com/contact.html&#34;&gt;tervetulleita&lt;/a&gt;. Ilmoitamme päivityksistä tässä blogissa ja datavaalit.fi-sivustolla.&lt;/p&gt;
&lt;h3 id=&#34;kehitysehdotukset-oikeusministeriölle&#34;&gt;Kehitysehdotukset Oikeusministeriölle&lt;/h3&gt;
&lt;p&gt;Oikeusministeriölle kiitokset aineistojen julkaisemisesta. Hyvää palvelua kansalaisten suuntaan olisi tarjota taulukot jatkossa suoraan selkokielisessä muodossa, jonka koneluettavuus säilyy. Ehdotamme OM:lle tuleviin versioihin seuraavia parannuksia, jotka on mahdollista lisätä nopeasti ja automatisoidusti, ja jotka edistäisivät aineiston käytettävyyttä merkittävästi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Aineistot tulisi tarjota vaalipiirikohtaisten taulukoiden sijasta tai lisäksi koko maan kattavana kokoomataulukkona&lt;/li&gt;
&lt;li&gt;Sukupuolen, kunnan, vaalipiirin ja vaalityypin osalta koostetaulukkoon tulisi lisätä tietokantakoodin ohelle myös selkokieliset nimet&lt;/li&gt;
&lt;li&gt;CSV-tiedostoista tulisi tarjota versio, jonka kentät on otsikoitu valmiiksi. Kenttien tulkitsemiseen tarvittaviin PDF-muotoisiin kuvaustietoihin ei löydy linkkiä tiedostojen jakelusivulta; tiedostojen tulkinta vaatii nyt erillisten kuvaustiedostojen löytämistä ja kenttien otsikkotietojen lisäämistä käsin. Tämä vie aikaa ja sisältää mahdollisuuden virhetulkintoihin.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://192.49.229.35/K2012/s/ehd_listat/kokomaa.htm#ladattavat&#34;&gt;Tiedostojen jakelusivulta&lt;/a&gt; löytyvät PDF-yhteenvetotaulukot &lt;a href=&#34;http://192.49.229.35/K2012/s/ehd_listat/Ehdokastilasto.pdf&#34;&gt;ehdokkaista&lt;/a&gt; ja &lt;a href=&#34;http://192.49.229.35/K2012/s/ehd_listat/Puoluetilasto.pdf&#34;&gt;puolueista&lt;/a&gt; voisi tarjota jakoon myös CSV-muodossa, jolloin niitä voisi tulkita suoraan koneellisesti.&lt;/li&gt;
&lt;li&gt;Olisi tärkeää lisensoida aineistot avoimesti, esimerkiksi &lt;a href=&#34;http://wiki.creativecommons.org/CC0_use_for_data&#34;&gt;CC0&lt;/a&gt;-lisenssillä. Tämä takaisi selkeät juridiset pelisäännöt aineistojen jatkokäytölle ja edistäisi niitten vapaata käyttöä.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PÄIVITYS 24.11.2020: Poistettu suora linkki vedonlyöntiyhtiön kaappaamalle datavaalit.fi-sivustolle.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2012/09/28/datavaalit-oikeusministerion-vaalitulosdata-sorvattu-auki/&#34;&gt;https://louhos.wordpress.com/2012/09/28/datavaalit-oikeusministerion-vaalitulosdata-sorvattu-auki/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Aihepiirianalyysi kansanedustajien puheista</title>
  <link>http://ropengov.org/fi/2012/08/aihepiirianalyysi-kansanedustajien-puheista/</link>
  <pubDate>Mon, 20 Aug 2012 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2012/08/aihepiirianalyysi-kansanedustajien-puheista/</guid>
  <description>&lt;p&gt;Hesari ja &lt;a href=&#34;http://kansanmuisti.fi/&#34;&gt;Kansan muisti&lt;/a&gt; julkaisivat keväällä mielenkiintoisen kansanedustajien puheista koostetun &lt;a href=&#34;http://blogit.hs.fi/hsnext/avodataa-kansanedustajien-puheet-muutettuna-perusmuotoon&#34;&gt;datasetin&lt;/a&gt;. Datan perusteella syntyikin useita mielenkiintoisia &lt;a href=&#34;http://blogit.hs.fi/hsnext/tallaista-datajournalismia-syntyi-hs-open-4ssa&#34;&gt;visualisointeja&lt;/a&gt; osana HS Open 4  -tapahtumaa.  Näin laaja aineisto tarjoaa myös mainion mahdollisuuden kokeilla aihepiirianalyysiä (engl. &lt;a href=&#34;http://en.wikipedia.org/wiki/Topic_model&#34;&gt;&lt;em&gt;topic model&lt;/em&gt;&lt;/a&gt;). Se on tilastollinen koneoppimismenetelmä, jolla laajoista tekstidokumenttikokoelmista voidaan etsiä toistuvia aihepiirejä (topic). Esimerkiksi kansanedustajien puheista voidaan automaattisesti tunnistaa eduskunnassa käsiteltyjä aiheita, ja mitata edustajien verbaalista aktiivisuutta kunkin aiheen tiimoilta.&lt;/p&gt;
&lt;p&gt;Aihepiirianalyysissä kukin aihepiiri koostuu joukosta sanoja, jotka esiintyvät usein aihepiirin keskusteluissa. Vastaavasti kukin dokumentti, tässä tapauksessa tietyn kansanedustajan puheet, sisältää joukon aihepiirejä. Esimerkiksi viisi todennäköisintä sanaa aihepiirille 7 ovat koulutus, ammattikorkeakoulu, aloituspaikka, opiskelija, ja esillä, ja aihepiirille 19:lle puolustusvoima, suomi, sopimus, jalkaväkimiina, ja Afganistan. Näiden sanojen perusteella esimerkkiaihepiirit on helppo nimetä koulutusta ja maanpuolustusta käsitteleviksi. On tärkeää huomata, että kukin sana voi esiintyä useammassa kuin yhdessä aihepiirissä, esimerkiksi sanaa suomi käytetään kansanedustajien puheissa monessa yhteydessä.&lt;/p&gt;
&lt;p&gt;Aihepiirianalyysin tulokset voisi esittää listaamalla annettujen esimerkkien tyyliin kullekin aihepiirille todennäköisimmät sanat ja vastaavasti kullekin kansanedustajalle todennäköisimmät aihepiirit. Erityinen &lt;a href=&#34;http://research.ics.aalto.fi/mi/software/ismb09/&#34;&gt;&lt;em&gt;eye diagram&lt;/em&gt; -visualisointi&lt;/a&gt; tiivistää mallin löytämät yhteydet yhteen kuvaan:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2012-08-20-aihepiirianalyysi.fi/eyediagram_speech_20120820.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2012-08-20-aihepiirianalyysi.fi/eyediagram_speech_20120820.png&#34; width=&#34;800&#34;
alt=&#34;Ns. eye diagram -visualisointi, jossa vasemmalla puolella kansanedustajat ja oikealla puolella heidän käyttämissään puheenvuoroissa esiintyvät sanat&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Eye diagram -visualisointi kansanedustajien puheiden aihepiirianalyysista&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;http://ouzor.github.com/files/figures/EyeDiagram_Speech_20120813.pdf&#34;&gt;Esimerkkiaineistomme eye diagram-visualisoinnissa (PDF-versio)&lt;/a&gt; kansanedustajat ovat vasemmalla, aihepiirit keskellä ja sanat oikealla. Viivojen leveydet kuvaavat mallin määrittämiä todennäköisyyksiä kansanedustajien ja aihepiirien ja vastaavasti aihepiirien ja sanojen välillä. Kunkin aihepiirin yhteydet on esitetty omalla värillään ja lisäksi kuhunkin aihepiiriin liittyvät kansanedustajat ja sanat on tulkinnan helpottamiseksi pyritty listaamaan peräkkäin. Pienen tutustumisen jälkeen visualisoinnista löytyy selkeitä aihepiirejä. &lt;a href=&#34;http://ouzor.github.com/files/figures/EyeDiagram_Speech_Topic18_20120813.pdf&#34;&gt;Tässä esimerkiksi-visualisointi&lt;/a&gt;, jossa on korostettu selvästi eurokriisiin liittyvän aihepiirin yhteydet.&lt;/p&gt;
&lt;p&gt;Esimerkki valaisee aihepiirianalyysin tarjoamia mahdollisuuksia tekstidatan analysoinnissa. Tuloksia olisi mahdollista tulkita tarkemminkin puheiden ajankohdan ja puolueen mukaan. Lisäksi vuorovaikutteinen versio eye diagram -visualisoinnista helpottaisi tulkintaa entisestään. Aihepiirianalyysi antaa nopean yleiskuvan eduskunnan ajankohtaisista keskustelunaiheista ja toimijoista.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Teknisiä yksityiskohtia&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;R-koodit analyysin toistamiseen löytyvät alta sekä Louhos-projektin &lt;a href=&#34;https://github.com/louhos/takomo/tree/master/examples&#34;&gt;Takomo-reposta&lt;/a&gt;. Visualisointi on toteutettu &lt;a href=&#34;http://processing.org/&#34;&gt;Processing&lt;/a&gt;:lla, ja lisäksi tarjolla on yksinkertainen R-rajapinta.&lt;/p&gt;
&lt;p&gt;Hesarin julkaisemassa datasetissä Eduskunnan puheet olikin jo &lt;a href=&#34;http://kansanmuisti.fi/&#34;&gt;Kansan muistin&lt;/a&gt; toimesta muutettu perusmuotoon, mikä on käytännössä edellytyksenä suomenkielisen datan analysoinnissa. Osa mallin löytämistä aihepiireistä on yleisempiä, kuten topic 15 (myös, asia, pitää, sitten ja aika), jota käyttävät suurin osa kansanedustajista. Tällaiset aihepiirit eivät ole erityisen mielenkiintoisia, ja visualisoinnista onkin selvyyden vuoksi poistettu aihepiirit 3, 11, ja 15. Toinen höydyllinen esikäsittelyvaihe tekstidatan analyysissä on erilaisten yleisten sanojen, kuten ja, tai ei poistaminen. Tässä analyysissä poistin &lt;a href=&#34;http://ouzor.github.com/files/data/misc/finnish_stop_edit_20120305.txt&#34;&gt;joukon&lt;/a&gt; ns. sulkusanoja (engl. &lt;a href=&#34;http://en.wikipedia.org/wiki/Stop_words&#34;&gt;&lt;em&gt;stop word&lt;/em&gt;&lt;/a&gt;), mutta enemmänkin vastaavia sanoja voisi poistaa, kuten aihepiiri 15 osoittaa.&lt;/p&gt;
&lt;p&gt;Aihepiirianalyysi ajettiin R:n &lt;a href=&#34;http://cran.r-project.org/web/packages/topicmodels/index.html&#34;&gt;topicmodels&lt;/a&gt;-paketilla, mutta R:ssä olisi tarjolla muitakin toteutuksia topic-mallille. Mallin ajaminen vaatii erinäisten parametrien asettamisen, niistä tärkeimpänä aihepiirien määrä. Tässä analyysissä määräksi asetettiin 20 sen kummemmin validoimatta. Lisätietoa aihepiirien määrän oikeaoppisesta validoinnista ja muista parametreista löytyy esimerkiksi topicmodels-paketin &lt;a href=&#34;http://cran.r-project.org/web/packages/topicmodels/vignettes/topicmodels.pdf&#34;&gt;oheismateriaalissa&lt;/a&gt;. Eye diagram -visualisointikoodi on saatavilla &lt;a href=&#34;https://github.com/ouzor/eyediagram&#34;&gt;githubissa&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PÄIVITYS 6.1.2013: Blogin R-skriptejä ylläpidetään jatkossa Githubissa. Tämän artikkelin koodit löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20120820-aihepiirianalyysi.R&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2012/08/20/aihepiirianalyysi-kansanedustajien-puheista/&#34;&gt;https://louhos.wordpress.com/2012/08/20/aihepiirianalyysi-kansanedustajien-puheista/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Datavaalit osa 1 – vaali- ja kuntadatan kokoaminen ja paketointi</title>
  <link>http://ropengov.org/fi/2012/05/datavaalit-osa-1/</link>
  <pubDate>Mon, 21 May 2012 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2012/05/datavaalit-osa-1/</guid>
  <description>&lt;p&gt;&lt;strong&gt;Datavaalit&lt;/strong&gt; Syksyn kunnallisvaalien yhteydessä on mahdollisuus kokeilla vaaleihin ja päätöksentekoon liittyvän tiedonlouhinnan mahdollisuuksia ja tuoda esiin kehityskohteita päätöksentekoon kytkeytyvien tietoaineistojen saatavuuden ja yhteiskunnan läpinäkyvyyden lisäämiseksi. Aiheen tiimoilta on käynnistynyt ruohonjuuritason Datavaalit-tempaus, jossa eri toimijat keräävät, pöyhivät, ja julkaisevat vaaleihin liittyvää dataa ja sen pohjalta tehtäviä havaintoja. Datavaalit-tempauksella ei ole muodollista organisaatiota, vaan aiheesta kiinnostuneet ovat tervetulleita liittymään mukaan itselleen sopivalla tavalla. Ideoita ja tietolähteitä on koottuna &lt;a href=&#34;http://www.slideshare.net/apoikola/20120521-datavaalit&#34;&gt;täällä&lt;/a&gt;. Jos aihepiiri kiinnostaa, nyt on hyvä aika hypätä kelkkaan. &lt;a href=&#34;http://louhos.github.com/&#34;&gt;Louhos&lt;/a&gt;-tiimimme on mukana Datavaalit-tempauksessa kehittämällä yhteisövetoista &lt;a href=&#34;http://louhos.github.com/sorvi/&#34;&gt;soRvi&lt;/a&gt;-ohjelmakirjastoa yhteiskunnan tietovirtojen seulontaan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vaalitilastojen kokoaminen&lt;/strong&gt; Aloitimme kunnallisvaaleihin valmistautumisen keräämällä Helsingin Sanomien pyynnöstä &lt;a href=&#34;http://blogit.hs.fi/hsnext/iso-paketti-kuntadataa-ja-vaalidataa-hs-openiin&#34;&gt;kattavan paketin kuntatason sosioekonomista dataa ja aiempiin vaaleihin liittyviä tilastoja&lt;/a&gt; valmiiksi esikäsitellyssä taulukkomuodossa yhdistämällä Tilastokeskuksen ja Maanmittauslaitoksen avoimia kuntatason aineistoja. Data sisältää kuntatason tietoja väestöstä, koulutuksesta, työttömyydestä, ja muista indikaattoreista yhdistettynä kunnallisvaalien tuloksiin vuosilta 2000, 2004 ja 20008 sekä eduskuntavaalien tuloksiin vuosilta 2007 ja 2011. Aineistoja hyödynnetään mm. maanantain 21.5.2012 &lt;a href=&#34;http://blogit.hs.fi/hsnext/ilmoittaudu-hs-open-5een-datavaalit-2012&#34;&gt;HS Open&lt;/a&gt;-tapahtumassa, jossa koodaajien, graafikoiden ja toimittajien muodostamat tiimit pöyhivät tätä ja &lt;a href=&#34;http://blogit.hs.fi/hsnext/yhteenveto-hs-openiin-julkaistuista-datoista&#34;&gt;muita kunnallisvaaleihin liittyviä datoja&lt;/a&gt;. Jäämme mielenkiinnolla odottamaan, mitä tapahtuman osallistujat löytävät näiden tietoaineistojen kätköistä.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hakurutiinit soRviin&lt;/strong&gt; Esikäsitellyt kuntatason tietoaineistot ovat ladattavissa yllä olevan linkin kautta HS:n palvelimelta, mutta tämän blogipostauksen lopussa olevalla soRvi-kirjastoon pohjautuvalla koodilla niiden automaattinen luku onnistuu myös suoraan alkuperäislähteistä. Koodissa käytetyt hakurutiinit ovat toistaiseksi saatavilla vain soRvin &lt;a href=&#34;http://louhos.github.com/sorvi/asennus.html&#34;&gt;GitHub-kehitysversion&lt;/a&gt; kautta. Tiedot on nyt koostettu kaksiulotteisiksi taulukoiksi, sillä näiden käsittely ja yhdistely muihin tietoihin onnistuu helposti tavanomaisilla taulukko-ohjelmilla. Haittana on, että taulukon metatietoja joudutaan kokoamaan tekstimuotoon otsikkoriville. Automatisoidun analyysin kannalta moniulotteiset taulukot ja tietokantapohjaiset esitysmuodot olisivat optimaalisempia. Pyrimme jatkossa kehittämään soRvi-kirjastoa myös tältä osin ja uudet ehdotukset ja kontribuutiot ovat tervetulleita.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ongelmia Tilastokeskuksen aineistoilla&lt;/strong&gt; Aineistoja kootessamme havaitsimme, että Tilastokeskuksen avointen aineistojen luku vaatii pelkästään Windowsilla toimivaa ja suljetusti lisensoitua &lt;a href=&#34;http://tilastokeskus.fi/tup/pcaxis/lataus_tyokalut_en.html&#34;&gt;PX-Edit&lt;/a&gt;-ohjelmaa. Tämä muodostaa merkittävän pullonkaulan Tilastokeskuksen avointen aineistojen automatisoidulle saatavuudelle ja käytölle: 2621 &lt;a href=&#34;http://pxweb2.stat.fi/database/StatFin/databasetree_fi.asp&#34;&gt;avoimesta datataulukosta&lt;/a&gt; vain 29% (761 tiedostoa) oli automatisoidusti luettavissa verkon yli R-kielen valmiilla hakurutiineilla. Toistaiseksi PX-Edit näyttää olevan ainoa loppuun viilattu ohjelma Tilastokeskuksen käyttämän dataformaatin lukuun, mutta ohjelma toimii vain Windowsilla, sen käyttöä verkon yli ei saa kohtuullisella työmäärällä automatisoitua, ja lisenssiehdot hankaloittavat vaihtoehtoisten lukurutiinien tuottamista. Toivommekin Tilastokeskuksen jakavan avoimet aineistonsa jatkossa myös XML-tiedostoina tai muussa standardimuodossa, jolloin niiden luku ja automatisoitu yhdistely muihin tietoaineistoihin sujuvoituisi merkittävässä määrin kasvattaen entisestään tämän laadukkaan datakokoelman merkitystä ja arvoa.&lt;/p&gt;
&lt;p&gt;Alla vielä lähdekoodi, jolla Tilastokeskuksen vaali- ja kunta-aineistojen haku ja yhdistely alkuperäislähteistä onnistuu soRvin kehitysversiolla &amp;gt;0.1.70.&lt;/p&gt;
&lt;p&gt;Muokattu 7.4.2013 Esimerkkikoodit löytyvät nyt Louhoksen &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20120521-Kuntadata.R&#34;&gt;takomo-reposta&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PÄIVITYS 24.11.2020: Poistettu suora linkki domain squattereiden kaappaamalle datajournalismi.fi-sivustolle&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2012/05/21/datavaalit-osa-1-vaali-ja-kuntadatan-kokoaminen-ja-paketointi/&#34;&gt;https://louhos.wordpress.com/2012/05/21/datavaalit-osa-1-vaali-ja-kuntadatan-kokoaminen-ja-paketointi/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Vaalitulosten vertailua vuorovaikutteisena visualisaationa</title>
  <link>http://ropengov.org/fi/2012/02/vaalitulosten-vertailua/</link>
  <pubDate>Tue, 07 Feb 2012 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2012/02/vaalitulosten-vertailua/</guid>
  <description>&lt;p&gt;Vaalihumu alkaa onneksi jo laantua, mutta innokkaimmille tarjotaan tässä vielä osana Datavaalit2012-projektia mahdollisuus vertailla äänestystuloksia ensimmäisen ja toisen kierroksen välillä. Vertailu onnistuu kuntatasolla sekä pääkaupunkiseudun sisällä äänestysalueiden kesken.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://dl.dropbox.com/u/792906/figures/Presidentti2012_MotionChart_Kunnat_20120207.html&#34;&gt;VISUALISOINTI: VAALITULOSTEN VERTAILU KUNNITTAIN&lt;/a&gt;. Tässä voi esimerkiksi tarkastella &lt;a href=&#34;http://www.hs.fi/politiikka/V%C3%A4yrysen+kannattajat+j%C3%A4ttiv%C3%A4t+%C3%A4%C3%A4nest%C3%A4m%C3%A4tt%C3%A4+Soinin+eiv%C3%A4t/a1305555204413&#34;&gt;kuinka aktiivisesti Soinia ja Väyrystä ensimmäisellä kierroksella äänestäneet äänestivät toisella kierroksella&lt;/a&gt;, ja toisaalta äänestivätkö he Niinistöä vai Haavistoa.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://dl.dropbox.com/u/792906/figures/Presidentti2012_MotionChart_PKS_20120207.html&#34;&gt;VISUALISOINTI: VAALITULOSTEN VERTAILU PÄÄKAUPUNKISEUDULLA&lt;/a&gt;. Tässä voi tarkastella äänestyskäyttäytymistä yksityiskohtaisesti pääkaupunkiseudun sisällä äänestysalueittain. PÄIVITYS 8.2. kaupungit korjattu, kiitos Martille kommentista.&lt;/p&gt;
&lt;p&gt;Tässä esimerkkinä ruutukaappaus interaktiivisesta visualisoinnista.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2012-02-07-vaalitulosten-vertailua.fi_files/motionchart_screenshot.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2012-02-07-vaalitulosten-vertailua.fi_files/motionchart_screenshot.png&#34; width=&#34;500&#34;
alt=&#34;Kuva interaktiivisesta visualisoinnista&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Esimerkkivertailu. Väyrysen ensimmäisen kierroksen kannatuksen ja toisen kierroksen äänestysprosentin välillä näyttää olevan yhteys.&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Aiemmat Louhoksessa julkaisut visualisaatiot ovat kaikki olleet staattisia, sillä R:ssä on toistaiseksi melko huonosti tarjolla työkaluja interaktiivisten visualisointien tekoon. Tähän tuli kuitenkin hiljattain muutos &lt;a href=&#34;http://cran.r-project.org/web/packages/googleVis/index.html&#34;&gt;googleVis&lt;/a&gt; R-paketin myötä. Paketti tarjoaa helppokäyttöisen rajapinnan &lt;a href=&#34;http://code.google.com/apis/chart/&#34;&gt;Google Chart Tools&lt;/a&gt;:iin, joilla kuka tahansa voi tuottaa esimerkiksi &lt;a href=&#34;http://www.ted.com/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html&#34;&gt;Hans Rosling&lt;/a&gt; -tyyppisen &lt;a href=&#34;http://code.google.com/apis/chart/interactive/docs/gallery/motionchart.html&#34;&gt;Motion Chartin&lt;/a&gt; hetkessä.&lt;/p&gt;
&lt;p&gt;Vaalien ensimmäisen kierroksen tuloksista julkaistiinkin jo &lt;a href=&#34;https://sites.google.com/site/tiedonlouhintaa/&#34;&gt;hieno Motion Chart -visualisointi&lt;/a&gt;, jossa oli lisäksi yhdistetty muuta Tilastokeskukselta löytyvää kuntadataa. Näytämme nyt kuinka sama tehdään R:llä yhdistäen ensimmäisen ja toisen kierroksen vaalidatat, koodi löytyy alta.&lt;/p&gt;
&lt;p&gt;HS Next tarjoaa &lt;a href=&#34;http://blogit.hs.fi/hsnext/hs-julkaisee-presidentinvaalien-tuloksen-avoimena-tietona&#34;&gt;ensimmäisen&lt;/a&gt; ja &lt;a href=&#34;http://blogit.hs.fi/hsnext/presidentinvaalien-toisen-kierroksen-tulos-avoimena-datana&#34;&gt;toisen kierroksen&lt;/a&gt; äänestystulokset, ja lisäksi Tilastokeskukselta löytyi &lt;a href=&#34;http://www.stat.fi/meta/luokitukset/vaalipiiri/001-2012/luokitusavain_kunta.html&#34;&gt;lista kunnista vaalipiireittäin&lt;/a&gt;, mikä helpottaa datan työstämistä yhteensopivaan muotoon. Tulokset löytyvät aluksi linkitettyinä Dropboxin kautta, kunnes keksin kuinka ne saa sisällytettyä WordPressiin. PÄIVITYS: Tämä ei taidakaan onnistua eli noilla Dropbox-linkeillä mennään.&lt;/p&gt;
&lt;p&gt;PÄIVITYS 6.1.2013: Blogin R-skriptejä ylläpidetään jatkossa Githubissa. Tämän artikkelin koodit löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20120207-Presidentti2012_MotionCharts.R&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PÄIVITYS 24.11.2020: Poistettu suora linkki domain squattereiden kaappaamalle datajournalismi.fi-sivustolle&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2012/02/07/vaalitulosten-vertailua-vuorovaikutteisena-visualisaationa/&#34;&gt;https://louhos.wordpress.com/2012/02/07/vaalitulosten-vertailua-vuorovaikutteisena-visualisaationa/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Suomalaisten muuttoliike Maailmanpankin datoista maailmankartalla visualisoituna</title>
  <link>http://ropengov.org/fi/2011/11/suomalaisten-muuttoliike/</link>
  <pubDate>Thu, 17 Nov 2011 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2011/11/suomalaisten-muuttoliike/</guid>
  <description>&lt;p&gt;Mistä maasta ihmiset muuttavat Suomeen ja mihin Suomesta muutetaan? Vastausta voi etsiä &lt;a href=&#34;http://econ.worldbank.org/WBSITE/EXTERNAL/EXTDEC/EXTDECPROSPECTS/0,,contentMDK:22803131~pagePK:64165401~piPK:64165026~theSitePK:476883,00.html&#34;&gt;Maailmanpankin Migration-datasta&lt;/a&gt;. Kiinnostuin aiheesta &lt;a href=&#34;http://flowingdata.com/2011/08/10/people-moving/&#34;&gt;tämän mielenkiintoisen mutta loppupeleissä mielestäni erittäin vaikeaselkoisen visualisoinnin&lt;/a&gt; takia. Yritettyäni aikani tutkia Suomen muuttovirtoja turhauduin ja päätin visualisoida datan itse kartalle (vaihteeksi). Maailmankarttavisualisointeja ei tästä blogista vielä löydykään, joten tulee sekin samalla tutuksi. Lisäksi &lt;a href=&#34;http://www.r-ohjelmointi.org/?p=906&#34;&gt;R-ohjelmointi -blogissa oli jokin aika sitten koodinpätkä jolla R tuottaa interaktiivisen karttapallon&lt;/a&gt;, jota oli tietysti pakko kokeilla itse uuden datan kanssa!&lt;/p&gt;
&lt;p&gt;Idea on simppeli: ladataan Maailmanpankin data ja haetaan Suomen tiedot eli kuinka monta ihmistä on muuttanut Suomesta kuhunkin maahan ja päin vastoin vuonna 2010. Muuttoliike yhteen suuntaan on helppo värikoodata kartalle, mutta halusin tehdä nimenomaan yhden kartan josta näkyisi sekä muuttoliikkeen suunta että muuttajien määrä. Testailin eri vaihtoehtoja ja päädyin lopulta näyttämään Suomeen kohdistuvan muuttoliikkeen punaisella värillä ja Suomesta poispäin kulkevan liikkeen sinisellä värillä, jolloin jos jostakin maasta on muuttoliikettä molempiin suuntiin, näkyisi se violettina. Lisäksi värin voimakkuus (alpha-kanava) näyttää muuttajien määrän. Lopputuloksesta pystyy vertailemaan liikenteen suuntaa ja voimakkuutta eri maiden välillä, mutta varsinaisia arvoja siitä ei pysty tulkitsemaan.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-11-17-suomalaisten-muuttoliike.fi/finland_migration_20111116.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-11-17-suomalaisten-muuttoliike.fi/finland_migration_20111116.png&#34; width=&#34;800&#34;
alt=&#34;Teemakartta koko maapallosta, jossa värein kuvattu Suomesta muihin maihin kohdistuvan muuttoliikkeen voimakkuutta&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Muuttoliike Suomesta ja Suomeen. Sinisen väri kertoo Suomesta muihin maihin kohdistuvan muuttoliikkeen suhteellisen osuuden koko muuttoliikkeestä, ja punainen vastaavasti Suomeen suhtautuvan liikkeen osuuden. Värien voimakkuus kertoo muuttajien määrästä.&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Visualisoinnista näkyy todella selkeästi muuttoliikkeen suunta: Suomeen muutetaan pääasiassa alemman kehitystason maista Aasiasta, Afrikasta, Etelä-Amerikasta ja Itä-Euroopasta, kun taas Suomesta muutetaan lähinnä muihin kehittyneisiin maihin Eurooppaan, Pohjois-Amerikkaan, Australiaan ja Länsi-Eurooppaan. Tätä olisi mielenkiintoista verrata tarkemmin elintasosta kertoviin datoihin, mutta jätetään se myöhemmäksi.&lt;/p&gt;
&lt;p&gt;Alla jälleen R-lähdekoodi. Jos et vielä ole kokeillut Louhoksen esimerkkejä, nyt kannattaa viimeistään kokeilla sillä tuo interaktiivinen karttapallovisualisointi vaatii R-koodin ajamisen mutta on ehdottomasti näkemisen arvoinen!&lt;/p&gt;
&lt;p&gt;PÄIVITYS 6.1.2013: Blogin R-skriptejä ylläpidetään jatkossa Githubissa. Tämän artikkelin koodit löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20111117-muuttoliike.R&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2011/11/17/suomalaisten-muuttoliike-maailmanpankin-datoista-maailmankartalla-visualisoituna/&#34;&gt;https://louhos.wordpress.com/2011/11/17/suomalaisten-muuttoliike-maailmanpankin-datoista-maailmankartalla-visualisoituna/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>R-paketti avoimen Suomi-datan louhintaan</title>
  <link>http://ropengov.org/fi/2011/10/sorvi/</link>
  <pubDate>Sun, 09 Oct 2011 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2011/10/sorvi/</guid>
  <description>&lt;p&gt;On tullut aika yhdistää voimavarat ja koota kattava kokoelma eri tahoilla kehitettyjä ratkaisuja avoimen datan käsittelyyn yhteen pakettiin. Kehitteillä oleva avoimen lähdekoodin &lt;a href=&#34;http://sorvi.r-forge.r-project.org/&#34;&gt;sorvi-paketti&lt;/a&gt; on suunnattu palvelemaan erityisesti suomalaista avoimen datan yhteisöä ja kokoamaan yleiskäyttöisiä välineitä tietoaineistojen hakuun, putsaamiseen, yhdistelyyn, louhintaan ja visualisointiin.  Esimerkkejä paketin käytöstä Suomi-datan penkomiseen tullaan julkaisemaan lisää tässä blogissa.&lt;/p&gt;
&lt;p&gt;Paketti on kehitysvaiheessa, ja uudet tekijät ja lisäykset ovat tervetulleita. Ensimmäisenä esimerkkinä sorvin käytöstä hain kuntien asukasluvut &lt;a href=&#34;http://vrk.fi/default.aspx?docid=5127&amp;amp;site=3&amp;amp;id=0&#34;&gt;Väestörekisterikeskuksen sivulta&lt;/a&gt; ja visualisoin kuntien sukupuolijakauman Suomen kartalla. Miesvaltaiset kunnat on merkitty sinisellä ja naisvaltaiset punaisella.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-10-09-sorvi.fi/suomen-kuntien-miehitys.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-10-09-sorvi.fi/suomen-kuntien-miehitys.png&#34; width=&#34;500&#34;
alt=&#34;Teemakartta, jossa väreillä kuvattu Suomen kuntien sukupuolijakaumaa&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Suomen kuntien sukupuolijakauma&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Matkan varrella ilmeni seuraavia teknisiä ongelmia: 1) &lt;a href=&#34;http://gadm.org/&#34;&gt;gadm-muotoinen&lt;/a&gt; Suomen kuntajako on vanhentunut versio, esimerkiksi Rovaniemen ja Rovaniemen maalaiskunnan yhdistyminen ei ole näytä olevan mukana tässä versiossa. Alueet, joille asutustietoja ei ollut saatavilla, on merkitty karttaan valkoisella. Kertokaa, jos tiedätte mistä ajantasaisempi kuntajako on saatavilla R:lle. 2) En onnistunut käsittelemään skandeja R-paketin käännössä, joten ne piti ensin poistaa kuntien nimistä. Tämä tuskin vaikuttanee tuloksiin. Osaako joku kertoa, miten skandit jotenkin mukaan R-pakettiin? 3) Väestörekisterikeskuksen tiedot piti hakea parsimalla keskuksen verkkosivun taulukkoa XML-paketin työkaluilla. Kätevämpi tapa (kuten Juuso aiemmin mainitsi) olisi hyödyntää aineistoa suoraan &lt;a href=&#34;http://www.r-ohjelmointi.org/?p=876&#34;&gt;PC Axis-muodosta&lt;/a&gt; esim. &lt;a href=&#34;http://pxweb2.stat.fi/Dialog/varval.asp?ma=020_vaerak_tau_101_fi&amp;amp;ti=Kansalaisuus+i%E4n+ja+sukupuolen+mukaan+maakunnittain+1990+%2D+2010&amp;amp;path=../Database/StatFin/vrm/vaerak/&amp;amp;lang=3&amp;amp;multilang=fi&#34;&gt;Tilastokeskuksen sivuilta&lt;/a&gt;, vinkkejä otetaan vastaan.&lt;/p&gt;
&lt;p&gt;PÄIVITYS 6.1.2013: Blogin R-skriptejä ylläpidetään jatkossa Githubissa. Tämän artikkelin koodit löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20111009-kuntien-sukupuolijakauma.R&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2011/10/09/r-paketti-avoimen-suomi-datan-louhintaan/&#34;&gt;https://louhos.wordpress.com/2011/10/09/r-paketti-avoimen-suomi-datan-louhintaan/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>HS Open 3 lämmittely: Asuntojen myyntihinnat Helsingin kartalla</title>
  <link>http://ropengov.org/fi/2011/10/hs-open-3-asuntojen-myyntihinnat/</link>
  <pubDate>Wed, 05 Oct 2011 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2011/10/hs-open-3-asuntojen-myyntihinnat/</guid>
  <description>&lt;p&gt;Päivitys: &lt;a href=&#34;https://louhos.wordpress.com/2011/10/23/oikotien-myyntihinnat-ja-lukioiden-paremmuus-paakaupunkiseudulla/&#34;&gt;Uudempi postaus tästä aiheesta!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://blogit.hs.fi/hsnext/ilmoittaudu-hs-openiin-10-10-pengotaan-kaupunkia&#34;&gt;Kolmannessa HS Openissa&lt;/a&gt; yhtenä avattuna datana on &lt;a href=&#34;http://blogit.hs.fi/hsnext/asuntojen-vuokrat-ja-hintapyynnot-oikotiella-2010-2011&#34;&gt;Asuntojen vuokrat ja hintapyynnöt Oikotiellä&lt;/a&gt;. Talosen Jaakko ehtikin jo tehdän vuokrahinnoista &lt;a href=&#34;http://www.facebook.com/l.php?u=http%3A%2F%2Fdl.dropbox.com%2Fu%2F43933057%2Foikotie%2Fvuokrat.html&amp;amp;h=7AQBHULoMAQA6KYL2j8xcfWlnMKU_awfgaJ7NX9-r3zdUAA&#34;&gt;mainion visualisoinnin&lt;/a&gt;. Itse olen jo pidempään fiilistellyt mahdollisuutta &lt;a href=&#34;https://github.com/hadley/ggplot2/wiki/Crime-in-Downtown-Houston,-Texas-:-Combining-ggplot2-and-Google-Maps&#34;&gt;käyttää GoogleMapsin karttoja R-visualisoinnin pohjana&lt;/a&gt;, ja tässähän tarjoutui loistava tilaisuus kokeilla tuota käytännössä.&lt;/p&gt;
&lt;p&gt;Ideana on siis näyttää Oikotiedatan perusteella asuntojen hintapyynnöt kartalla, käytännössä keskimääräiset neliöhinnat postinumeroa kohden. Helpommin sanottu kuin tehty. Tämä vaatii nimittäin maantieteelliseti koordinaatit kullekin postinumerolle. &lt;a href=&#34;http://www.geonames.org/&#34;&gt;Geonames&lt;/a&gt; tarjoaa tällaista tietoa, mutta itse en ainakaan onnistunut saamaan sieltä Helsingin kaupunginosien postinumerotietoja ulos. Kertokaa jos onnistutte paremmin.&lt;/p&gt;
&lt;p&gt;Helsinki Region Infosharesta löytyy &lt;a href=&#34;http://www.hri.fi/fi/data/paakaupunkiseudun-aluejakokartat/&#34;&gt;pääkaupunkiseudun aluejakokartat&lt;/a&gt;, jossa kaupunginosille on annettu koordinaatit parilla eri tarkkuustasolla. Tämä data on mm. GoogleMapsin käyttämässä KML-formaatissa, minkä takia jouduin vähän kikkailemaan jotta sain datan R:n ymmärtämään muotoon. Lopulta päädyin käyttämään erillistä &lt;a href=&#34;http://choonchernlim.com/kmlcsv/&#34;&gt;kmlcsv-konvertteria&lt;/a&gt;, jolla sain alueiden pistetiedot käännettyä csv:ksi.&lt;/p&gt;
&lt;p&gt;Seuraavaksi tarvittaisiin sitten tiedot postinumerojen ja kaupunginosien yhteyksistä. Postilla on &lt;a href=&#34;http://www.posti.fi/postipalvelee/postinumerohaku/&#34;&gt;hakupalvelu&lt;/a&gt; joka antaa katujen nimet postinumeroiden perusteella, mutta siitä ei ole tässä apua. Lisäksi Itella tarjoaa koko maan kattavaa &lt;a href=&#34;http://www.itella.fi/palvelutjatuotteet/osoitepalvelut/postinumerotuotteet/postinumerotiedosto.html&#34;&gt;postinumerotiedostoa&lt;/a&gt;, muttei sentään ilmaisena ja avoimena datana, olisi liian helppoa… Yksi mahdollisuus olisi yhdistää postinumerot ja alueiden nimet käsin, mutta se ei oikein istu avoimen datan ideaan. Pienen kaivelun jälkeen löysin &lt;a href=&#34;http://www.hri.fi/fi/data/vanhojen-asunto-osakehuoneistojen-kauppahinnat-varainsiirtoveroaineiston-mukaan-helsingin-postinumeroalueilla-vuosina-2000%E2%80%932008/&#34;&gt;vanhempaa asuntohintatietoa Helsingistä&lt;/a&gt;, HRI:stä jälleen. Tätä dataa voisi toki visualisoida suoraankin, ja myös verrata Oikotien tarjoamiin uudempiin hintatietoihin. Tässä tiedostossa on hintatietojen lisäksi useimmille Helsingin postinumeroalueille myös nimi, joten sillä päästään eteenpäin. Alueiden nimet eivät edelleenkään osu täysin yksiin aluejakokarttojen nimien kanssa, mutta pienellä korjailulla saadaan melko kattava aineisto aikaan.&lt;/p&gt;
&lt;p&gt;Sitten vain yhdistetään kaikki yllä oleva data ja visualisoidaan. Oikotien myyntihintadata sisältää muuten vielä jonkun verran virheitä, ja lisäksi mukana on epäoleellista dataa kuten myytäviä tehdashalleja ja hevostiloja, ja lisäksi asumisoikeusasuntoja, jotka vääristävät keskimääräisiä hintoja. Päädyin alustavasti suodattamaan datan yksinkertaisesti asuntojen koon ja hinnan mukaan, ja lopputulos näyttää melko järkevältä.&lt;/p&gt;
&lt;p&gt;Tuloksena näin aluksi hyvin yksinkertainen karttavisualisointi, jossa datapisteiden koko kertoo keskimääräiset neliöhinnan kyseisellä alueella. Lisäksi kartalla näkyy kutakin pistettä vastaavan paikannimi, niiden avulla voidaan arvioida kuinka hyvin aluejakokarttojen koordinaatit osuvat kohdilleen. Osa nimistä tosin peittyy datapisteiden alle, pitää korjata tämä tulevaisuudessa. Data näyttää suunnilleen siltä mitä odotinkin, eli Helsingin ytimen hinnat ovat korkealla ja muualla on halvempaa.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-10-05-hs-open-3.fi/helsinki_prices2_20111005.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-10-05-hs-open-3.fi/helsinki_prices2_20111005.png&#34; width=&#34;700&#34;
alt=&#34;Helsingin kartta, jonka alueiden päälle merkittyjen pisteiden koko kuvastaa alueen neliöhintaa&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Asuntojen keskimääräiset neliöpyyntihinnat Helsingissä&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Tässä siis vähän esimakua mitä HS Open 3:n datoilla voidaan saada aikaan. Tarvittavien datojen pyörittely aiheuttaa kyllä päänvaivaa ja työtä. Seuraavaksi olisi mielenkiintoista laajentaa visualisointi koko pääkaupunkiseudulle, mutta se vaatii postinumeroiden ja alueiden yhdistämistä käsin tai jotenkin muuten, ideoita otetaan vastaan. Lisäksi visualisoinnista saa helpostikin paljon paremman näköisen.&lt;/p&gt;
&lt;p&gt;PÄIVITYS 6.1.2013: Blogin R-skriptejä ylläpidetään jatkossa Githubissa. Tämän artikkelin koodit löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20111005-HSOpen3_lammittely.R&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2011/10/05/hs-open-3-lammittely-asuntojen-myyntihinnat-helsingin-kartalla/&#34;&gt;https://louhos.wordpress.com/2011/10/05/hs-open-3-lammittely-asuntojen-myyntihinnat-helsingin-kartalla/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Yleisimmät nimet 1900-luvulla</title>
  <link>http://ropengov.org/fi/2011/09/yleisimmat-nimet-1900-luvulla/</link>
  <pubDate>Sat, 24 Sep 2011 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2011/09/yleisimmat-nimet-1900-luvulla/</guid>
  <description>&lt;p&gt;Idea tähän artikkeliin tuli hauskasta &lt;a href=&#34;http://www.bewitched.com/namevoyager.html&#34;&gt;Name Voyager&lt;/a&gt;-visualisointipalvelusta, joka näyttää suosituimpien lasten nimet vuosiluvun mukaan (olettetavasti Jenkeissä). Vastaavaa dataa suomalaisten nimien määristä löytyy Väestörekisterikeskuksen &lt;a href=&#34;http://www.vrk.fi/default.aspx?id=279&#34;&gt;tilastoista&lt;/a&gt; ja &lt;a href=&#34;http://verkkopalvelu.vrk.fi/Nimipalvelu/default.asp?L=1&#34;&gt;Nimipalvelusta&lt;/a&gt;. Ensimmäisessä on kattavat tilastot 2000-luvulta, kun taas jälkimmäisessä on luvut pienelle osalle yleisimpiä nimiä koko 1900-luvulta. Käytän tässä jälkimmäistä dataa yksinkertaisiin visualisointeihin. Tulevaisuudessa olisi mielenkiintoista kokeilla jotain alkuperäisen Name Voyagerin tapaista interaktiivista visualisointia tarkemmista 2000-luvun tilastoista.&lt;/p&gt;
&lt;p&gt;Nimipalvelun data on tarjolla vain html-taulukkona, mutta pieni googlaus &lt;a href=&#34;http://stackoverflow.com/questions/1395528/scraping-html-tables-into-r-data-frames-using-the-xml-package&#34;&gt;näytti miten XML-pakettia käytetään html-taulukon lataamiseen R:ään&lt;/a&gt;. Pienellä esikäsittelyllä ja ggplot2:n area-plotilla datasta saadaan alkuperäistä ideaa mukaileva visualisointi.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-24-yleisimmat-nimet-1900-luvulla.fi/pojat_top10_area_20110919.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-24-yleisimmat-nimet-1900-luvulla.fi/pojat_top10_area_20110919.png&#34; width=&#34;700&#34;
alt=&#34;Pinottu aluekaavio, jossa x-akselilla vuosi 1900-2000 ja y-akselilla nimien määrä. Alueet kuvaavat 10 yleisintä nimeä&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Yleisimmät poikien nimet 1900-luvulla (geom_area)&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Matti ei näytäkään olevan yhtä suosittu nimi kuin olin ymmärtänyt. Kuvaajasta näkyy suurten ikäluokkien vaikutus selvästi.&lt;/p&gt;
&lt;p&gt;Jos edellisen kuvaajan kulmikkuus häiritsee, pehmeämpää jälkeä saadaan geom_density:llä, joka sovittaa dataan jatkuvan tiheysjakauman. Tällöin tosin y-akselin tulkinta hankaloituu.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-24-yleisimmat-nimet-1900-luvulla.fi/pojat_top10_density_20110919.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-24-yleisimmat-nimet-1900-luvulla.fi/pojat_top10_density_20110919.png&#34; width=&#34;700&#34;
alt=&#34;Pinottu aluekaavio, jossa x-akselilla vuosi 1900-2000 ja y-akselilla nimien määrä. Alueet kuvaavat 10 yleisintä nimeä&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Yleisimmät poikien nimet 1900-luvulla (geom_density)&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Tässä vielä area-plotti tyttöjen nimistä. Maria näyttää tulleen uudestaan muotiin sotavuosien jälkeen, kun taas Marjatta on ollut erityisesti sota-ajan suosikkinimi.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-24-yleisimmat-nimet-1900-luvulla.fi/tytc3b6t_top10_area_20110919.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-24-yleisimmat-nimet-1900-luvulla.fi/tytc3b6t_top10_area_20110919.png&#34; width=&#34;700&#34;
alt=&#34;Pinottu aluekaavio, jossa x-akselilla vuosi 1900-2000 ja y-akselilla nimien määrä. Alueet kuvaavat 10 yleisintä nimeä&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Yleisimmät tyttöjen nimet 1900-luvulla&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;PÄIVITYS 6.1.2013: Blogin R-skriptejä ylläpidetään jatkossa Githubissa. Tämän artikkelin koodit löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20110924-nimet.R&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2011/09/24/yleisimmat-nimet-1900-luvulla/&#34;&gt;https://louhos.wordpress.com/2011/09/24/yleisimmat-nimet-1900-luvulla/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>HS Open 2: Apurahadataa kaivelemassa</title>
  <link>http://ropengov.org/fi/2011/09/hs-open-2-apurahadataa-kaivelemassa/</link>
  <pubDate>Tue, 13 Sep 2011 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/2011/09/hs-open-2-apurahadataa-kaivelemassa/</guid>
  <description>&lt;p&gt;Ensimmäisen artikkelini aiheena on &lt;a href=&#34;https://www.hs.fi/hsnext/kutsu-hs-open-2-seurataan-rahaa-23-5/&#34;&gt;HS Open 2&lt;/a&gt; -tapahtumassa analysoitu apurahadata. Data sisältää tietoa vuosina 2005-2009 jaetuista taiteilija-apurahoista. Latasin datan R:ään ja tein muutamia kuvaajia käyttäen ggplot2-pakettia. Tässä muutamia kuvaajia:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/top20.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/top20.png&#34; width=&#34;700&#34;
alt=&#34;Palkkikaavio, jossa x-akselilla kuvattu apurahan määrä ja y-akselilla 20 eniten apurahaa saanutta henkilöä&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;20 eniten apurahaa saanutta taiteilijaa (HS 19.5.2011)&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/hakemusluokat.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/hakemusluokat.png&#34; width=&#34;700&#34;
alt=&#34;Vuosittain ryhmitelty palkkikaavio, jossa x-akselilla kuvattu apurahan määrä ja y-akselilla hakemusluokka&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Apurahat hakemusluokittain ja vuosittain eroteltuna&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/ikc3a4_sukupuoli.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/ikc3a4_sukupuoli.png&#34; width=&#34;700&#34;
alt=&#34;Sukupuolittain jaoteltu palkkikaavio, jossa x-akselilla kuvattu apurahan määrä ja y-akselilla apurahan saajat luokiteltu ikäluokittain&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Apurahat ikäryhmittäin ja sukupuolen mukaan&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/ikc3a4ryhmc3a4_vs_hakemusluokka.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/ikc3a4ryhmc3a4_vs_hakemusluokka.png&#34; width=&#34;700&#34;
alt=&#34;Ns. balloon plot -tyyppinen kaavio, jossa x-akselilla hakijoiden ikäryhmä, y-akselilla hakemuksen luokka ja pallon koko kuvaa myöntösummaa&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Apurahat ikäryhmän ja hakemusluokan mukaan&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;ggplot2:n perusplottien lisäksi data voidaan visualisoida kartalle käyttäen apuna esimerkiksi &lt;a href=&#34;https://CRAN.R-project.org/package=sp&#34;&gt;sp-pakettia&lt;/a&gt;. Suomen kartta löytyy shapefile-muodossa &lt;a href=&#34;https://gadm.org&#34;&gt;GADM-tietokannasta&lt;/a&gt;. Absoluuttisten maakuntakohtaisten apurahasummien sijaan on mielenkiintoisempaa tarkastella apurahojen määrää maakuntien asukaslukuihin suhteutettuna. Tätä varten haemme tiedot maakuntien asukalsuvuista &lt;a href=&#34;http://pxweb2.stat.fi/Dialog/varval.asp?ma=020_vaerak_tau_101_fi&amp;amp;ti=Kansalaisuus+i%E4n+ja+sukupuolen+mukaan+maakunnittain+1990+%2D+2010&amp;amp;path=../Database/StatFin/vrm/vaerak/&amp;amp;lang=3&amp;amp;multilang=fi&#34;&gt;Tilastokeskuksen Väestötietokannasta&lt;/a&gt;. &lt;a href=&#34;http://www.r-ohjelmointi.org/?p=876&#34;&gt;Data olisi luettavissa suoraan R:ään PC Axis muodossa&lt;/a&gt;, mutta tyydymme tässä käsin haettuun ja muokattuun tiedostoon, ja palaamme PC Axis-muotoisen datan lukemiseen myöhemmin.&lt;/p&gt;
&lt;p&gt;Seuraava karttavisualisointi näyttää myönnettyjen apurahojen määrän per asukas maakunnittain. Uudellemaalle näyttää menneen edelleen selvästi eniten apurahoja, mikä vaikeuttaa muiden maakuntien summien vertailua. Tämän takia toisesta kuvasta on jätetty Uudenmaan tiedot pois.&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
&lt;figure &gt;
    &lt;a href=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/apurahat_kartalla_maakunnittain1.png&#34;&gt;
        &lt;img src=&#34;http://ropengov.org/post/2011-09-13-hs-open-2-apurahadataa-kaivelemassa.fi/apurahat_kartalla_maakunnittain1.png&#34; width=&#34;700&#34;
alt=&#34;Teemakartta Suomesta, jossa väri kuvaa kuhunkin maakuntaan myönnetyn apurahan suuruutta&#34;  /&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;&lt;small&gt;&lt;i&gt;Apurahat per asukas maakunnittain&lt;/i&gt;&lt;/small&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;PÄIVITYS 6.1.2013: Blogin R-skriptejä ylläpidetään jatkossa Githubissa. Tämän artikkelin koodit löytyvät &lt;a href=&#34;https://github.com/louhos/takomo/blob/master/examples/20110913-apurahat.R&#34;&gt;täältä&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alkuperäinen kirjoitus Louhos-blogissa: &lt;a href=&#34;https://louhos.wordpress.com/2011/09/13/hs-open-2-apurahadataa-kaivelemassa/&#34;&gt;https://louhos.wordpress.com/2011/09/13/hs-open-2-apurahadataa-kaivelemassa/&lt;/a&gt;&lt;/p&gt;
</description> 
  </item>
  
<item>
  <title>Projektit</title>
  <link>http://ropengov.org/fi/projects/</link>
  <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/projects/</guid>
  <description>
&lt;script src=&#34;http://ropengov.org/fi/projects/index.fi_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;rOpenGov-yhteisön R-pakettien kehitys tapahtuu &lt;a href=&#34;https://github.com/ropengov/&#34;&gt;GitHubissa&lt;/a&gt;. Mikäli haluat kontribuoida, katso lisätietoja &lt;a href=&#34;http://ropengov.org/fi/community/&#34;&gt;Yhteisö-sivulta&lt;/a&gt; tai tee pull request GitHubissa.&lt;/p&gt;
&lt;table class=&#34;table-striped table&#34;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;
Paketti
&lt;/th&gt;
&lt;th&gt;
Kuvaus
&lt;/th&gt;
&lt;th&gt;
Kotisivu
&lt;/th&gt;
&lt;th&gt;
Forkkeja
&lt;/th&gt;
&lt;th&gt;
Issueita
&lt;/th&gt;
&lt;th&gt;
&lt;i class=&#34;fa fa-star&#34;&gt;&lt;/i&gt;
&lt;/th&gt;
&lt;th&gt;
Päivitetty
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody id=&#34;repo_tbl&#34;&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;script src = &#34;./project_tbl.js&#34;&gt;&lt;/script&gt;
</description> 
  </item>
  
<item>
  <title>Yhteisö</title>
  <link>http://ropengov.org/fi/community/</link>
  <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
  
<guid>http://ropengov.org/fi/community/</guid>
  <description>&lt;h3 id=&#34;kehittäjät&#34;&gt;Kehittäjät&lt;/h3&gt;
&lt;p&gt;rOpenGov-verkostoa koordinoivat &lt;a href=&#34;http://www.iki.fi/Leo.Lahti&#34;&gt;Leo Lahti&lt;/a&gt;, &lt;a href=&#34;https://github.com/pitkant&#34;&gt;Pyry Kantanen&lt;/a&gt;, ja &lt;a href=&#34;https://github.com/muuankarski&#34;&gt;Markus Kainu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Olemme kiitollisia kaikille kehittäjille! Kattavin listaus
pakettikohtaisista kontribuuttoreista löytyy
&lt;a href=&#34;http://github.com/ropengov&#34;&gt;GitHub&lt;/a&gt;-sivulta ja &lt;a href=&#34;https://ropengov.r-universe.dev/contributors&#34;&gt;R-Universen&lt;/a&gt; kautta.&lt;/p&gt;
&lt;p&gt;rOpenGov on mukana &lt;a href=&#34;http://r-bloggers.com&#34;&gt;R-bloggersissa&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;yhteystiedot&#34;&gt;Yhteystiedot&lt;/h3&gt;
&lt;p&gt;Voit ottaa meihin yhteyttä &lt;a href=&#34;https://twitter.com/rOpenGov&#34;&gt;Twitterissä&lt;/a&gt;, &lt;a href=&#34;https://gitter.im/rOpenGov/home&#34;&gt;Gitterissä&lt;/a&gt; tai sähköpostitse: ropengov - at - googlegroups.com&lt;/p&gt;
&lt;p&gt;Voit myös ottaa suoraan yhteyttä koordinaattoreihin/kehittäjiin.&lt;/p&gt;
&lt;h3 id=&#34;kuinka-voin-kontribuoida&#34;&gt;Kuinka voin kontribuoida?&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://ropengov.github.io&#34;&gt;rOpenGov&lt;/a&gt; on itsenäisistä R-kehittäjistä koostuva yhteisö. Jos työskentelet vastaavanlaisten projektin parissa, älä epäröi ottaa yhteyttä!&lt;/p&gt;
&lt;p&gt;Liitä uusi R-paketti rOpenGov-verkostoon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Avaa uusi repository tai siirrä olemassa oleva repository rOpenGovin &lt;a href=&#34;https://github.com/ropengov/&#34;&gt;Github-organisaation&lt;/a&gt; alle (ota yhteyttä koordinaattoreihin saadaksesi oikeudet).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lisää paketti &lt;a href=&#34;https://github.com/rOpenGov/universe&#34;&gt;R-Universeen&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kontribuoi olemassa oleviin rOpenGov-paketteihin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avaa Issue tai Pull Request valitsemaasi pakettiin &lt;a href=&#34;https://github.com/ropengov/&#34;&gt;GitHubissa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Muita osallistumismahdollisuuksia:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Käytä R-pakettejamme&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Osallistu kehitykseen&lt;/strong&gt;. Kontribuutiot olemassa oleviin ja uusiin paketteihin, blogeihin ja dokumentaatioon tervetulleita!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Laadi esimerkkejä ja ohjeistuksia&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tee opinnäytetyö&lt;/strong&gt; avoimen datan ja algoritmien tiimoilta edistäen samalla yhteiskunnallisen datan saavutettavuutta ja tutkimuskäyttöä. Autamme mielellämme opinnäytetyön aiheen muotoilussa ja ohjauksessa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anna palautetta&lt;/strong&gt; paketeista, blogikirjoituksista, nettisivuista tai mistä vain.&lt;/li&gt;
&lt;/ol&gt;
</description> 
  </item>
  
</channel>
  </rss>