Tilastollinen ohjelma R

Ohjelmiston valinta ja hankinta

Kurssilla voitaisiin varmaan käyttää mitä tahansa tavanomaista tilastollista ohjelmaa. Käytännön syistä ohjelmana on R, joka on toisaalta vapaasti saatavissa oleva avoimen lähdekoodin ohjelma ja toisaalta R toimii yhtä hyvin Linux- että Windows-työasemilla ja -palvelimilla. Alla olevalla käyttöjärjestelmällä ei käytäjän kannalta ole juurikaan eroa. Erityisesti, se on valmiiksi asennettuna Metsätalon salin 25 tietokoneisiin. Esim. Ubuntu -Linuxiin R:n saa ladatuksi suoraan Ubuntun sovellusohjelmien jakelun kautta. Kotikoneen Windowsiin R:n voi ladata R-hankkeen sivuilta: http://www.r-project.org/

Windows-työasemalla, johon R on asennettu, se käynnistyy normaalilla tavalla Aloitus-valikosta (eli Start). Linux-koneilla se käynnistyy vastaavasti komentoriviltä komennolla R. CSC:n Hippu-palvelimella on kuitenkin ennen R:n suorittamista varmistettava, että se on ladattuna. Lataus tapahtuu komennolla: module load R

R laskimena

Kun R on käynnistetty, se toimii kuten varsin monipuolinen laskin. Antamalla sille lausekkeen (esim. 11 kertaa 12), se laskee sen arvon (joka on 132) ja tulostaa saadun arvon:

> 11*12
[1] 132
>

Hakasuluissa oleva ykkönen tuloksen edessä tarkoittaa vain sitä, että 132 on laskutoimituksen ensimmäinen tulos. Tuloksena voi olla myös listoja, joissa on paljon arvoja, jolloin seuraavilla riveillä oleva hakasuluissa oleva numero kertoo, monesko tuon rivin ensimmäinen arvo on. Esimerkiksi 1:30 on R:n lauseke, joka vastaa ykkösestä alkaen kokonaislukuja kolmeenkymmeneen saakka, siis:

> 1:30
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[26] 26 27 28 29 30
>

Hakasulkulauseke [26] toisen rivin alussa tarkoittaa, että listan 26:s alkio tulee siinä ensimmäisenä. Tilastoja laskettaessa tarvitaan lukusarjoja ja niinpä R:ssä arvot voivat olla yksittäisiä lukuja tai yhtä hyvin monesta luvusta koostuvia listoja tai vektoreita, kuten tuo 1:30, jollaista lisää tuonnempana.

R:n muuttujat

Lausekkeen (esim. 1024/64) arvon (16) voi tallettaa muuttujaan (x):

> x <- 1024/64
>

Kuten nähdään, muuttujaan vietyä arvoa R ei tulosta näkyville. Tästä eteen päin kuitenkin x vastaa tuota arvoa, siis:

> x
[1] 16
> x+5
[1] 21

Huomaa, että tilastollisen havaintoaineiston muuttuja (eli havaintomatriisin sarake) on eri asia kuin R:n muuttuja.

R:n funktioita ja komentoja

R:ssä on häkellyttävän paljon funktioita, eikä niitä voine etukäteen opetella. Komennot ovat yleensä muotoa xxxxx(...), missä xxxxx on funktion nimi ja suluissa on funktion argumentteja. Esim sqrt(x) laskee x:n (joka on esim. 64) neliöjuuren (joka on 8). Sulut ovat tarpeen silloinkin, kun argumentteja ei ole. Esim. seuraava funktiokomento lopettaa R:n istunnon:

q()

Jos tietää (tai arvaa) funktion nimen, muttei muista sen tarkempaa käyttöä, voi tätä kysyä erityisen muotoisella komennolla, esim.:

?rnorm

Jos ei tiedä funktion nimeä, voi luotailla mahdollisia funktioita tai funktioita sisältäviä paketteja ??"..." -komennolla, esim.

??"Normal"

R:n avustuksen hakujärjestelmä ei ole kovinkaan tarkka, joten on syytä varautua myös siihen, että selailee tarvittaessa funktioiden luetteloita ja "Search Engine & Keywords" -kohtaa avustuksen aloitussivulla. Yritämme tulla toimeen pienellä määrällä funktioita, sillä kurssin tarkoitus ei ole oppia niinkään R-järjestelmää, kuin oppia tekemään tiettyjä yksinkertaisia tilastollisia analyysejä.

Erilaisia R:n käsitteitä tai olioita

Seuraavassa ennakoiden erinäisiä R:n dokumentaatiossa vastaan tulevia käsitteitä ja niiden nimityksiä:

  • vector: Vektori eli järjestyksessä oleva lista keskenään samanlaisia alkioita, esimerkiksi lukuarvoja; esim. konstruktiolla V <- c(5, 12, 30) syntyy kolmen alkion mittainen vektori V, josta voi indeksoimalla saada esille yksittäisen alkion, esim. V[2] tuo toisen alkion eli arvon 12. Huomattakoon, että c(c(1, 3), 5) on sama kuin c(1, 3, 5) eli vektorit pysyvät yksiulotteisina ja niiden osavektorien alkiot latistetaan kaikki samaan tasoon.
  • data frame: Havaintomatriisia vastaava vektoreista koostuva kokonaisuus (lista), jossa vektorit ovat tyypillisesti havaintomatriisin sarakkeita eli yhden muuttujan arvoja. Näiden lisäksi kokonaisuudessa on muuttujien nimistä tms. oma vektorinsa. Erilaiset tilastolliset operaatiot (funktiot) kohdistuvat yleensä tällaiseen kehyskokonaisuuteen. (Huomaa, että frame voi tarkoittaa hyvin erilaisia asioita muiden ohjelmien yhteydessä.)

Seuraavia ehkä emme tarvitse, mutta dokumentteja lukiessa ne voivat tulla vastaan ja hämmentää:

  • matrix: Kaksiulotteinen taulukko, jossa on siis keskenään yhtä pitkiä rivejä ja keskenään yhtä pitkiä sarakkeita; matriisista voidaan valita alkioita indeksoimalla, siis esim. A[2,3] on matriisin A toisen rivin kolmas alkio.
  • array: Mahdollisesti useampiulotteinenkin taulukko, siis esim. kolmiulotteinen, jossa taulukosta voidaan ottaa alkioita kolmella indeksillä.
  • table: Erilaisia asioita, mm. taulukointi voi olla joistakin (kehykseen kuuluvien) vektoreiden alkioista laskettu jakautumataulukko, joka on ns. ristiintaulukointi, jossa kahden muuttujan arvojen yhteinen jakautuma on laskettu. (Yleisessä kielenkäytössä 'table' voi tarkoittaa samaa kuin matriisi. R:ssäkin sana esiintyy eri yhteyksissä.)
  • list: Järjestetty lista alkioita, jotka voivat olla keskenään eri tyyppisiäkin. Listan alkio voi olla vaikka itsessään lista, matriisi tai vektori.
  • factor: R:n nimitys luokittelumuuttujalle, joka kertoo, mikä luokittelumuuttujan arvoista kuuluu kullekin havaintoyksilölle. (Faktori-termiä käytetään aivan muustakin eli ns. faktorianalyysin tuloksena saatavista laskennallisista muuttujista. Faktorianalyysissä useiden muuttujien tiedon pääosa on tiivistetty pienemmälle määrälle keinotekoisia muuttujia, ns. faktoreita.)
  • levels: R:n omaperäinen nimitys luokittelumuuttujan saamista eri arvoista muodostetulle vektorille. (Muualla termiä taso käytetään muista käsitteistä.)

Havaintomatriisi

Tilastollinen havaintomatriisi hahmotetaan taulukoksi eli matriisiksi, jossa on rivejä ja sarakkeita. Kukin rivi vastaa yhtä havaintoa ja kukin sarake yhtä muuttujaa.

Meidän tarkoituksiamme varten havaintomatriisi on yleensä yksinkertainen tekstitiedosto, jossa siis on yksi rivi kullekin havainnolle. Jokaisella tällaisella rivillä on yhtä monta välilyöntien tai sarkainten (tab) erottamaa kenttää, siten että muuttujien arvot ovat aina samassa järjestyksessä. Erityisenä ensimmäisenä muuttujana on aina havainnon tunnus (esim. järjestysnumero). Muilla muuttujilla on nimet, jotka annetaan tiedoston ensimmäisenä rivillä. Esimerkiksi tiedostossa esim-data.txt (joka on tämän sivun liitteenä):

   Price Floor Area Rooms Age Cent.heat
01 52.00 111.0  830 5     6.2 no
02 54.75 128.0  710 5     7.5 no
03 57.50 101.0 1000 5     4.2 no
04 57.50 131.0  690 6     8.8 no
05 59.75  93.0  900 5     1.9 yes

Tällaisen havaintomatriisin voi lukea R:ään read.table komennolla ja tässä myös tulostaa samantien, jotta näkee mitä R luki:

> HousePrice <- read.table("esim-data.txt")
> HousePrice
   Price Floor Area Rooms Age Cent.heat
01 52.00   111  830     5 6.2        no
02 54.75   128  710     5 7.5        no
03 57.50   101 1000     5 4.2        no
04 57.50   131  690     6 8.8        no
05 59.75    93  900     5 1.9       yes
>

Sisään luettu havaintomatriisi on data frame -tyyppiä, eli R tietää sen rakenteesta aika paljon, mm. sarakkeiden eli muuttujien nimet ja sarakkeilla olevat kyseisten muuttujien arvot. Muuttuja HousePrice on objekti ja enemmänkin kuin vain matriisi, jossa sattuu olemaan lukuja ja arvoja. Havaintomatriisin laatiminen taulukkolaskimella -sivulle on koottu ohjeita taulukkolaskimen käytöstä havaintomatriisin tekemisessä tai ylläpidossa.

R antaakin summary(...) -komennolla varsin hyödyllisen yleiskuvan ja tiivistelmän tällaisesta havaintomatriisista:

> summary(HousePrice)
     Price           Floor            Area          Rooms          Age      
 Min.   :52.00   Min.   : 93.0   Min.   : 690   Min.   :5.0   Min.   :1.90  
 1st Qu.:54.75   1st Qu.:101.0   1st Qu.: 710   1st Qu.:5.0   1st Qu.:4.20  
 Median :57.50   Median :111.0   Median : 830   Median :5.0   Median :6.20  
 Mean   :56.30   Mean   :112.8   Mean   : 826   Mean   :5.2   Mean   :5.72  
 3rd Qu.:57.50   3rd Qu.:128.0   3rd Qu.: 900   3rd Qu.:5.0   3rd Qu.:7.50  
 Max.   :59.75   Max.   :131.0   Max.   :1000   Max.   :6.0   Max.   :8.80  
 Cent.heat
 no :4    
 yes:1    
 

R on ensinnäkin jo selvillä siitä, että alkupään muuttujat ovat arvoiltaan numeerisia. Niistä annetaan:

  • Minimi eli muuttujan saamista arvoista pienin.
  • Ensimmäinen kvartiili eli laskettu arvo, jota pienempiä arvoja on neljäsosa muuttujan kaikista arvoista.
  • Mediaani eli arvo, jota suurempia ja pienempiä arvoja on yhtä paljon.
  • Keskiarvo eli muuttujan arvojen aritmeettinen keskiarvo (summa / arvojen määrä).
  • Kolmas kvartiili eli arvo, jota suurempia arvoja on neljäsosa arvoista.
  • Maksimi eli muuttujan saamista arvoista suurin.

Vastaavasti viimeisestä muuttujasta, joka saa diskreettejä arvoja yes ja no, annetaan nuo mahdolliset arvot ja kuinka monta kertaa kyseinen arvo esiintyy muuttujassa.

Havaintomatriisin voi valmistaa muunkinlaisena kuin yllä mainittuna riveiksi ja sarakkeiksi siististi hahmottuvana tekstitiedostona. Usein voi olla helppoa tehdä havaintomatriisi taulukkolaskimella (Exel, OpenOffice tai LibreOffice Calc tms.), jollaisella luvut on helppo syöttää hyvin järjestyksessä pidettävään muotoon. Taulukkolaskimen matriisin voi nimittäin tulostaa CSV (Comma Separated Values) -muotoon, jollaisena R osaa sen helposti lukea. Katso esimerkkejä verkkosivulla http://www.cyclismo.org/tutorial/R/.

Havaintomatriisin tarkastelu

Havaintomatriisia voi tarkastella muutenkin. Esimerkiksi komennolla plot(...) saa sen muuttujien yhteisvaikutuksista kuvan, siis esim.:

> plot(HousePrice)

Komennolla tulee graafinen esitys muuttujien parittaisista ns. sirontakuvioista (scatter diagram). Yksittäisessä sirontakuviossa on kukin näiden muuttujien arvopari sijoitettu ruutuun, jossa toisen asteikko on vaakasuorassa ja toisen pystysuorassa:

esim-data-scatter.png

Tällaisesta sirontakuvioiden yhdistelmästä on helppo nähdä yhdellä silmäyksellä, että tiettyjen muuttujien välillä on selviä riippuvuuksia, nimittäin Floor, Area ja Age. Vanhemmilla tapauksilla näyttäisi olevan enemmän lattiapinta-alaa ja vähemmän tonttialaa jne. (jos arvaan oikein muuttujien sisällön). Yksittäisestä muuttujasta saa halutessaan tarkemman kuvan plot.default -funktiolla. Muuttujii viitataan laittamalla havaintomatriisia vastaavan objektin perään dollari ja muuttujan nimi esim.=HousePrice$Age=. Saamme siis tarkemman kuvan Floor ja Age -muuttujien yhteisvaikutuksesta komennolla:

> plot.default(HousePrice$Floor, HousePrice$Age)
esim-data-scatter-floor-age.png

-- Lähde: https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HyClt255s2010L02, Copyright: Kimmo Koskenniemi, 2010

-- AnssiYliJyra - 2012-11-28

Topic revision: r2 - 2012-11-28 - AnssiYliJyra
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback