2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
1
R – keel ja keskkond statistilisteks arvutusteks ja graafikaks
1 Sissejuhatus
1.1 Kuidas saada endale R?
R on vaba tarkvara. Informatsiooni saab koduleheküljelt:
http://www.r-project.org
Edasi jälgida linke mis juhatavad programmi allalaadimiseni (Download–CRAN –
Windows–Base).
Varasemate versioonide programmid töötavad alati ka uuemates versioonides.
Kodulehelt võib leida veel täiendavat dokumentatsiooni, raamatu algajaile (Help –
Manuals – An Introduction to R) ja spetsiaalsete ülesannete jaoks loodud
statistikamooduleid, mis vaikimisi koos R-ga ei installeeru (hetkel umbes 1000
moodulit, näiteks nagu moodul norm lünkade täitmiseks andmestikes ja taoliste
täidetud lünkadega andmestike pealt korrektse statistilise analüüsi tegemiseks või
geenide klasterdamiseks mõeldud moodul GeneSOM). Programmi R peaks praegu
olema võimalik kasutada Windowsi, Linuxi, Macintoshi, Sun Solarise jpt.
operatsioonisüsteemides. Standardinstallatsioon võtab umbes 35 Mb ruumi, koos
lisadega rohkem. On olemas ka miniversioon, mis saab hakkama ka paar korda
väiksema kettaruumiga. Teoreetiliselt võiks R Windowsi keskkonnas hakkama saada
andmestikega mis on kuni 1.5Gb suured, kuid töö väga suurte andmestikega on R-s
hetkel siiski problemaatiline.
1.2 Kuidas alustada?
Avada R
Programmi avanedes ilmub ekraanile käsuaken. R-ga suhtlemine toimub põhiliselt
käsurea kaudu. Akna ülaservas on ka menüü, mis võimaldab kasutaja keskkonna
seadistamist, töökeskkonna salvestamist, lisamoodulite (packages) laadimist jms.
Algajal on kasulik valida Help -> Manuals -> An Introduction to R. Sama materjal
on olemas ka html-formaadis ja selle leiab üles, kui avada help html-formaadis.
Valida töökataloog
Selleks valida menüüst File –> Change Dir ning määrata töökataloogiks soovitavalt
arvuti kõvakettal asuv kataloog, kus asuvad ka muud konkreetse projektiga seotud failid
(andmestik, artikli toorversioon, vms.). Nii toimides lihtsustame R-i ja teiste
programmide (Excel, Word) samaaegset kasutamist – andmestiku viimist ühest
keskkonnast teise, R-i abil loodud graafikute lisamist artiklisse jne.
Töö lõppedes ja R-i sulgemisel ilmub ekraanile küsimus: “Save workspace?”. Valides
vastuseks “Yes”, kirjutab R töökataloogi kaks faili – .Rdata ja .Rhistory. Neist esimene
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
2
sisaldab andmeid ja kõiki muid töö käigus loodud objekte, teine sisaldab töö käigus
käsurealt sisestatud käske.
Viimane fail on ASCII-formaadis, redigeeritav Notepadi vm tekstiredaktoriga. Faili
“.Rdata” kaudu saab R-i uuesti avada ning jätkata tööd poolelijäänud kohast.
2 Andmete viimine MS Excelist R-i
Kõige lihtsam on MS Excelist andmed saada R keskkonda läbi tekstifaili ehk Exceli fail
tuleb salvestada tekstifailiks (soovitav csv-formaati) ja seejärel R-s sisse lugeda.
Selleks:
Kui andmed on MS Exceli failis, siis Exceli keskkonnas valida File -> Save as ja sealt
CSV (Comma delimited). Nii tekib fail laiendiga .csv. Fail salvestage kataloogi, mis on
ühtlasi ka R töökataloogiks.
Järgnevalt kontrollige, avades .csv faili Notepadi abil, mis on lahtrite eraldajaks –
eestikeelse Windowsi korral on selleks enamasti ; (semikoolon). Lisaks vaadake, mis on
komakoha eraldajaks – kas koma (,) või punkt (.).
Järgnevas näites loeme sisse faili nimega test.csv, kus väljade eraldajaks on semikoolon
(;) ja komakoha eraldajaks punkt (.). Tekkinud andmestiku nimeks saab test.
test = read.csv("test.csv", sep=";", dec=",")
Püüame aru saada sisestatud rea igast komponendist:
test andmestiku nimi R keskkonnas (asendada endale sobivaga)
= omistamine
read.csv funktsiooni nimi, mis loeb sisse andmed komadega eraldatud tekstifailist
test.csv andmefaili nimi, nii nagu määratud Excelist salvestamisel (asendada
endale sobivaga)
sep=";" väljade eraldajaks (separaator) on semikoolon (kui see oleks koma, siis
peaks kirjutama sep=",")
dec="," komakoha (decimal) eraldajaks on koma (kui see on punkt, siis kirjutame
dec=".")
Sisestades käsurealt ?read.csv, saab lugeda põhjalikku abiinfot käsu kohta.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
3
3 Tutvumine paketiga: mõningad harjutused
3.1 R kui kalkulaator: aritmeetilised operatsioonid
Alustuseks proovige aritmeetilisi operatsioone. Sisestage käsurealt (pärast iga rida
vajutage ENTER):
5*6 5 ja 6 korrutamine
5+6 5 ja 6 liitmine
5*5 + 25
Eelmise käsu tagasisaamiseks käsureale vajutage klahvi „nool üles”. Tagasisaadud
käsku saab täiendada:
(5*5 + 25)/2.5 komakohta tähistab R-is punkt „.”
Arvutustulemusi ja ka kõiki muid objekte saab R-s omistada muutujatele, andes neile
soovitud nime.
X=(5*5 + 25)/2.5 arvutuse tulemus omistatakse muutujale X
X printida ekraanile muutuja X sisu
X*3 muutuja X korrutada 3-ga
NB! R on tõstutundlik, seega X ei ole sama, mis x
Keerulisemad funktsioonid:
X**2 muutuja X astmes 2, võib kasutada ka X^2
X**5 X 5. astmes
sqrt(X) ruutjuur
log(X) naturaallogaritm
log10(X) kümnendlogaritm
exp(X) eksponentfunktsioon (e astmel X)
round(X/3, 2) jagame muutja X kolmega ja ümardame 2. komakohani
. . . ja palju muid funktsioone.
3.2 Vektori (arvujada) sisestamine klaviatuurilt
R on mõeldud eelkõige andmetega töötamiseks.
Kõige lihtsamaks andmestruktuuriks on vektor ehk arvujada. Vektori sisestamiseks saab
kasutada käsku c(). Vektori elemendid (nt arvud) eristatakse koma (,) abil. Järgmine
käsk sisestab 10 inimese pikkused ja salvestab saadud vektori nime pikkus all:
pikkus = c(183, 173, 165, 167, 178, 173, 180, 171, 166, 162)
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
4
Ülesanne. Sisestage vektor “pikkus” nii nagu ülaltoodud näites. Sisestage käsurealt
järgmised käsud ja püüdke aru saada, mida nad teevad.
pikkus vektori pikkus väljastamine ekraanile
pikkus[1] vektori pikkus 1. elemendi väljastamine
pikkus[3] vektori pikkus 3. elemendi väljastamine
1:5 numbrijada 1-5
pikkus[1:5] vektori pikkus 1. kuni 5. elemendi väljastamine
?sort loe käsu sort abifaili
sort(pikkus) vektori pikkus sorteerimine kasvavalt
sort(pikkus, decr=T) vektori pikkus sorteerimine kahanevalt
length(pikkus) vektori pikkus elementide arv ehk arvujada pikkus
Lihtne statistika:
min(pikkus) vektori pikkus miinimum
max(pikkus) vektori pikkus maksimum
mean(pikkus) vektori pikkus aritmeetiline keskmine
median(pikkus) vektori pikkus mediaan
summary(pikkus) vektori pikkus kirjeldavad statistikud
sd(pikkus) vektori pikkus standardhälve
Ülesanne. Sisestage R-i 10 inimese vanused vektorina “vanus”:
20 22 33 19 28 18 20 20 19 25
a) Väljastage ekraanile viimase 5 inimese vanused
b) Arvutage keskmine vanus ja vanuse standardhälve
Mõned graafikute näited:
(Graafikuaken avaneb pärast esimese graafiku tegemist automaatselt. Kui
graafikuaken on juba avanenud, klikkige hiirega käsuaknal ja valige menüüst
Windows –> Tile. Seepeale mahutatakse kõik avatud R-i aknad olemasolevale
ekraanile.)
hist(pikkus) vektori pikkus histogramm
hist(vanus) vektori vanus histogramm
plot(vanus,pikkus) vektorite pikkus ja vanus
hajuvusdiagramm
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
5
text(21,182,"kõige pikem",col=2) viimasele graafikule teksti lisamine. Teksti
lisamiseks antakse ette teksti kekspunkti
koordinaadid, kusjuures esimesele kohale
sisestatakse horisontaaltelje ja teisele kohale
vertikaaltelje koordinaat. Lisatav tekst on
kolmandal kohal jutumärkides. Süntaksiga
col=2 muudetakse listava teksti värv
punaseks. Vaikimisi on see must. R tunneb
ära peamised värvid ka sõnalise sisestusena.
text(25,162,"kõige lühem",col="DarkRed")
title("Vanus ja pikkus") pealkiri viimasele graafikule
4 Töö andmestikega
Ülesanne. Salvestada ÕISist R töökeskkond (ehk R kujul andmestik) and2010.Rdata
oma kataloogi. ÕISis on ka selle andmestiku saamiseks kasutatud ankeet.
R töökeskkonna (ehk R kujul oleva andmestiku) avamiseks valida File -> Load
Workspace ja näidata ära salvestatud faili asukoht.
Nüüd jätkame töötamist andmestikuga katse ja segaduse vältimiseks kustutame varem
tekitatud andmed vanus, pikkus ja X:
rm(vanus,pikkus,X)
R töökeskkonnas asuvaid andmestikke ja teisi objekte saab vaadata käsuga ls().
Andmestikus olevate tunnuste nimesid näeb funktsiooni names kasutades:
names(katse)
summary(katse) andmestiku kõigi tunnuste kohta kirjeldavate
statistikute esitamine
head(katse) ekraanile väljastatakse andmestiku 6 esimest rida
Andmestikku saab vaadata ja muuta tabel-kujul:
edit(katse)
(NB! Töö jätkamiseks aken sulgeda.)
Nii nagu vektori korral, saab ka andmestikust eraldada teatud tingimustele vastavaid
elemente. Arvestada tuleb siin aga sellega, et andmestik on kahemõõtmeline (tabel),
koosnedes ridadest ja veergudest. Seega peab ette andma nii rea- kui veerunumbri.
Reanumber asub esimesel ja veerunumber teisel kohal.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
6
katse[15,5] annab 15. rea 5. elemendi (ehk 5. tunnuse väärtuse 15.
katseisiku)
katse[15,] annab terve 15. rea (15. katseisiku kõik andmed)
katse[,5] annab terve 5. veeru (tunnuse)
Uurige, mida teevad:
katse[130,]
katse[130:135,]
katse[130:135,4:6]
katse[130:135,c(4,6,8)]
Andmestikus olevate tunnuste poole pöördumiseks tuleb kasutada sümbolit $:
katse$vanus
katse$pikkus
mean(katse$pikkus) andmestiku katse tunnuse pikkus keskmine
boxplot(katse$pikkus) andmestiku katse tunnuse pikkus karpdiagramm
Ühe andmestikuga töötades võib kasutada käsku
attach(katse)
mis võimaldab tunnuseid kasutada ilma andmestiku nime ette panemata - mean(pikkus)
Andmestikuga töö lõpetamisel tuleks kirjutada: detach(katse)
5 Kirjeldav statistika R keskkonnas
5.1 Sagedustabelid
Lihtsa sagedustabeli saab table käsu abil:
table(sugu)
table(sugu, koor)
3-mõõtmeline sagedustabel:
ftable(sugu, suhkur, koor)
Suhteliste sageduste tabel:
prop.table(table(sugu, koor))
Suhteliste sageduste tabel, kus iga rida on oma ette tervik (e marginaalsed suhtelised
sagedused):
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
7
prop.table(table(sugu, koor),1)
Suhteliste sageduste tabel, kus iga veerg on oma ette tervik:
prop.table(table(sugu, koor),2)
Marginaalsete reaprotsentide tabel, ümardatud ühe komakohani:
round(100*prop.table(table(sugu, koor),1),1)
5.2 Sagedustabeli graafiline kujutamine: tulpdiagramm
barplot (table(sugu))
barplot(table(sugu, soonud))
Ilusamad pildid (soovitav kasutada ülemist noolt sarnaste käskude tagasi
saamiseks ja muutmiseks).
Teeme uue tunnuse soonud1, kus asendame numbrilised koodid sõnaliste väärtustega
NB! Juba olemasoleva nimega uue tunnuse loomisel R kirjutab vanad
tunnuse ilma hoiatamata üle. Mõnikord võib see põhjustada palju
ümbertegemisi. Seetõttu on mõistlik teha uued tunnused uue nimega.
soonud1 = factor(soonud, labels=c("midagi", "tugev eine", "kerge
eine", "näksimine"))
barplot(table(soonud1), col="pink")
title("Kas ja mida olete täna söönud?")
barplot(table(soonud1),col="lightblue",horiz=T)
barplot(table(sugu, soonud1))
barplot(table(sugu, soonud1), beside=T)
sugu1 = factor(sugu, labels=c("naine","mees"))
barplot(table(sugu1, soonud1), beside=T, legend=T)
barplot(table(sugu1,soonud1),beside=T,legend=T,
col=c("pink","lightblue"))
barplot(table(sugu1,soonud1),beside=T,legend=T,col=1,
density=c(0,30))
Joonis seoste uurimiseks kahemõõtmelises sagedustabelis:
plot(table(sugu1, soonud1),col=T)
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
8
Ülesanne. Leida suhkru (suhkur) ja koore (koor) sagedustabel ning kujutada seda
graafiliselt. (Nii koore kui suhkru korral väärtus 1 tähendab mittelisamist ja 2 tähendab
lisamist.)
5.3 Pideva tunnuse sagedustabel
Pidevat tunnust saab grupeerida funktsiooni cut abil:
vgr = cut(vanus,c(15,20,25,30,35))
table(vgr)
Siin tuleb tähele panna, et c(15,20,25,30,35) annab gruppide ülemised piirid, aga
kindlasti peaks esimene number olema väiksem kui kõige väiksem vaatlus valimis.
Ülesanne. Teha kehakaalu sagedustabel, kus kehakaal on grupeeritud 10 kg kaupa
alates 40 kg-st.
Graafiliseks kujutamiseks pole pidevat tunnust siiski vaja grupeerida – histogrammi
saab teha automaatselt funktsiooni hist abil:
hist(kaal)
hist(kaal, main="Tudengite kehakaal")
Ülesanne. Tehke ka pikkuse histogramm.
5.4 Kirjeldavad statistikud
min(x) tunnuse x miinimum
max(x) tunnuse x maksimum
mean(x) tunnuse x keskväärtus
mean(x, na.rm=T) kui tunnusel x on puuduvaid väärtusi, siis lisatakse
na.rm=T (keskväärtuse ja standardhälbe arvutamisel)
sd(x) tunnuse x standardhälve
length(x) tunnuse x pikkus (vaatluste arv valimis)
sd(x)/sqrt(length(x)) tunnuse x keskväärtuse standardviga
median(x) tunnuse x mediaan
summary(x) miinimum, maksimum, kvartiilid, mediaan ja
keskväärtus
t.test(x) 95% usaldusvahemik keskväärtusele
Ülesanne. Leida tudengite kaalu ja pikkuse kirjeldavad statistikud.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
9
5.5 Analüüs gruppide kaupa
Siin on kasulikud funktsioonid tapply või by, mille argumentideks on analüüsitav
tunnus, grupitunnus ja kasutatav funktsioon:
tapply(kaal, sugu, mean)
by(kaal, sugu, mean)
tapply(kaal, sugu, sd)
by(kaal, sugu, sd)
tapply(kaal, sugu, t.test)
by(kaal, sugu, t.test)
6 Andmetega manipuleerimine
6.1 Loogilised tingimused
Sisestage järgmised käsud ja vaadake, mis on tulemuseks:
x=c(6,1,2,4,2,2,4,5) vektori x loomine
x==2 vastuseks on loogiline (TRUE/FALSE) vektor, kus on
ära märgitud (TRUE) kohad, kus tunnuse x väärtus on
võrdne 2-ga.
sum(x==2) mitmes kohas on tunnuse x väärtus võrdne 2-ga.
x
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
10
Näiteid loogiliste tingimuste kasutamisest:
katse[vanus>30,] vaatame üle 30-aastaste tudengite
andmeid
mean(kaal[sugu1=="naine"]) naiste keskmine kehakaal
(viimane töötab sellisel kujul, sest
sugu1 oli enne defineeritud
faktortunnuseks)
sum(vanus90),]
katse[(pikkus>190)|(kaal>90),]
katse[(pikkus65)&(sugu1=="naine"),]
vanus[vanus!=19]
sum((vanus!=19)&(vanus!=20))
Ülesanne. Leidke, kui palju on:
a) üle 25-aastaseid meestudengeid
b) üle 25-aastaseid naistudengeid
6.2 Teatud kindlate vaatluste kasutamine või väljajätmine
Lisaks loogilistele tingimustele saab vaadelda ka ainult teatud järjekorranumbriga
vaatlusi:
kaal[3] 3. tudengi kaal
kaal[c(3,7,11)] 3., 7. ja 11. tudengi kaal
mean(kaal[-3]) keskmine kaal, kui 3. tudengi kaal on
välja jäetud
mean(kaal[-c(3,7,11)]) keskmine kaal, kui 3., 7. ja 11. tudengi
kaalud on välja jäetud
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
11
2. praktikum
7 Andmete jaotus, usaldusvahemik
Jätkame töötamist andmestikuga katse.
Salvestada ÕISist R töökeskkond (ehk R kujul andmestik) katse2007.Rdata oma
kataloogi. ÕISis on ka selle andmestiku saamiseks kasutatud ankeet.
R töökeskkonna (ehk R kujul oleva andmestiku) avamiseks valida File -> Load
Workspace ja näidata ära salvestatud faili asukoht.
Seal samas on ka nende andmete kogumiseks kasutatud ankeet.
Meeldetuletus: ls() tööfailis olevate objektide loetelu vaatamine
names(katse) andmestikus katse olevate tunnuste nimed
attach(katse) andmestikus katse olevate tunnuste kättesaadavaks muutmiseks
7.1 Töö käsufailiga
Mugavam on käske kirjutada (kopeerida, parandada) mitte käsureale, vaid käsuaknasse. Käsuakna saab File -> New script. Käsuaknasse trükitud käsud saab käivitada kasutades klahvikombinatsiooni crtl+R. Töö lõpetamisel on käsuaken mõistlik salvestada File -> Save. Järgmine kord saab juba salvestatud programmi avada File -> Open script ja tööd pooleli jäänud kohast jätkata.
NB! R ei salvesta automaatselt, seega tuleks vajadusel ka tööfaili (andmestikku) tehtud muudatused salvestada File -> Save workspace.
7.2 Pideva tunnuse jaotuse võrdlemine normaaljaotusega
Kõige lihtsam viis pideva tunnuse jaotuse uurimiseks on kirjeldavad graafikud.
hist(SVR1) histogramm andmestikus katse olevale tunnusele pikkus
qqnorm(SVR1) kvantiil-kvantiil joonis e tõenäosuspaber
andmestikus katse olevale tunnusele pikkus
qqline(SVR1) lisab tõenäosuspaberile teoreetilise sirgjoone, mida mööda punktid peaksid normaaljaotuse korral jooksma
boxplot(SVR1) karpdiagramm andmestikus katse olevale tunnusele pikkus
Kui me tahame kõiki neid jooniseid samaaegselt näha, siis võime par() käsku kasutades jagada graafikuakna osadeks. Esialgsete parameetrite taastamiseks tuleb graafikuaken sulgeda.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
12
par(mfrow=c(1,3)) c(1,3) näitab mitu rida ja veergu jooniseid graafiku-aknasse tuleb. Siin näites 1 rida ja 3 veergu.
Siia järgi käivita uuesti eespool olnud graafikute käsud.
Ülesanne. Uurida tudengite süstoolse ja diastoolse vererõhu, pulsi, mälu ja reaktsioonitesti jaotusi esimesel mõõtmisel. Milliste tunnuste korral me võime oletada normaaljaotuse eelduse kehtimist, milliste korral mitte?
Ülesanne. Uuri abifailidest milliseid graafikuakna parameetreid on üldse võimalik muuta. Kasuta selleks käsku ?par
7.3 Usaldusintervall pidevale tunnusele
95% usaldusintervalli leidmiseks saab kasutada käsku t.test (sama käsuga saab ka gruppide keskmisi omavahel võrrelda, aga sellest järgmisel nädalal).
t.test(SVR1)
95 percent confidence interval:
116.7418 120.1376
Saime kätte 95% usaldusintervalli - vahemiku, milles on 95% tõenäosusega üldkogumi vastav näitaja.
Meeldetuletus: kirjeldavate statistikute leidmine summary(SVR1) kirjeldavad statistikud andmestikus katse olevale
tunnusele pikkus sd(SVR1) tunnuse pikkus standardhälve
Võrdleme mees- ja naistudengite esimesel mõõtmisel saadud süstoolset vererõhku graafiliselt ja kirjeldavate statistikute ja usaldusintervallide abil. Kas meeste ja naiste süstoolne vererõhk on erinev?
tapply(SVR1, sugu, summary) kirjeldavad statistikud meestele ja naistele
(mitmele grupile) korraga boxplot(SVR1 ~ sugu) karpdiagramm rühmades t.test(SVR1[sugu==1]) 95% CI naiste pikkusele. Kandilistes sulgudes
esitatakse kitsendavaid tingimusi (siin näiteks vaadatakse ainult nende inimeste süstoolset vererõhku, kellel sugu=1 ehk naised).
t.test(SVR1[sugu==1])$conf.int 95%CI naiste pikkusele. Jätame R väljundtrükist alles ainult usaldusintervalli.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
13
tapply(SVR1, sugu, t.test) süstoolse vererõhu 95% usaldusintervalli tunnuse sugu gruppides
Teeme meeste ja naiste süstoolset vererõhku võrdlevad histogrammid – püüa igast käsu
komponendist aru saada, vajadusel kasuta helpi. par(mfrow=c(2,1))
hist(SVR1[sugu==1], xlim=c(90, 170), main="Naiste SVR", xlab="mmHg")
hist(SVR1[sugu==2], xlim=c(90, 170), main="Meeste SVR", xlab="mmHg")
Ülesanne. Leia ka mees- ja naistudengite diastoolsele vererõhule, pulsile ja mälule 95% usaldusintervallid. Proovi mõnda näitajat iseloomustada ka graafiliselt. Milliseid järeldusi teete?
7.4 Usaldusintervall protsendile
Mittepidevate ehk kategooriliste tunnuste jaotuse kirjeldamiseks saab kasutada sagedustabeleid.
Meeldetuletus: table(sugu) soo sagedustabel
prop.table(table(sugu)) suhteliste sageduste tabel round(100*prop.table(table(sugu)),1) suhteliste sageduste tabel, mis on
arvutatud protsentideks ja ümardatud esimese komakohani.
Protsendile 95% usaldusintervalli leidmiseks kasutatakse käsku prop.test. Leiame meeste hulgale (sugu=2) usaldusintervalli. prop.test(36, 141) esimesele kohale kirjutatakse sündmuste arv ja teisele
grupi suurus Ülesanne. Leia suitsetavate tudengite (tunnus suits>1) protsent ja 95% usaldusintervall sellele.
7.5 Uus tunnus andmestikus
Näide a) Leidame nende tudengite protsent ja 95% usaldusvahemik protsendile, kelle
näitajad (vererõhk, pulsisagedus, mälutesti ja reaktsioonitesti tulemus) peale kohvijoomist muutusid kõrgemaks.
b) Leidame 95% usaldusintervall näitajate (vererõhk, pulsisagedus, mälutesti ja reaktsioonitesti tulemus) muutusele. Kas see erineb 0-st?
Lahendus: Tuleb andmestikku luua uued tunnused, mis oleksid peale ja enne kohvijoomist tehtud mõõtmiste vahed.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
14
Näiteks: SVR= SVR2-SVR1 Edasi saame oma eesmärgi täita uut tunnust analüüsides. NB! Enne andmestiku muutmist (uue tunnuse tegemist) tuleb andmestik mitteaktiivseks teha. detach(katse)
Uue tunnuse tegemine on väga lihtne:
katse$SVRmuut = katse$SVR1 - katse$SVR2
Kuna andmestik on mitteaktiivseks tehtud, siis tunnuste kasutamiseks peab tunnuse nime ees osutama ka andmestiku nimele (katse$). Andmestiku edasiseks analüüsimiseks teeme andmestiku taas aktiivseks: attach(katse)
Leiame nende tudengite protsendi ja 95% usaldusvahemik protsendile, kelle süstoolne vererõhk tõusis peale kohvijoomist. table(SVRmuut>0)
FALSE TRUE
90 49
prop.test(49, 139)
Küsimus. Kui suurel hulgal tudengitest vererõhk tõusis peale kohvi joomist? Leiame 95% usaldusintervalli süstoolse vererõhu muutusele. t.test(SVRmuut)
Küsimus. Kas tudengite keskmine vererõhk tõusis või langes peale kohvi joomist? Ülesanne. Leida näite eeskujul:
a) tudengite protsent ja 95% usaldusvahemik protsendile, kelle pulsisagedus, mälutesti ja reaktsioonitesti tulemus peale kohvijoomist muutusid kõrgemaks.
b) samadele näitate muutuse keskmine ja 95% usaldusintervall. Kas muutus erineb 0-st?
Selgita tulemusi.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
15
3. praktikum
Jätkame töötamist andmestikuga katse.
Salvestada ÕISist R töökeskkond (ehk R kujul andmestik) katse2007.Rdata oma
kataloogi. ÕISis on ka selle andmestiku saamiseks kasutatud ankeet.
R töökeskkonna (ehk R kujul oleva andmestiku) avamiseks valida File -> Load
Workspace ja näidata ära salvestatud faili asukoht.
Seal samas on ka nende andmete kogumiseks kasutatud ankeet.
Meeldetuletus: ls() tööfailis olevate objektide loetelu vaatamine
names(katse) andmestikus katse olevate tunnuste nimed
attach(katse) andmestikus katse olevate tunnuste kättesaadavaks muutmiseks
7.6 Lisapakettide kasutamine
Lisaks põhipaketile on R-l olemas palju erinevaid lisasid. Lisasid saab Internetist alla
laadida. Selleks valida menüüst Packages -> Install package... Seejärel avaneb uues
aknas riikide loetelu, kus on olemas server R lisapakettidega. Valige endale lähim riik.
Seejärel avaneb lisapakettide (laienduste) loetelu. Valige sealt omale sobiv pakett ja
vajutage OK.
Paketis olevate funktsioonide kättesaadavaks tegemiseks tuleb tõmmatud pakett
käivitada:
library(paketinimi)
või menüüst Packages -> Load package
NB! Iga kord kui olete R uuesti avanud ja soovite uuesti lisapakette
kasutada tuleb need R kättesaadavaks teha.
Tutvume nüüd paketiga Epi, mis on mõeldud epidemioloogiliste analüüside tegemiseks.
Ülesanne. Tõmmake endale R laiendus Epi ja käivitage see käsuga library(Epi)
7.7 Ilusamad jaotustabelid
Paneme tunnuste sugu ja soonud väärtustele nimed.
detach() enne andmete muutmist laseme andmestiku lahti
katse$soonud1 = factor(katse$soonud, labels=c("midagi", "tugev
eine", "kerge eine", "näksimine"))
katse$sugu1 = factor(katse$sugu, labels=c("naine", "mees"))
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
16
attach(katse)
table(sugu1, soonud1) viimati söödud toidu ja soo ühisjaotus
prop.table(table(sugu1, soonud1)) suhteliste sageduste tabel
round(100*prop.table(table(sugu1, soonud1), margin=1),1)
viimati söödud eine protsentuaalne
jaotus meestel ja naistel eraldi;
ümardatud esimese komakohani
Laienduses Epi on suhteliste sageduste leidmiseks funktsioon pctab. Väljastatakse
tabeli protsentuaalne jaotus, koos ääresagedusega, kas reatunnuse (margin=1) või
veerutunnuse järgi (margin=2). Ette saab anda ka soovitava komakohtade arvu
(dec=...)
pctab(table(sugu1, soonud1), margin=2, dec=1)
pctab(table(sugu1, soonud1), margin=1, dec=1)
A = pctab(table(sugu1, soonud1), margin=2, dec=1)
addmargins(A, 1) lisatakse ka vastav äärejaotus
addmargins(A, 1:2)
7.8 Ilusamad kirjeldavate statistikute tabelid
Kirjeldavaid statistikuid saame käskude summary(), mean(), sd(), min(), max()
jne abil. Erinevates gruppides võrdluste tegemiseks kasutame käsku tapply()
Näide: mean(pikkus) tapply(pikkus, sugu, mean) round(cbind("keskmine"=mean(katse[,7:9]),"sd"=sd(katse[,7:9])),1)
Paketiga Epi on kaasas funktsioon stat.table(), mis lubab natuke ilusamaid
kirjeldavate statistikute tabeleid teha. Uuri läbi järgmised käsud:
stat.table(sugu,mean(pikkus),data=katse)
stat.table(sugu1,mean(pikkus),data=katse)
stat.table(sugu1,mean(pikkus),data=katse, margins=1)
stat.table(sugu1,contents=list(count(),
percent(sugu1),mean(pikkus)),data=katse, margins=1)
stat.table(sugu1, contents=list("n"=count(),"%"=percent(sugu1),
"keskmine"=mean(pikkus)) ,data=katse, margins=1)
Ülesanne. Loe ja katseta funktsiooni stat.table abifaili. Kasuta selleks käsku
?stat.table
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
17
8 Gruppide võrdlemine
8.1 Kahe pideva tunnuse keskmiste võrdlemine, t-test
t.test on funktsioon, mis leiab keskväärtuse 95% usaldusvahemiku, kui antud on üks
tunnus ja sooritab 2 valimi t-testi kui antud on 2 tunnust või ühe tunnuse väärtused 2
grupis.
t.test(SVR1) ühe valimi t-test, väljastatakse keskmise
usaldusintervall
t.test(SVR1)$conf.int ainult keskmise usaldusintervall
t.test(SVR1, mu=140) testime hüpoteesi HA: keskmine SVR ≠140
t.test(SVR1~sugu) sõltumatute valmite t-test ; testime
alternatiivset hüpoteesi HA: meeste ja naiste
keskmine süstoolne vererõhk on erinev
t.test(SVR1[vanus==20]~sugu[vanus==20])
sõltumatute valmite t-test; testime alternatiivset
hüpoteesi HA: 20 aastaste meeste ja naiste
keskmine süstoolne vererõhk on erinev
Samuti saab teha paaris t-testi (et võrrelda samadel objektidel tehtud mõõtmisi):
t.test(SVR1, SVR2, paired=T) testime , kas vererõhk muutus pärast
kohvijoomist
8.2 Keskmiste graafiline võrdlemine
Gruppide keskmiste illustreerimiseks joonistame graafiku, kuhu on kantud mõlema grupi keskmised ja usaldusintervallid. Selleks tõmbame R-le lisapaketi gplots.
Ülesanne. Laadige alla endale R laiendus gplots ja käivitage see käsuga
library(gplots)
Keskmiste ja usaldusintervallide joonistamiseks kasutame käsku plotmeans. Uuri, mida see käsk teeb:
?plotmeans
Nüüd joonistame keskmiste ja 95% usaldusintervallide graafiku süstoolse vererõhu jaoks:
plotmeans(SVR1~ sugu, legends=c("naine", "mees"), connect=F)
Vaata saadud joonist – kas gruppide keskmised võivad olla omavahel oluliselt erinevad? Kas graafikult nähtav tulemus on kooskõlas t-testi tulemusega?
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
18
8.3 Kahe tunnuse keskmiste võrdlemine, Wilcoxoni test
Täpselt samamoodi töötab Wilcoxoni test, mittenormaaljaotusega andmete võrdlemi-
seks, ainult et t.test asemele tuleb kirjutada wilcox.test.
wilcox.test(SVR1~sugu) sõltumatute valmite keskväärtuste võrdlemine
Wilcoxoni astaktesti e Mann-Whitney test abil;
testime alternatiivset hüpoteesi HA: meste ja
naiste süstoolse vererõhu jaotus on erinev
wilcox.test(SVR1, SVR2, paired=T) testime, kas vererõhud enne ja pärast
kohvijoomist on erinevad – sõltuvate valimite
Wilcoxoni märgitest.
Ülesanne. Testida hüpoteesi, et mees- ja naistudengite pulss on erinev. Jaotus-
graafikute abil otsustada sobilik test: t-testi või Mann-Whiteny test. Illustreerida
gruppidevahelist erinevust ka sobiva graafikuga (keskmise ja usaldusintervalli graafik
või karpdiagramm).
8.4 Rohkem kui kahe grupi keskmiste võrdlemine, parameetriline meetod
Kui mittearvulisel tunnusel on rohkem kui 2 võimalikku väärtust, siis puutume kokku mitmese testimise probleemiga. Selle lahenduseks on
a) dispersioonanalüüs (ANOVA), mille abil testime hüpoteesi, et meie gruppide hulgas leidub vähemalt 2, mis on üksteisest erinevad.
b) gruppide paariviisilised võrdlused koos Bonferroni parandusega.
Testime, kas pulss1 on erinev vastavalt viimase 2 tunni jooksul söödud toidule (1 – mitte midagi, 2 - tugev eine, 3 – kerge eine , 4 – näksimine)
anova(lm(pulss1~ as.factor(soonud) )) et R aru saaks, et soonud on faktortunnus, siis kirjutatakse tunnuse ümber as.factor()
plotmeans(pulss1~ as.factor(soonud)) kujutame graafiliselt Kuna p
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
19
8.5 Rohkem kui kahe grupi keskmiste võrdlemine, mitteparameetriline
meetod
Kui mittearvulisel tunnusel on rohkem kui 2 võimalikku väärtust ja pidev tunnus ei ole normaaljaotusega, siis kasutame testimiseks Kruskal-Wallise testi.
kruskal.test(pulss1~ as.factor(soonud))
Kui p
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
20
4. praktikum
9 Seose hindamine sagedustabelis
9.1 χ2-test, Fisheri test
Tavalise χ2-testi teeb funktsioon chisq.test
chisq.test(table(grupp)) Kas kofeiiniga ja kofeiinita gruppi sattus
randomiseerimise tagajärjel erinev hulk
inimesi?
chisq.test(table(sugu, soonud)) kas sugu ja viimase 2 tunni jooksul söödu
on omavahel seoses ehk kas meeste ja
naiste hulgas on viimase 2 tunni jooksul
söödud toidu jaotus erinev?
Lõpus antud hoiatusse (Warning) tuleb tõsiselt suhtuda – see antakse siis, kui hii-ruut
testi eeldused ei ole täidetud ehk mõnes oodatavate väärtuste lahtris on liiga väike arv
(
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
21
Vaatame oodatavate väärtuste tabelit:
chisq.test(table(sugu, malu1))$expected
Tabelis on oodatavate väärtuste arvud, mis on teoreetilised ja arvutatud mälutesti ja soo
jaotuste põhjal ning võivad seega olla ka komakohtadega.
Jagame mälutesti tulemused kolmeks: kuni 8, 8 ning 9 ja rohkem punkti. Ümber-
kodeerimisel saame kasutada funktsiooni cut(). Lõikepunktideks (breaks) antakse
ette iga uue klassi algus (ja viimase klassi lõpp – tavaliselt maksimumväärtus+1).
katse$uusmalu1 =cut(malu1, breaks=c(5,8,9,13), labels=c("kuni
7","8", "9 kuni"), right=F)
detach(katse)
attach(katse)
chisq.test(table(sugu, uusmalu1))
Ülesanne
ÕIS-is on üleval andmestiku saamiseks kasutatud ankeet. Ava see ja vaata, mida
tunnuste koodid tähendavad (et teha kindlaks, millised tunnuste väärtused on
loogiliselt kombineeritavad) .
1. Kas mälutestide tulemused (esimene ja teine) on seotud magatud tundide arvuga?
2. Kas kohvi tavaline mõju (tunnus k_moju) on seotud kuidagi tavalise kohvijoomi-
se sagedusega (k_sagedus)?
9.3 Šansisuhe, riskisuhe 2x2 tabelis
prop.test() protsendi usaldusvahemik, kahe või enama protsendi võrdle-
mine, 2x2 tabelis annab ka kahe protsendi vahe usaldusvahe-
miku
fisher.test() annab 2x2 tabelis šansisuhte ja usaldusvahemiku
twoby2() lisapaketiga Epi kaasas olev 2x2 tabeli analüüsimise vahend
Leiame, kas neil, kes panevad kohvi sisse suhkrut on ka suurem šanss kohvi sisse koort
panna.
table(suhkur, koor)
fisher.test(table(suhkur, koor))
Aga võib ka nii:
library(Epi)
twoby2(table(suhkur, koor))
Interpreteeri tulemust!
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
22
Ülesanne.
1. Tee uus tunnus, mis on 1, kui mälutesti tulemus paranes (meelde jäetud sõnade arv
suurenes) ja 2, kui jäi samaks või halvenes. Võrdle, kas mälutesti paranemisel on
seos katses joodud kohvi tüübiga (kofeiiniga vs kofeiinivaba)
2. Tee sama reaktsioonitesti muutuse kohta (nüüd on parem tulemus väiksem skoor e
lühem reaktsiooniaeg).
9.4 Tabeli sisestamine klaviatuurilt
R-ga saab sagedustabeleid analüüsida ka koondandmete pealt ehk saame sisestada R-i
sagedustabeli ja analüüsida seda sarnaselt eelnevaga. Uuri, mida teevad järgnevad
käsud ja püüa neist aru saada.
tabel = matrix(c(1,2,3,4), ncol=2, nrow=2)
tabel
tabel= matrix(c(1,2,3,4), ncol=2, nrow=2, byrow=T)
tabel
colnames(tabel)=c(„veerg1”, „veerg2”)
rownames(tabel)=c(„rida1”, „rida2”)
tabel
fisher.test(tabel)
twoby2(tabel)
10 Korrelatsioon ehk seos kahe pideva tunnuse vahel
Kahte pidevat tunnust on kena iseloomustada hajuvusdiagrammiga.
plot(pikkus, kaal)
Kahe pideva tunnuse omavahelise seose tugevust saame iseloomustada Pearsoni
korrelatsioonikordajaga.
cor(pikkus, kaal)
Lisame eelmisele graafikule ka korrelatsioonikordaja tekstiliselt (graafik peab enne
joonistatud olema).
text(165, 100, paste("r=", round(cor(pikkus, kaal),2)))
Korraga saame leida ka rohkem kui ühe pideva tunnuse korrelatsioonikordaja. Tulemu-
seks on korrelatsioonimaatriks (mis on sümmeetriline, peadiagonaalil on ühed – tunnu-
se korrelatsioon iseendaga on 1)
cor(cbind(pikkus, kaal, pulss1, SVR1, DVR1))
Ülesanne. Millised tunnused on selles maatriksis omavahel enam seotud?
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
23
Ka korrelatsiooni statistilist olulisust saab testida (küll ainult 2 tunnuse vahel). Nullhü-
poteesiks on, et kahe tunnuse vahel puudub igasugune seos (korrelatsioonikordaja r=0)
cor.test(pikkus, kaal)
10.1 Käsu cor lisaparameetrid: puuduvad väärtused, mitteparameetrilised
kordaja
Kui tunnustes on puuduvaid väärtusi, siis tuleb eraldi ette öelda, mida teha puuduvate
väärtustega (argument use=).
use = "all.obs" kasutatakse kõiki vaatlusi
use= "complete.obs", kasutatakse ainult neid väärtusi, mis kõigil korre-
latsioonimaatriksis olevatel tunnustel on olemas
use= "pairwise.complete.obs". kasutatakse ainult neid väärtusi mis on tunnustel
paariviisi olemas
Kui tunnuste normaaljaotuse eeldus pole täidetud, siis leitakse mitteparameetrilised
korrelatsioonikordajaid: Spearmani korrelatsioonikordaja või Kendalli τ. Ka selle saab
eraldi ette öelda lisaparameetriga method.
method = "pearson" Pearsoni korrelatsioonikordaja (normaaljaotusega tunnustele) method = "kendall" Kendalli τ method = "spearman" Spearmani korrelatsioonikordaja
Loe ka abifailidest korrelatsiooni kohta ?cor
Ülesanded (mõeldes ka varasemale materjalile)
1. Leia, kas pulsi kas pulsi ja vererõhu kõrgemad tasemed enne kohvijoomist on seotud
ka kõrgemate pulsi ja vererõhu tasemetega peale kohvijoomist. Mõtle, milliseid
variante on selle seose testimiseks?
2. Leia ühine suur korrelatsioonimaatriks kõikide pidevate tunnuste kohta. Otsusta
millist korrelatsioonikordajat on õige leida. Interpreteeri tulemusi.
Milliste tunnuste vahel ja kui suur on kõige tugevam negatiivne seos? Milline on
kõige tugevam positiivne seos?
3. Kas esimese ja teise mälutesti ning esimese ja teise reaktsioonitesti vahel on tugevam
seos meestel või naistel? Interpreteeri tulemust. Kas need seosed on olulised?
4. Võrdle erinevates kohvigruppides ka pulssi, süstoolset ja diastoolset vererõhku enne
ja pärast kohvijoomist. Leia õige test!
5. Tee uued tunnused pulsimuudu ja vererõhumuudu kohta (esimene mõõtmine – teine
mõõtmine) ja võrdle, kas keskmised muutused on erinevad erinevates
kohvigruppides.
6. Uuri, kas väljundtunnuste muutused on seotud suhkru lisamisega joodud kohvi sisse.
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
24
INDEKS 95% usaldusintervall
keskmisele, 12
protsendile, 13
ANOVA, 18 as.factor, 18
attach, 6
barplot, 7
Bonferroni parandus, 18 boxplot, 6
by, 9
byrow, 22
chisq.test, 20
colnames, 22
cor, 22, 23
cor.test, 23
cut, 21
detach, 14
dispersioonanalüüs, 18 factor, 7
ftable, 6
gplots, 17
hajuvusdiagramm, 22 hist, 4
histogramm, 4 karpdiagramm, 12 keskmiste võrdlemine, 17 korrelatsioonikordaja
Kendalli τ, 23 mitteparameetriline, 23
Pearsoni, 22
Spearmani, 23
korrelatsioonimaatriks, 22 kruskal.test, 19
Kruskal-Wallise testi, 19 käsufail, 11 length, 4, 8
library, 15
lisapaketid, 15 Mann-Whitney test, 18 matrix, 22
mean, 4, 8
mfrow, 13
mitmese testimise probleem, 18 na.rm, 8
ncol, 22
nrow, 22
oodatavad väärtused, 20 par
mfrow, 12
paste, 22
pctab, 16
plot, 4, 7, 22
plotmeans, 17
prop.table, 6
prop.test, 13, 19
puuduvad väärtused, 8 qqline, 11
qqnorm, 11
rownames, 22
sagedustabel, 8, 15 1-mõõtmeline, 6
2-mõõtmeline, 6
3-mõõtmeline, 6
suhtelised sagedused, 6
sd, 4
sort, 4
standardhälve, 4, 8 summary, 4, 8
t.test, 8, 12
table, 6, 8
tapply, 9, 12
text, 5
title, 5
t-test 2-valimi, 17
paaris, 17
ühe valimi, 17
tulpdiagramm, 7 twoby2, 21
Wilcoxon, 18 astaktest, 18
märgitest, 18
χ2-test, 20
2010 Biostatistika I: Sissejuhatus tarkvarapaketti R
25
Sisukord
1 Sissejuhatus ............................................................................................................................ 1 1.1 Kuidas saada endale R? ................................................................................................. 1 1.2 Kuidas alustada? ............................................................................................................ 1
2 Andmete viimine MS Excelist R-i ....................................................................................... 2 3 Tutvumine paketiga: mõningad harjutused ...................................................................... 3
3.1 R kui kalkulaator: aritmeetilised operatsioonid ........................................................ 3 3.2 Vektori (arvujada) sisestamine klaviatuurilt .............................................................. 3
4 Töö andmestikega .................................................................................................................. 5 5 Kirjeldav statistika R keskkonnas ....................................................................................... 6
5.1 Sagedustabelid ................................................................................................................ 6 5.2 Sagedustabeli graafiline kujutamine: tulpdiagramm................................................ 7 5.3 Pideva tunnuse sagedustabel ........................................................................................ 8 5.4 Kirjeldavad statistikud .................................................................................................. 8 5.5 Analüüs gruppide kaupa ............................................................................................... 9
6 Andmetega manipuleerimine .............................................................................................. 9 6.1 Loogilised tingimused ................................................................................................... 9 6.2 Teatud kindlate vaatluste kasutamine või väljajätmine ......................................... 10
7 Andmete jaotus, usaldusvahemik ..................................................................................... 11 7.1 Töö käsufailiga .............................................................................................................. 11 7.2 Pideva tunnuse jaotuse võrdlemine normaaljaotusega .......................................... 11 7.3 Usaldusintervall pidevale tunnusele ......................................................................... 12 7.4 Usaldusintervall protsendile ....................................................................................... 13 7.5 Uus tunnus andmestikus............................................................................................. 13 7.6 Lisapakettide kasutamine ........................................................................................... 15 7.7 Ilusamad jaotustabelid ................................................................................................ 15 7.8 Ilusamad kirjeldavate statistikute tabelid ................................................................ 16
8 Gruppide võrdlemine .......................................................................................................... 17 8.1 Kahe pideva tunnuse keskmiste võrdlemine, t-test ................................................ 17 8.2 Keskmiste graafiline võrdlemine ............................................................................... 17 8.3 Kahe tunnuse keskmiste võrdlemine, Wilcoxoni test ............................................. 18 8.4 Rohkem kui kahe grupi keskmiste võrdlemine, parameetriline meetod ............. 18 8.5 Rohkem kui kahe grupi keskmiste võrdlemine, mitteparameetriline meetod .... 19 8.6 Kahe valimiprotsendi võrdlemine ............................................................................. 19
9 Seose hindamine sagedustabelis ....................................................................................... 20 9.1 χ2-test, Fisheri test ...................................................................................................... 20 9.2 Väärtuste summeerimine ............................................................................................ 20 9.3 Šansisuhe, riskisuhe 2x2 tabelis................................................................................. 21 9.4 Tabeli sisestamine klaviatuurilt ................................................................................. 22
10 Korrelatsioon ehk seos kahe pideva tunnuse vahel .................................................... 22 10.1 Käsu cor lisaparameetrid: puuduvad väärtused, mitteparameetrilised kordaja 23