Tämä sivu liittyy 15.10. 2023 pidettyyn workshopiin Tilastotiedettä psykiatreille. Workshopin tavoitteena on esitellä matalalla kynnyksellä R-ohjelmiston käyttöä tilastollisissa perusanalyyseissa. Esimerkit on pääosin muokattu Tilastotieteen käsikirjasta jonka voit tilata tästä linkistä. Kirjaan liittyvä data- ja harjoituspaketti on ladattavissa ilmaiseksi omalle koneelle tämän linkin takaa. Kirjan ja siihen liittyvien harjoituspakettien avulla on helppo jatkaa opiskelua omatoimisesti. Workshopissa läpikäydyt esimerkit toimivat R:n uusimpien versioiden peruspaketeilla, ainoastaan ggplot2-paketti pitää asentaa erikseen. Ennen kuin aloitat, varmista että sinulla on koneellasi asennettuna sekä R, Rstudio että tästä linkistä löytyvä harjoitusdatapaketti. Jokin taulukkolaskentaohjelmisto (Excel tms) on myös hyödyllinen muttei välttämätön.
R-ohjelman peruskäyttö
Yksinkertaisimmillaan R-konsolia voidaan käyttää monipuolisen funktiolaskimen tapaan syöttämällä komennot yksi kerrallaan. Peruskomennot kannattaa ottaa haltuun koska niitä käytetään skriptien kirjoittamisessa. Alla käydään läpi esimerkinomaisesti tällaista komentorivikäyttöä
- Tutustutaan yksinkertaisiin R-komentoihin
- 1+1
- 55+(12-16)^2 # Pidempi lauseke
- 4+2/5(10-2)+ # Lauseke alkaa…
- (1+2+3+4+5+6)^2 #…ja jatkuu
- Määritellään muuttujia ja lasketaan niillä
- pituus<-1.8 # Määritetään pituus -muuttuja
- paino<-80 # Määritetään paino -muuttuja
- BMI<-paino/pituus^2 # Lasketaan BMI -muuttuja
- BMI # Tarkistetaan BMI-muuttujan arvo
- Muokataan muuttujia
- paino<-paino+20 # Lisätään muuttujan arvoon 20
- BMI<-paino/pituus^2 # Lasketaan BMI -muuttuja
- BMI # Tarkistetaan BMI-muuttujan arvo
- ls() # Listataan muistissa oleva muuttuja
Datan lataaminen ja käsitteleminen
Toisin kuin SPSS:ssa ja monissa muissa tilasto-ohjelmissa, RStudiossa (tai R:ssa) ei ole erikseen varsinaista dataeditoria. Datan syöttäminen muokkaaminen R-komentojen avulla on melko työlästä. Jos datamatriisi on pieni, on usein helpointa laatia se suoraan Excelissä tai vastaavassa graafisessa ohjelmistopaketissa, tallentaa data comma separated values -tekstimuodossa (csv) ja ladata tiedosto R-ympäristöön.
- Harjoitellaan datan lataamista
- Avataan projektihakemisto ja etsitään data -hakemistosta aineisto insuliini.csv
- Ladataan insuliiniaineisto Exceliin raahaamalla se ohjelmakuvakkeen päälle. Tarkastellaan millaisia muuttujia aineisto sisältää
- Tuodaan aineisto R-ympäristöön File -> Import Dataset -toiminnon avulla. Valitaan “strings as factors” niin luokkamuuttujat tallentuvat oikein. Tarkastetaan miten aineisto näkyy dataikkunassa
- Koetetaan järjestellä aineistoa uudestaan dataikkunassa, koetetaan onnistuuko aineiston muokkaaminen suoraan
- Tarkistetaan aineiston muuttujanimet names(insuliini) -komennon avulla
- Tarkistetaan aineiston rakenne head(insuliini) -komennolla
- Kun aineisto (tietokehikko) on ladattu muistiin, sen muuttujiin voidaan viitata $-operaattorilla
- Tutkitaan DIABETES-muuttujaa viittaamalla siihen $-operaattorilla komennolla insuliini$DIABETES
- Kokeillaan yksinkertasimpia aineiston kuvaamisessa käytettäviä funktioita insuliiniaineistolle
- Tarkistetaan aineiston muuttujanimet names(insuliini) -komennon avulla
- Tarkistetaan aineiston rakenne head(insuliini) -komennolla
- Tutkitaan DIABETES-muuttujaa viittaamalla siihen $-operaattorilla komennolla insuliini$DIABETES
- Lasketaan IKA-muuttujan keskiarvo komennolla mean(insuliini$IKA)
- Tyhjennetään R-työtila kokonaan komennolla rm(list=ls()).
- Suljetaan ja käynnistetään R uudestaan. Huomaa, että työtilaa EI kannata käytännössä koskaan tallentaa kun RStudio sitä kysyy
Ohjelmoiminen ja analyysiskriptin luominen
Analyysien tekeminen syöttämällä funktioita yksi kerrallaan on työlästä ja lähes yhtä virhealtista kuin hiirellä klikkaileminen. Tämän vuoksi analyysit kannattaa käytännössä aina kirjoittaa yksinkertaiseksi skriptitiedostoksi. Skriptistä on helppo tarkistaa, miten analyysit on tehty, ja niitä voi jakaa tutkimusryhmän jäsenten välillä. Lisäksi vanhoista skirpteistä voi kätevästi kierrättää osia uusiin skripteihin. Esimerkiksi hyvin laadittua kuvaajan tuottamiseen käytettyä skriptiä voi käyttää tulevaisuudessa vastaavien kuvien luomiseen. Seuraava harjoitus vastaa jo melko pitkälti “oikean” tutkimusaineiston analysoimisessa käytettävää lähestymistapaa.
- Luodaan uusi analyysiskripti nimeltä analysoi valitsemalla File –> New file –> R script
- Kirjoitetaan skriptin yleiskuvaus dokumentin alkuun. R ei tulkitse risuaitamerkillä erotettua tekstiä vaan ymmärtää ne kommenteiksi. Skriptien tarkka kommentoiminen on välttämätöntä, jos niitä aikoo myöhemmin jakaa ja pelkästään oman muistin tueksi on syytä kirjoittaa vähintään perustiedot komennoista
- Tallennetaan skripti nimellä analysoi.R
- Asetetaan projektin työhakemisto. Tämän jälkeen tiedostoihin ei tarvitse viitata niiden koko nimellä vaan R etsii tiedostoja suoraan työhakemistosta. tämä tehdään valikosta Session –> Set Working Directory –> Choose Directory ja valitaan esimerkkihakemisto omalta koneelta
- Huomaa – hakemiston asettamiskomento setwd() tulostuu R-konsoliin. Kopioidaan tämä skriptiin jolloin skiriptin ajaminen asettaa aina jatkossa hakemiston oikein eikä sitä tarvi tehdä enää valikosta erikseen
- Ladataan kipukokemuksia kuvaava aineisto (kipu.csv) käyttäen RStudion valikoita kuten edellä. Muistetaan valita “strings as factors” niin luokkamuuttujat tallentuvat oikein. Huomaa taas, kuinka datan lataamisessa käytetty komento tulostuu konsoliin. Kopioidaan se sieltä skriptiin. Tarkastellaan aineistoa komennolla View(kipu).
Analyysiskriptin täydentäminen ja muokkaaminen
Kun skriptipohja on valmiina, voidaan siihen alkaa syöttää komentoja aineiston muokkaamiseksi, kuvailemiseksi ja analysoimiseksi. Skirptiä ei ole pakko ajaa kerrallaan, vaan sieltä voi korostaa yksittäisiä komentoja tai komentoryppäitä ajettavaksi erikseen. Skriptitiedostoa voi siis käyttää “muistikirjan” tapaan kirjoittamalla sinne komentoja. Huomaa kuitenkin, että jos lataat skriptin tyhjään työtilaan niin esimerkiksi datan lataamiseen ja muokkaamiseen käytetyt komennot on aina pakko ajaa alkuun uudestaan, jotta data on käsiteltävissä. Lisätään seuraavaksi skriptitiedostoon yksinkertaiset perusanalyysit aineiston analysoimiseksi.
- Lasketaan aineiston tilastolliset tunnusluvut. Tämä voidaan tehdä joko muuttuja kerrallaan esimerkiksi var(kipu$KIPUNYT) ja mean(kipu$KIPUNYT) tai sitten yksinkertaisesti summary(kipu) -komennolla, joka laskee tunnusluvut koko aineistolle. Lisätään jälkimmäinen komento skriptiin.
- Muodostetaan ristiintaulukointi sukupuolesta ja akuutista kivusta table -komennon avulla ja tallennetaan tulos olioon “taulukko”:
taulukko <-table(kipu$SUKUP,kipu$AKUUTTIKIPU) - Lasketaan tallennetun taulukon suhteelliset osuudet prop.table() -funktion avulla. Kun lopputulos kerrotaan sadalla, saadaan prosentit: suht<-prop.table(taulukko)*100. Piirretään kuvaaja barplot-komennon avulla barplot(suht, beside=TRUE,legend=TRUE).
- Piirretään R-peruspaketin histogrammifunktion hist() avulla histogrammi lievimmästä kivusta, keskimääräisestä kivusta ja pahimmasta kivusta.
- Parannellaan histogrammeja lisäämällä määreet akselien selitteille ja väritykselle
- Tallennetaan histogrammit projektikansion kuvaajat -hakemistoon. Kokeillaan kuvaajien selaamista ja zoomaamista.
- Piirretään laatikko-jana -kuvaajat edellisistä kipumuuttujista sen suhteen onko tutkittavilla akuuttia kipua. Tämä onnistuu boxplot-komennon avulla. Syötteeksi annetaan ensin piirrettävä muuttuja ja tilde-operaattorin jälkeen luokitteleva muuttuja. Tämä onnistuu boxoplot-funktion avulla seuraavasti: boxplot(kipu$LIEVINKIPU~kipu$AKUUTTIKIPU)
- Vertaillaan t-testin avulla kipukokemusta akuutin kivun ryhmissä. Tämä tehdään t.test() -funktion avulla. Syötteeksi annetaan ensin jatkuva muuttuja ja sen jälkeen tilde-operaattorin jälkeen kategorinen muuttuja (kipuryhmä). Tässä komento on siis muotoa t.test(kipu$LIEVINKIPU~kipu$AKUUTTIKIPU)
- Tarkastellaan lopuksi muuttujien välisiä yhteyksiä. Piirretään aluksi sirontamatriisi kipumuuttujista pairs-komennon avulla: pairs(~LIEVINKIPU + KESKIMKIPU + PAHINKIPU, data=kipu)
- Kahden muuttujan välinen sirontakuvio saadaan muodostettua komennolla plot(LIEVINKIPU~KESKIMKIPU, data=kipu). Kuvaan voidaan lisätä selitteet kuten edellä.
- Lasketaan lopuksi muuttujien väliset korrelaatiot cor.test -funktion avulla. Syötteeksi annetaan aina muuttujapari.
Miten eteenpäin?
Edellisten harjoitusten perusteella on otettu tuntumaa R-kielen käyttöön ja analyysien tekemiseen RStudio-ympäristöä käyttäen. Lyhyessä workshopissa ei ehditä kuin esitellä asioita pintapuolisesti, mutta onneksi R-analyysien tekemiseen löytyy Internetistä todella paljon ohjeita. Kaikkia R-kielen hienouksia ei kuitenkaan ole mieltä opetella ulkoa, koska valmiita koodinpätkiä ja esimerkkejä on saatavilla runsaasti. Alle on listattu muutamia sivustoja joista on hyötyä sekä alkuvaiheen itseopiskelussa että myöhemmin analyyseja ja grafiikan tekemistä harjoitellessa.
- Tilastotieteen käsikirjan verkkosivut – suomenkielisen R-peruskurssin data- ja koodipaketit
- STHDA – erinomainen kokoelma perusasioita ja hieman vaativampiakin teemoja R-kieleen liittyen.
- R Graphics Cookbook – R-grafiikan perusoppikirjan sivusto. Erinomainen referenssi perusgrafiikkaan
- CRAN – R-ohjelmiston kotisivu. Ei varsinaisesti sovellu opiskeluun, mutta pakollinen lähde esimerkiksi päivityksiin ja paketteihin liittyen
- Codeacademy – sekä ilmaisia että maksullisia nettikursseja R-ohjelmiston käytöstä