Sisältö 1 Johdanto 2 2 Työkansion asettaminen 3 3 Aineistojen lukeminen 3 3.1 DAT-tiedosto........................... 3 3.2 SPSS-tiedosto........................... 3 3.3 Excel................................ 3 4 Aineiston kuvaaminen 3 4.1 lowess-tasoitus, paikallinen regressio............... 4 4.2 keskiarvoviiva eli interpolaatio-viiva............... 5 5 Aineiston osittaminen 5 6 rbind 6 7 luupit 6 8 Toiveet kurssilla käsiteltävistä aiheista 6 9 Harjoituksia 7 10 1. harjoitusten vastauksia 8 11 Exploring correlation structure 11 1
R-kurssi: luento 1 ja harjoitukset Veli-Matti Sorvala 20. marraskuuta 2013 Netistä löydettyä. Henkilö kertoo kokemuksestaan ryhdyttyään käyttämään R:ää Excelin sijaan: "... or if you finish your tasks too quickly and accurately, your boss will doubt whether you have really spent time on working, hence you will get less money paid (this is a REAL story for me - though I didn t get less payment, I was indeed doubted when I used R);..." 1 Johdanto En pyri luomaan yleiskattavaa "keittokirjaa" R-ohjelmointiin; en pidä sellaisen tuottamista edes hyödyllisenä. Käyn läpi asioita, jotka olen tutkimuksissani ja opiskeluissani kokenut hyödyllisiksi ja jotka ovat motivoinneet minua työskentelemään R:n parissa. Kannustan rohkeasti kokeilemaan kaikenlaista R:llä, niin mielestäni parhaiten oppii. Kannattaa varmistaa, että ymmärtää mitä on tekemässä. Kurssilla kannattaa kysyä; kaikkea en aina selitä tyhjentävästi. Yksi yleisperiaate tilastollisessa analyysissä on, että analyysityyppi riippuu suurelta osin muuttujien mitta-asteikoista. Esimerkiksi prosentteja ei ole aina välttämättä syytä analysoida sanoin kuin normaalijakaumaa noudattavaa muuttujaa. Kurssi tulee koostumaan koostumaan seuraavista osista: luento harjoituksissa vastaantulevista asioista, harjoitukset ja harjoitusten vastausten läpikäynti ja keskustelu. Vaikka kaikessa tilastotieteellisessä tutkimuksessa keskeistä on aineiston perustanlaatuinen tuntemus, niin en ole valinnut käytettäviä aineistoja tällä perusteella. Kurssin sisältöön voi vaikuttaa. Kerään toimumuslistan tämän luennon lopussa ja pyrin kurssin kuluessa toteuttamaan parhaani mukaan toiveitanne. 2
Käsiteltävistä asioista voidaan myös äänestää. Tietyt asiat tulen käymään läpi joka tapauksessa. 2 Työkansion asettaminen Yleensä, jos tiedostoa ei löydy, syy on se, että työkansiota ei ole asetettu oikein. Windowsissa näin: setwd( d : R kurssi ).Linuxissa näin: setwd("/home/sorvala/asiakirjat/r-kurssi") 3 Aineistojen lukeminen 3.1 DAT-tiedosto A = read.table( cows.dat ) 3.2 SPSS-tiedosto "A=read.spss("bankloan.sav",to.data.frame=TRUE)" 3.3 Excel Työstä ensiksi Excel-tiedosto yhdeksi työkirjaksi, jossa ensimmäisellä rivillä on muuttujien nimet ja muuttujien arvot nimien alla. Tiedosto ei saa sisältää mitään muuta, kuvia ym. Muunna sitten desimaalierotin pilkusta pisteeksi. (find-replace all). Tallenna tiedosto csv-muotoon pilkkuerottimena. Sitten voit avata tiedoston R:ssä seuraavasti. Katso R-koodi. data = read.csv( excel.csv,header = TRUE,sep =, ) Jos Excelissä voi tallentaa csv-muotoon muulla kuin pilkkuerottomille, niin tallenna se siihen muotoon ja muuta sep="valitsemasi merkkisi". Tällöin voit ohittaa desimaalierottimen muuntamisen pilkusta pisteeksi. Voit laittaa täsmennyksen,fill = TRUE, jos rivisi on eripituisia Exceltiedostossa. 4 Aineiston kuvaaminen Aineiston kuvaamisessa haasteena on yhdistää aineiston tiivistäminen ja aineiston välittämän informaation esilletuominen sitä vääristämättä. Kaiken 3
kuvaaminen ei ole myöskään oikea ratkaisu, koska silloin usein kuvaa vain satunnaisuutta. Vaikka ei kuvaisikaan vain satunnaisuutta, tieto pitäisi pystyä tiivistämään olennaiseen. Miljoonan yksityiskohdan tuominen jo aineiston kuvailun yhteydessä tuskin helpottaa tehtävää. Vertailen tässä kahta tapaa kuvata aineistoa siinä tapauksessa, että molemmat muuttujat ovat jatkuvia tai vasemmalta tai/ja oikealta katkaistuja jatkuvia muuttujia. 4.1 lowess-tasoitus, paikallinen regressio Lowess-tasoitus on yksi ei-parametrisista regressiomenetelmistä, joita voi käyttää estimoimaan keskimääräistä vastausprofiilia jonkin jatkuvan muuttujan kuvaajana, erityisesti kun x-akselilla on aika. Ne kaikki ovat samankaltaisia menetelmiä. Yksinkertaisin näistä, Kernel-estimointi, laskee hajontakuviossa "ikkunan"sisällä havaintojen keskiarvon x-akselin pisteeseen x. Ikkunaa liikutetaan ja näin lasketaan kaikkia x-akselin pisteitä vastaava y-akselin arvo. Jos ikkuna on niin kapea, että kuhunkin ikkunaan mahtuu vain yksi havainto, tuloksena on interpolaatio-viiva. Jos ikkuna on niin laaja, että se kattaa koko hajontakuvion tuloksena on vakio-viiva, joka leikkaa y-akselin y-muuttujan keskiarvon kohdalta. Painojen havainnolle ikkunan sisällä ei tarvitse olla vakioita vaan voidaan esimerkiksi antaa suuremmat painot ikkunan sisällä havainnoille, jotka ovat lähempänä pistettä x. Painot voivat määrittyä esimerkiksi Gaussin kernelin mukaan elik(u) = exp = exp( u 2 ). Ikkunan leveyttä kutsutaan taajuudeksi, bandwidth. Lowess-tasoitus on luonnollinen laajennus kernel-estimoinnille tehden ne robustimmiksi, eli vähemmän herkäksi poikkeaville havainnoille. Lowess-tasoitus lähtee samanlaisesta ikkunoinnista kuin kernel-metodi. Lowess-tasoitus ei laske ikkunan sisällä painotettua keskiarvoa vaan painotetun pienimmän neliösumman suoran (estimoituna pisteessä x). Kuten aikaisemminkin enemmän painoa annetaan havainnoille keskellä ikkunaa. Kun suora ikkunan sisällä on estimoitu residuaali (pystysuora)- etäisyys viivasta kuhunkin pisteeseen määritetään. Poikkeavat havainnot, pisteet joilla suuri residuaali, alaspainotetaan ja viiva lasketaan uudelleen. Prosessi iteroidaan muutaman kerran. Lopputuloksena on sovitettu viiva, joka ei ole herkka havainnoille, joilla poikkeava Y-arvo. Lowess-käyrän arvo pisteessä x on vain ennustettu arvo viivalle. Koko lowess-käyrä saadaan aikaiseksi toistamalla prosessia halutuissa pisteissä. Siten Lowess-tasoitus on varsin kehittynyt tapa estimoida datasta nousevia trendejä niin että epäolennaisille poikkeamille ei anneta liikaa arvoa. 4
Kuva 1: Dyslexia-data, interpolaatio 4.2 keskiarvoviiva eli interpolaatio-viiva Tätä käsittelinkin jo, mutta kuva 1 herättää keskeisen kysymyksen: Onko kaikki kuvan informaatio olennaista? Tässä koodia siitä miten keskiarvoaineiston saat tuotettua: aggdata <-aggregate(readingskills, by=list(readingskills$iq), FUN=mean, na.rm=t) 5 Aineiston osittaminen Näin saat valittua osa-aineiston: summary(readingskills) 5
newdata <- ReadingSkills[ which(readingskills$dyslexia== yes ),] summary(newdata) Näin voit valita muuttujia olemassa olevasta datasta: A = newdata A = A[,[1,3]] 6 rbind Voit yhdistää havainnot eri aineistoista yhdeksi aineistoksi (samat muuttujat) rbind-funktiolla: D=rbind(B,C). 7 luupit Loopeilla voi välttää monia toistuvia ja usein ikäviä ohjelmointivaiheita. R:ssä on useita tapoja toteuttaa niitä ja tilanteesta riippuen toiset tavat ovat parempia kuin toiset. Eräs tapa toteuttaa R:ssä luuppeja on seuraavanlainen: for(i in unique(a[,1])){ lines(lowess(a[,2:3][a[,1]==i,]),col=i) } Esittelen muita tapoja myöhemmin. 8 Toiveet kurssilla käsiteltävistä aiheista 6