CLT255, 2. luentokerta

Kommentteja edellisen luentokerran tehtävään (1): Satunnaisuus on yleisesti ottaen monisyinen ja vähän vaikeastikin lähestyttävä käsite, kun se liitetään deterministisyyteen, vapaaseen tahtoon, ym. Itse asiassa todennäköisyyslaskenta ja tilastotiede selviävät satunnaisuuden käsitteestä kevyesti määrittelemällä satunnaismuuttujan käsitteen yksinkertaisesti funktion avulla, joka kuvaa tapahtumien osajoukkojen todennäköisyyttä. Todennäköisyys puolestaan on vain luku välillä nollasta ykköseen. Teoria syntyy ilman pohdiskeluja vapaasta tahdosta, determisyydestä tms. Tapahtumien riippumattomuuskin on vain tapahtumien joukkoihin liitettyjen lukuarvojen sopivia suhteista.

Olennaista on siis hahmottaa ilmiö tapahtumiksi. Tällöin voidaan puhua joko yksittäisen tapahtuman todennäköisyydestä (esim. sille, että koehenkilö tunnistaa kuulemansa sanan oikein) tai tapahtumien joukon todennäköisyydestä (esim. sille, että keihäs lensi vähintään 70 metriä). Kummankinlaisia eli yhden tapahtuman tai tapahtumien joukon todennäköisyyksiä voidaan kuvata luvulla. Kelvatakseen todennäköisyydeksi pitää näiden lukujen olla vähintään nollan ja enintään ykkösen suuruisia ja vielä siten, että kaikkien tapausten yhteinen todennäköisyys on ykkösen suuruinen (sillä jotakin katsotaan aina tapahtuvan).

Tapahtumat eli tapahtumien joukot eivät välttämättä toisiaan poissulkevia. Esimerkiksi tekstin sana (eli sane) voi olla sekä kuusikirjaiminen että substantiivi. Sellaiset asat kuin tapahtumien riippumattomuus voidaan määritellä todennäköisyyslaskennassa yksinkertaisesti siten, että niiden yhtaikainen sattumisen todennäköisyys on yhtäsuuri kuin niiden todennäköisyyksien tulo. Intuition mukaan tämä ei ehkä aina ole sama asia kuin se, että tapahtumat eivät mitenkään vaikuttaisi toisiinsa. Jos intuitiivinen tulkinta on voimassa, silloin myös yllä mainittu matemaattinen tulkintakin on. Jos heitämme kaksi kertaa peräkkäin rahaa, ei jälkimmäisellä kerralla klaavan todennäköisyys riipu mitenkään siitä, mitä ensimmäisellä kerralla tuli.

Tilastollinen ohjelma R

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

Muuttujien laadusta

Tilastollisen analyysin kannalta muuttujat ovat lukuarvoja tai muita arvoja, joiden olemuksesta tilastollisia analyysejä laskevalla ohjelmalla ei voi olla paljonkaan tietoa. Käyttäjän itse tulisi hahmottaa millaisia muuttujia hän on aineistoonsa ottanut tai saanut. Muuttujia luonnehditaan sen mukaan, millaista asteikkoa niiden voidaan olettaa noudattavan:

  1. Nominaaliasteikko tarkoittaa sitä, että muuttuja saa erillisiä arvoja, joiden suhteesta toisiin arvoihin ei välttämättä voida sanoa paljoa. Esimerkiksi sanaluokkatieto (N, A, V, PRON, ADV, CONJ, ...) olisi tyypillisesti nominaaliasteikko, samoin esimerkiksi kansallisuus, sukupuoli tai äidinkieli.
  2. Järjestysasteikko tarkoittaa sitä, että nominaaliasteikon ominaisuuksien lisäksi tiedämme eri arvojen luontaisen järjestyksen, mikä arvoista tulee ensimmäisenä, mikä seuraavana jne. Minkä tahansa kahden arvon järjestyksen pitää olla pääteltävissä. Kyselytutkimuksissa eri/samanmielisyyden asteet ovat varmaan tällaisia. Myös ikäryhmät (imeväinen, leikki-ikäinen, koululainen, aikuinen, vanhus) tai varallisuusluokat ovat usen järjestykseltään selviä, mutta eri asteiden välisiä askelia emme osaa suhteuttaa toisiinsa.
  3. Intervalliasteikko on sellainen, jossa järjestysasteikon ominaisuuksien lisäksi voidaan mielekkäästi arvioida arvojen välisten askelien olevan yhtäsuuria. Esimerkiksi kappalemäärät ovat tällaisia.
  4. Jatkuva asteikko puolestaan on kuten intervalliasteikkokin, mutta muuttuja voisi periaatteessa saada kaikenlaisia arvoja, jotka voi imaista desimaalilukuina. Esimerkkinä voisi olla lämpötila, pituus tai paino.

Tehtäviä

Tehtävä nro 2
Minkä lajinen yllä mainitun luokittelun mukaan olisi (a) tekstissä olevan saneen pituus, (b) tietyn vokaalin kesto millisekunneissa ja (c) lauseen pääverbin persoona? Lähetä vastauksesi sähköpostiviestinä luennojalle.

Tehtävä nro 3
Alla on joukko lukuja, joiden voi ajatella muodostavan havaintomatriisin. Laita luvut taulukkolaskimeesi, talleta se CSV-muotoisena, tarkista millaista desimaalierotinta taulukkolaskimesi ohjelmasi tulosti ja miten arvot erotettiin toisistaan. Käynnistä R ja lue havaintomatriisi R:ään muuttujan X arvoksi ks. ohjeita taulukkolaskimen käytöstä havaintomatriisin luonnissa.
   NUM   WORD   LEN  RANK  FQ
     1   the    3       3  0,08143
     2   lady   4     428  0,00032
     3   passed 6     736  0,00018
     4   by     2      37  0,00388
     5   the    3       3  0,08143
     6   bank   4     576  0,00021
Anna tulokseksi R:llä tehty listaus X sekä summary(X) ja lähetä ne sähköpostiviestinä luennoijalle. Tarkista itse, että erityisesti muuttuja FQ menee oikein, eli sille summary=-komento antaa keskiarvon ja mediaanin (sillä, jos desimaaliluvut menisivät merkkijonoina, niin silloin =summary luettelisi vain yllä mainittujen merkkijonoiksi tulkittujen eri arvojen esiintymismääriä, siis 2 kpl arvoa 0,8143 tms.).


-- Copyright: Kimmo Koskenniemi, 2010


Topic attachments
I Attachment Action Size Date Who Comment
PNGpng esim-data-scatter-floor-age.png manage 3.6 K 2010-10-01 - 06:36 KimmoKoskenniemi Esimerkin muuttujien Floor ja Age hajontadiagrammi
PNGpng esim-data-scatter.png manage 6.8 K 2010-10-01 - 06:23 KimmoKoskenniemi Esimerkin muuttujien parittaiset hajontadiagrammit
Texttxt esim-data.txt manage 0.2 K 2010-10-01 - 06:01 KimmoKoskenniemi R-intro.pdf -dokumentin sivulta 30 oleva esimerkki
Topic revision: r13 - 2012-02-10 - KimmoKoskenniemi
 
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