R: mikä, miksi ja miten? Ilmari Ahonen Matematiikan ja tilastotieteen laitos, Turun yliopisto SSL R-Webinaari 2015
Vähän minusta Valmistuin maisteriksi Turun yliopistossa 2012 Teen neljättä vuotta väitöskirjaa liittyen syöpäsolukuvien tilastollisiin analyysimenetelmiin R on ollut päätyökaluni viimeisen neljän vuoden ajan. Käyttötunteja arviolta > 4000 Kokemuksena varsinaisesta lääketeollisuudesta on kesäharjoittelu Rochella Baselissa 2012.
Mikä R? R on: ohjelmointikieli ja ohjelmaympäristö, joka on suunnattu tieteelliseen laskentaan ilmainen ja vapaan lähdekoodin ohjelmisto erityisen suosittu data-analyytikoiden keskuudessa tiedemaailmassa ja yhä suositumpi yritysmaailmassa
Mikä R? - konepellin alla R perustuu Bell Laboratoriossa kehitettyyn S-kieleen, josta myös S-PLUS on johdettu R:n lähdekoodi on kirjoitettu pääösin C:llä ja Fortranilla, joiden kutsuminen R:stä on suhteellisen helppoa R on funktionaalinen ja tulkittava kieli. Oliot ja metodit kummittelevat silti mukana
Mikä R?
Koodiesimerkkejä # Vähän laskentaa: 3 + 8 [1] 11 2.434^1.002 - exp(2)*log(124)/3 [1] -9.43411
Koodiesimerkkejä Asioita tallennetaan olioihin a.thing <- 95 some.other.thing <- "tekstiä"
Koodiesimerkkejä Erilaisia olioita c(1, 4, 1, 6) [1] 1 4 1 6 c("eka", "toka") [1] "eka" "toka" matrix(1:12, nrow=2) [,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 3 5 7 9 11 [2,] 2 4 6 8 10 12
Koodiesimerkkejä Mallin rakennusta x <- runif(100) y <- 1 + 2*x + rnorm(100) malli <- lm(y ~ x) class(malli) [1] "lm"
Koodiesimerkkejä summary(malli) Call: lm(formula = y ~ x) Residuals: Min 1Q Median 3Q Max -2.20792-0.71069-0.00739 0.62288 3.14653 Coefficients: Estimate Std. Error t value Pr(> t ) (Intercept) 1.2829 0.2157 5.946 4.23e-08 *** x 1.8278 0.3730 4.900 3.79e-06 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 1.08 on 98 degrees of freedom Multiple R-squared: 0.1968, Adjusted R-squared: 0.1886 F-statistic: 24.01 on 1 and 98 DF, p-value: 3.786e-06
Koodiesimerkkejä Kuvien tekoa hist(malli$residuals, col="pink", border="white", lwd=3, main="jäännösten jakauma") Jäännösten jakauma Frequency 0 5 10 15 20 2 1 0 1 2 3 malli$residuals
Koodiesimerkkejä Funktioiden määrittelemistä funktioni <- function(numero){ if(numero > 10000){ print("numero on kovin suuri") } else { print("numero on aika tavallisen kokoinen") } } funktioni(31) [1] "numero on aika tavallisen kokoinen"
Koodiesimerkkejä Lisää funktioita ja aineistoja on koottu paketteihin, joita löytyy esim CRANista (the Comprehensive R Archive Network)
Koodiesimerkkejä Pakettien käsittely # asennettaan paketti koneelle # install.packages("pet") # otetaan paketti käyttöön istunnossa library(pet) Loading required package: adimpro Reading RAW images requires to install dcraw, see http://cybercom.net/~dcoffin/dcraw/ for LINUX and http://www.insflug.org/raw/ for MAC OS and Windows Attaching package: PET The following object is masked from package:base : norm
Koodiesimerkkejä viewdata(list(p, R$Data, R$rData), list("phantom", "Marked Poisson Data", "Simulated PET Data")) Phantom Marked Poisson Data Simulated PET Data
R-koodaamisen erityispiirteitä # otetaan iris data esimerkiksi data(iris) # aineiston tiivistelmä: str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1... $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1
R-koodaamisen erityispiirteitä # valitaan osa-aineisto iris[130:135, c("sepal.length", "Species")] Sepal.Length Species 130 7.2 virginica 131 7.4 virginica 132 7.9 virginica 133 6.4 virginica 134 6.3 virginica 135 6.1 virginica # poistetaan puuttuvia havaintoja sisältävät rivit siivottu.iris <- iris[complete.cases(iris), ]
R-koodaamisen erityispiirteitä # järjestetään muuttujan mukaan iris.sorted <- iris[order(iris$sepal.length), ] # otetaan otos iris.sample <- iris[sample(1:nrow(iris), 50), ] dim(iris.sample) [1] 50 5
R-koodaamisen erityispiirteitä # sarakekeskiarvot colmeans(iris[, 1:4]) Sepal.Length Sepal.Width Petal.Length Petal.Width 5.843333 3.057333 3.758000 1.199333 # sarakekeskihajonnat apply(iris[,1:4], 2, sd) Sepal.Length Sepal.Width Petal.Length Petal.Width 0.8280661 0.4358663 1.7652982 0.7622377 # neliöjuurimuunnos iris.muunnettu <- apply(iris[,1:4], 2, sqrt)
R-koodaamisen erityispiirteitä # tehdään kuvakokoelma par(mfrow=c(1,3)) hist(iris$sepal.length) plot(iris$sepal.length, iris$sepal.width) boxplot(iris$sepal.length ~ iris$species) abline(h=6, col="red") Histogram of iris$sepal.length Frequency 0 5 10 15 20 25 30 iris$sepal.width 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 4 5 6 7 8 4.5 5.5 6.5 7.5 setosa virginica iris$sepal.length iris$sepal.length
R-koodaamisen erityispiirteitä # ggplot2:lla nopeasti hyvää laatua: library(ggplot2) ggplot(data=iris, aes(x=sepal.width, y=sepal.length, col=species)) + geom_point() + geom_smooth(method="lm") 8 7 Sepal.Length 6 Species setosa versicolor virginica 5 4 2.0 2.5 3.0 3.5 4.0 4.5 Sepal.Width
R-koodaamisen erityispiirteitä # sama kuva pilkottuna library(ggplot2) ggplot(data=iris, aes(x=sepal.width, y=sepal.length, col=species)) + geom_point() + geom_smooth(method="lm") + facet_grid(. ~ Species) 8 setosa versicolor virginica 7 Sepal.Length 6 Species setosa versicolor virginica 5 4 2.0 2.5 3.0 3.5 4.0 4.52.0 2.5 3.0 3.5 4.0 4.52.0 2.5 3.0 3.5 4.0 4.5 Sepal.Width
Miksi R? R:n vahvuuksia verrattuna SAS:iin: Ilmaisuus ja asema tiedeyhteisön suosikkina Aineiston muokkaus Kuvat Yhteispeli muiden työkalujen kanssa, kuten LaTeX, C++, SQL, html jne. Laajennuksien avulla interaktiiviset tulokset ja jopa itsenäisiä sovelluksia (esim Shiny) Ohjelmointikieli ja sen tuoma nopeus ja joustavuus Editorit, esim RStudio
Miksei R? R:n heikkouksia verrattuna SAS:iin: Pakettien laatu on täysin kehittäjiensä armoilla. Koskee erityisesti vähemmän käytettyjä ja uudempia paketteja Suurten aineistojen käsittely (ilman lisäpaketteja) Tulosten raportointi, pois lukien kuvat (jälleen ilman lisäpakettia)
Miten R? R:n opiskelun aloittaminen on helppoa (jatkaminen ei välttämättä...). saatavilla kaikille yleisimmille käyttöjärjestelmille (Windows, Mac OS, Linux) erilaisia oppaita on tarjolla valtavasti (myös itseopiskelukurssi Turun yliopistolla!) RStudio tai jokin muu graafinen editori helpottaa käyttöä huomattavasti R:n kotisivut: www.r-project.org/, RStudio: www.rstudio.com/
Miten R?
Miten R? Materiaaleja Quick-R: www.statmethods.net/ swirl: swirlstats.com/ DataCamp: https://www.datacamp.com/ R inferno: http://www.burns-stat.com/documents/ books/the-r-inferno/