HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Paikkatiedon käsittely 8. Spatiaalinen riippuvuus Antti Leino antti.leino@cs.helsinki.fi 8.2.2007 Tietojenkäsittelytieteen laitos
Mistä on kyse? Tavallisessa tilastotieteessä oletus: havainnot toisistaan riippumattomia ja samoin jakautuneita Tämä ei päde paikkatiedolle Lähekkäisten paikkojen havainnot yleensä samanlaisempia kuin kaukaisten paikkojen
Miksi näin? Spatiaalinen riippuvuus ei yleispätevä sijaintiin liittyvä ominaisuus Sen sijaan reaalimaailman ilmiöissä usein tämäntapaisia riippuvuuksia Paljon taustamuuttujia, joita ei tunneta Monet näistä spatiaalisesti jatkuvia Maantieteellinen etäisyys näiden approksimaatio
Kaksi tarkastelumittakaavaa Usein hyödyllistä jakaa maantieteellinen vaihtelu kahteen osaan Ensimmäisen kertaluvun ominaisuudet Suuren mittakaavan vaihtelu Toisen kertaluvun ominaisuudet Läheisten paikkojen välinen riippuvuus
Ensimmäisen kertaluvun ominaisuudet Odotusarvon E(Y(s)) vaihtelu koko alueella Suuren mittakaavan trendit Usein seurausta ympäristömuuttujien vaihtelusta, joka spatiaalisesti jatkuvaa ei suoraan havaittavissa Tyypillisesti kuvattavissa perinteisen tilastotieteen keinoin Ei siis varsinaisen spatiaalisen tilastotieteen kannalta kiinnostavaa Paikkatiedon louhintaa sen sijaan kyllä
Ensimmäisen kertaluvun vaihtelu: Mustalampi Levikkikartta ja intensiteetin ydinestimaatti
Toisen kertaluvun ominaisuudet Lähekkäisten paikkojen välinen riippuvuus Pienen mittakaavan ilmiöt Autokorrelaatio saman muuttujan eri havaintojen välillä Muuttujien välillä positiivista korrelaatiota: attraktio negatiivista korrelaatiota: repulsio Tyypillinen spatiaalisen tilastotieteen ongelmakenttä
Toisen kertaluvun vaihtelu: Ahvenlampi ja Haukilampi Kahden järvennimen esiintymät: Ahvenlampi ja Haukilampi Näkyykö tässä jotain?
Toisen kertaluvun vaikutuksen invarianssi Yleensä tehdään kaksi oletusta toisen kertaluvun vaikutuksen luonteesta Stationaarinen: siirron suhteen invariantti, siis samanlainen tutkimusalueen eri osissa Isotrooppinen: kierron suhteen invariantti, siis samanlainen eri suuntiin Kahden pisteen välinen vaikutus [tarkkaan ottaen Cov(Y(s),Y(s ))] riippuu siis vain pisteiden s ja s välisestä etäisyydestä
Ensimmäinen vai toinen? Mistä tietää, onko kyseessä ensimmäisen vai toisen kertaluvun vaikutus? Ei mistään! Eronteko on vain analyysin jäsentämistä varten Ei ole yksikäsitteistä vastausta siihen, mikä on mallinnettava ensimmäisen ja mikä toisen kertaluvun vaikutuksena Valinta riippuu tutkimuksen tavoitteista ja tarkastelumittakaavasta
Mistä siis onkaan kysymys? Erot tavanomaiseen tilastolliseen mallintamiseen tulevat esiin, kun ensimmäisen kertaluvun vaikutus ei riitä Toisen kertaluvun riippuvuuksien testaamiseen tarvitaan Spatiaalista korrelaatiota kuvaavia tunnuslukuja Tilastollisia malleja spatiaaliselle rakenteelle (ja sen puuttumiselle) Menetelmiä näiden simulointiin
Siispä nyt käsitellään Menetelmiä ensimmäisen kertaluvun vaikutusten eksploratiiviseen analyysiin ja visualisointiin Toisen kertaluvun vaikutusten eksploratiiviseen analyysiin Spatiaalisen satunnaisuuden ja riippuvuuden mallintamiseen
Millä näitä käsitellään? Tällä kurssilla pääasiallisena esimerkkityökaluna tilasto-ohjelmisto R Open Source -implementaatio S:stä vastaava kaupallinen tuote SPlus Käytettävissä TKTL:n palvelimilla Saatavana laaja valikoima kirjastopaketteja paikkatiedon analysointiin Muitakin toki on Matlab Paikkatietojärjestelmien tilastotoiminnot Assosiaatiosääntö- ym. analyyseissä vähän valmiita työkaluja; omat skriptit auttavat alkuun
R:stä tarkemmin R-tietoutta Paketteja, käyttöohjeita http://cran.r-project.org/ Suomenkielinen R-opas (ei paikkatiedon käsittelyä) http://cc.oulu.fi/ jarioksa/opetus/rekola/rekola.pdf Kevään R-kurssi (Matematiikan ja tilastotieteen laitos) http://www.rni.helsinki.fi/ pek/r-johdatus/ Tällä kurssilla käytössä lähinnä paketit spatstat Pisteaineistojen analysointiin spdep Aluepohjaisten aineistojen analysointiin
R:n käytön valmistelut Itse R: /opt/r/bin/r Pakettien hakupolku Ympäristömuuttuja R_LIBS /fs/home/leino/lib/r: kurssin paikkatietopaketit /opt/r/lib/r/library: yleisen R-asennuksen paketit Hakemiston valinta merkityksellistä: poistuttaessa tallettaa tilanteen oletushakemistoon.rdata: työtila.rhistory: komentohistoria
R:n käynnistys TKTL:n Linux-ympäristössä melkki$ R_LIBS=/fs/home/leino/lib/R:/opt/R/lib/R/library /opt/r/bin/r R : Copyright 2006, The R Foundation for Statistical Computing Version 2.3.1 (2006-06-01) ISBN 3-900051-07-0 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type license() or licence() for distribution details. R is a collaborative project with many contributors. Type contributors() for more information and citation() on how to cite R or R packages in publications. Type demo() for some demos, help() for on-line help, or help.start() for an HTML browser interface to help. Type q() to quit R. >
R:n peruskäyttö Laskutoimitukset + - * / ˆ ym. perustoimituksia mm. log, exp, sin, cos, tan, abs Sijoitus = tai <- Jos laskutoimitusta ei sijoiteta muuttujaan, se tulostetaan > foo = 1+2 > 1+2+3 [1] 6 Tulostus vektorina; kullakin rivillä näkyviin ensimmäisen alkion indeksi > 0:31 [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [26] 25 26 27 28 29 30 31
Apua! Hyödyllisiä R-funktioita help(funktio) Kertoo argumenttina annetun funktion lyhyen käyttöohjeen args(funktio) Kertoo funktion argumentit ja niiden oletusarvot
Lisää hyödyllistä ls() Luettelee istunnon aikana käyttöön otetut muuttujat q() / quit() Lopettaa istunnon Oletusarvoisesti kysyy, tallennetaanko istunto Tämän voi myös kertoa: quit(save="yes") (vastaavasti "no" ja "ask")
Tulokset esiin print(olio) / olio Tulostaa olion arvon plot(x,y,... ) Piirtää pistejoukon, jonka x- ja y-koordinaatit annetaan vektoreina Muita argumentteja: type: p (pisteitä), l (yhdistetään viivoilla), ym. main: kuvan pääotsikko sub: alaotsikko xlab, ylab: akseleiden otsikot
Tulokset esiin: esimerkki > x=c(-20:20) > print(x) [1] -20-19 -18-17 -16-15 -14-13 -12-11 -10-9 -8-7 -6-5 -4-3 -2 [20] -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [39] 18 19 20 > plot(x, x^2, type="l")
Funktiokutsu Funktiokutsussa on oltava kaarisulut, vaikkei argumentteja annettaisikaan funktio on olio siinä missä muuttujakin Niinpä pelkkä funktion nimi ilman sulkuja tulkitaan print-funktion lyhennykseksi > q function (save = "default", status = 0, runlast = TRUE).Internal(quit(save, status, runlast)) <environment: namespace:base> > q() Save workspace image? [y/n/c]: n melkki$
Muuttujat ja perustietorakenteet Nimissä sallittu a z, A Z, 0 9, piste ja alaviiva Ensimmäisenä oltava kirjain Isot ja pienet kirjaimet eri merkkejä Joukko valmiita tietorakenteita Vektori (vector) Matriisi (matrix) Lista (list) Kehys (data frame)
Vektori Järjestetty kokoelma numeroita Yksittäiset numerot ovat oikeasti 1 alkion pituisia vektoreita Luodaan näppärästi funktiolla c > vektori = c(2, 4, 8, 16) > c(vektori, vektori*vektori[4]) [1] 2 4 8 16 32 64 128 256 Tuossa siis Viittaus vektorin osaan: indeksi(t) hakasuluissa c() konkatenoi argumentteina saamansa vektorit
Lisää vektoreita Tasavälisen vektorin luonti > seq(0,15, by=3) [1] 0 3 6 9 12 15 > seq(0,15, length=3) [1] 0.0 7.5 15.0 > seq(0,15, along.with=vektori) [1] 0 5 10 15 Siis ensimmäinen ja viimeinen alkio sekä by: peräkkäisten alkioiden väli length: vektorin pituus along.with: vektori, jonka pituinen tehdään
Matriisi Luodaan esimerkiksi funktiolla matrix > matriisi = matrix(seq(2,12,by=2), 2, 3) > matriisi [,1] [,2] [,3] [1,] 2 6 10 [2,] 4 8 12 Ensimmäinen argumentti vektori, jossa arvot ensin ylhäältä alas, sitten vasemmalta oikealle Toinen argumentti rivien lukumäärä Kolmas sarakkeiden lukumäärä
Viittaukset matriisiin Viittaukset matriisin osiin vastaavasti kuin vektoreilla > matriisi [,1] [,2] [,3] [1,] 2 6 10 [2,] 4 8 12 > matriisi[1,3] [1] 10 > matriisi[1,] [1] 2 6 10 > matriisi[,2] [1] 6 8
Lista Voi sisältää erityyppisiä komponentteja > lista = list(eka=c(1,3), toka=c( kissa, istui, ikkunalla )) > lista $eka [1] 1 3 $toka [1] "kissa" "istui" "ikkunalla" Viittaukset eri osiin niiden nimillä > lista$eka[2] [1] 3 > lista$toka[1] [1] "kissa"
Kehys Kuten lista, mutta kaikki komponentit yhtä pitkiä vektoreita > kehys = data.frame(x=c(1, 3, 5), y=c(2, 4, 6), + laji=c( kuusi, koivu, kataja )) > kehys x y laji 1 1 2 kuusi 2 3 4 koivu 3 5 6 kataja Näppärä tapa esittää havaintoaineistoja
Kehyksen ja matriisin osan valinta Kehyksestä voi valita osan jonkin sarakkeen arvon mukaan > kehys[kehys$laji== kuusi,] x y laji 1 1 2 kuusi Sama toimii myös matriisille > matriisi[matriisi[,1]==2,] [1] 2 6 10 Itse asiassa näissä käytetään totuusarvovektoria, jollaiseksi ehto laventuu > matriisi[c(t,f),] [1] 2 6 10
Aineiston lukeminen tiedostosta read.table( tiedosto ) Lukee tiedoston kehykseksi Tiedoston 1. rivillä sarakeotsikot Kunkin rivin 1. sarakkeessa riviotsikot Tiedosto puppu.txt: x y kuusi koivu kataja Eka 1 2 5.6 6.7 7.8 Toka 1 3 8.9 9.1 10.11 Kolmas 2 4 11.12 12.13 13.14 Luettuna > read.table( puppu.txt ) x y kuusi koivu kataja Eka 1 2 5.60 6.70 7.80 Toka 1 3 8.90 9.10 10.11 Kolmas 2 4 11.12 12.13 13.14
Valmiiden aineistojen lukeminen Kirjastopaketteja ladataan funktiolla library(paketti) Näissä voi olla sekä funktiomäärittelyjä että aineistoja Aineisto otetaan käyttöön funktiolla data(aineisto) Ilman argumentteja data() antaa listan tällaisista aineistoista
Tämä tästä tällä kertaa Näillä päässee alkuun Jatkossa spatiaalista analyysiä käsiteltäessä mukaan asiaan liittyviä R-funktioita ja -paketteja Edellä mainittuja R-oppaita kannattaa lukea