-
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