Tänases praktikumis

Tänased teemad:

  • Hüpoteeside testimine: parameetrilised testid
    • t-test (kaks rühma)
  • Hüpoteeside testimine: mitteparameetrilised testid
    • Wilcoxoni astaksummatest (= Manni-Whitney U-test) (kaks rühma)

Kasutame andmestikke kysimustik_2020.RData ja kandidaadid.RData

load("kysimustik_2020.RData")
load("kandidaadid.RData")

Parameetrilised testid

Parameetrilisteks testideks nimetatakse statistilisi teste, mis eeldavad, et uuritavad andmed on mingi kindla jaotusega. Näiteks normaaljaotus on parameetriline jaotus, kuna selle puhul piisab paari parameetri (keskväärtuse ja standardhälbe) hindamisest, et määrata võrdlemisi täpselt kogu populatsiooni. Teades neid paari parameetrit, võib vastata mistahes küsimusele tunnuse jaotuse kohta.

Sobiva testi valik

  • Kas uuritav tunnus on arvuline või nominaalne?
  • Kui uuritav tunnus on nominaalne, siis mitu taset tal on?
  • Kui uuritav tunnus on arvuline, siis kas ta on normaaljaotusega?
  • Kas andmepunktid on üksteisest sõltumatud, st mis tahes kaks vaatlust ei ole omavahel seotud (nt pärit samalt katseisikult)?
  • Kas seletav tunnus on arvuline või nominaalne?
  • Kui seletav tunnus on nominaalne, siis mitu taset tal on?
  • Kas on mitu seletavat tunnust?



Kahe grupi keskmiste võrdlemiseks sobib nt t-test, aga seda teatud tingimustel.

T-testi eeldused

T-test sobib siis, kui:

  • uuritav tunnus on arvuline;
  • seletav tunnus kategoriaalne ning sellel on kaks taset (jagab uuritava tunnuse väärtused sisuliselt kahte rühma);
    • aritmeetilise keskmise võrdlemine kahes grupis (kas kaks gruppi on samast populatsioonist) või võrdlemine mingi konstandiga (kui teame mingit populatsiooni parameetrit, nt kõikide Tabasalu meeste keskmist pikkust, Tammsaare teoste keskmist sõnade pikkust, komplekssust vmt, siis saame kontrollida, kas meie valim pärineb samast populatsioonist);
  • uuritav tunnus on normaaljaotusega või kummaski grupis on vaatluste arv > 30;
  • valim on juhuslik st uuritavad subjektid on valimisse valitud juhuslikult;
    • sealjuures võib tegu olla sõltumatute mõõtmistega või sõltuvate kordusmõõtmistega.

Mida tähendab ‘sõltumatud mõõtmised’?

  • soorituskatse, kus iga katseisiku kohta on üks sooritus/mõõtmine;
  • korpusel põhinevad mingi keelenähtuse sagedused, iga teksti kohta üks;
  • arheoloogilised leiud, kõik ühest leiukohast / igast leiukohast üks;
  • värsside arv ühe autori luuletustes / igalt autorilt üks näide;

Mõõtmised ei ole rühma sees sõltumatud, kui nt

  • soorituskatses on 10 katseisikut ja iga katseisik vastab 20 küsimusele;
  • korpuses, kus on mitu erinevat teksti ja igas tekstis on mitu lauset, hinnatakse lausete keskmist pikkust;

Kordusmõõtmistega test:

  • Rühma sees on mõõtmised sõltumatud, aga võrreldavate rühmade vahel on kokku kuuluvad mõõtmiste paarid. Näiteks soorituskatse, kus testitakse sooritust kahes erinevas tingimuses, erinevatel ajahetkedel jne.

Testime normaaljaotust

Oletame, et tahame vaadata, kas ülikoolis õpitud aastate arv erineb nende hulgas, kel on kvantitatiivsete meetoditega varasemaid kogemusi, ja nende hulgas, kellel ei ole. Uuritav tunnus on arvuline ja seletav/grupeeriv kategoriaalne, seega on esimesed kaks eeldust täidetud. Samuti on täidetud valimi juhuslikkuse nõue. Testime nüüd normaaljaotust.

Histogramm

Histogrammi vaadates näeb (enam-vähem), kas jaotus on sümmeetriline. See ei ole mingi lollikindel test, aga annab esmase ülevaate.

hist(kysimustik$kaua_opid)

Normaaljaotuse puhul peaks kõige kõrgem tulp jääma joonise keskele ning tulpade kõrgus kahanema enam-vähem ühtlaselt mõlema skaala äärmuse suunas. Sellel joonisel ei ole seega väga tõenäoliselt tegu normaaljaotusega.

Kvantiilide võrdlemine

Üks võimalus on võrrelda andmete kvantiiljaotust. Kas teoreetiline ja tegelik jaotus lähevad kokku?

qqnorm(kysimustik$kaua_opid)
qqline(kysimustik$kaua_opid)

Vasakul, y-teljel näeme tegelikke kvantiile: ehkki mõõtmiste skaala on 1st 25ni, jääb suurem osa andmepunkte 3,5 ja 8 vahele. Sellise jagunemise puhul eeldaks normaaljaotus (qq-joonel), et 95% andmetest jääks keskmisest +-2 standarhälbe kaugusele (x-teljel) ehk et andmepunktide skaala ulatus oleks antud juhul ülemisest otsast palju väiksem ning ulatuks alumises otsas palju kaugemale (miinuspoolele).

# Tegelikud kvantiilid
# 50% andmetest jääb 3.5 ja 8.0 vahele
quantile(kysimustik$kaua_opid)
##   0%  25%  50%  75% 100% 
##  1.0  3.5  5.0  8.0 25.0
# Tegelike andmete keskmine
mean(kysimustik$kaua_opid)
## [1] 6.358974
# Tegelike andmete standardhälve
sd(kysimustik$kaua_opid)
## [1] 4.798504
# Selline näeks välja kvantiiljaotuse graafik 
# siis, kui sama keskmise ja standardhälbega 
# sama suur andmestik oleks normaaljaotusega.
qqnorm(rnorm(n = 39, 
             mean = mean(kysimustik$kaua_opid), 
             sd = sd(kysimustik$kaua_opid)))
qqline(rnorm(n = 39,
             mean = mean(kysimustik$kaua_opid), 
             sd = sd(kysimustik$kaua_opid)))

Shapiro-Wilk’i test

Shapiro-Wilk’i test hindab tõenäosust, et valim on pärit normaaljaotusega populatsioonist. Testi nullhüpotees on, et valim on pärit normaaljaotusega populatsioonist. Tulemuse tõlgendamisel on tavaliselt α = 0.05 ehk et p > 0.05, võib otsustada, et on normaaljaotus (me ei saa nullhüpoteesi ümber lükata), kui p < 0.05, siis ei ole (on alust vastu võtta alternatiivne hüpotees: valim ei ole pärit normaaljaotusega populatsioonist).

shapiro.test(kysimustik$kaua_opid)
## 
##  Shapiro-Wilk normality test
## 
## data:  kysimustik$kaua_opid
## W = 0.83623, p-value = 5.146e-05

Nagu ka joonistelt juba näha oli, ei ole ülikoolis käidud aastate arv normaaljaotusega: p-väärtus on 5.1458103^{-5} ehk on 0.0051458-protsendiline tõenäosus, et saaksime sama suure (enamasti see tähendab lihtsalt, et nullist erineva) statistiku väärtuse juhul, kui nullhüpotees ikkagi kehtib. See on väga väike tõenäosus, seega hülgame nullhüpoteesi.

Kui ei ole normaalajaotus, mis siis saab?

  • Ürita andmeid normaliseerida VÕI
  • kasuta mitteparameetrilist testi.

Enamasti, kui andmed on paremale kallutatud (right-skewed) ehk väikeseid väärtusi on rohkem kui suuri ning mood ja mediaan on seega väiksemad kui aritmeetiline keskmine (mida tuleb ette tihti, kui mõõdame millegi kestust, pikkust vms suurust), siis võib jaotuse normaliseerida see, kui andmed logaritmida. Logaritmimine on astendamise pöördtehe ehk kui astendades leiame mingi väärtuse \(a^b=c\), siis logaritmides leiame hoopis astendaja \(log_{a}c=b\). Näiteks \(2^3=8\) (ehk 2*2*2=8)ja \(log_28=3\). Mingeid väärtusi logaritmides teisendame need seega mingi kokkulepitud väärtuse (nt e, 10, 2 vm) astendajateks ning vähendame seeläbi suurte erinevuste mõju väärtuste vahel.

# Võtame nt 2 arvu: 10 ja 100.
# Teine on esimesest 10 korda suurem.
100/10
## [1] 10
# Kui mõlemat logaritmida,
# on erinevus ainult kahekordne.
log(100)/log(10)
## [1] 2

Logaritmimiseks on R-is niisiis käsk log(), mis vaikimisi kasutab kokkulepitud väärtuse ehk alusena (valemis \(a\)) Euleri arvu e, mis on 2.71828. Võib kasutada ka funktsiooni log2(), mille alus on 2, log10(), mille alus on 10, või kui andmetes on väärtus 0, siis log1p(). Viimane liidab igale väärtusele 1 juurde. Seda seepärast, et logaritm mis tahes alusel arvust 0 on negatiivne lõpmatus, millega pole midagi pihta hakata. Logaritmida saab ainult positiivseid arve!

log(0)
## [1] -Inf

Vaatame nüüd ülikoolis õpitud aastate logaritmitud väärtuste jaotust. Kui õpitud aastate mediaanväärtus on 5, siis selle logaritm oleks 1.6094379, sest 2.71828^1.6094379 on 4.9999946.

hist(log(kysimustik$kaua_opid))

qqnorm(log(kysimustik$kaua_opid))
qqline(log(kysimustik$kaua_opid))

shapiro.test(log(kysimustik$kaua_opid))
## 
##  Shapiro-Wilk normality test
## 
## data:  log(kysimustik$kaua_opid)
## W = 0.95423, p-value = 0.1141

Logaritmimine aitas meil saavutada uuritava tunnuse normaaljaotuse: kuna p > 0.05, siis ei saa me lükata ümber nullhüpoteesi, mille kohaselt andmed on normaaljaotusega.

Ühe valimiga t-test

Ühe valimiga testi teeme siis, kui teame mingit populatsiooni parameetrit (t-testi puhul aritmeetilist keskmist) ja tahame teada, kas meie valim kuulub selle parameetriga iseloomustatavasse populatsiooni. Proovime hüpoteetilise näite peal. Näiteks oletame, et me teame, et mingis vanuses on koolilaste pikkus keskmiselt poolteist meetrit ja siis on meil üks klassitäis lapsi ja tahame kontrollida, kas nad pikkuse poolest sobituvad sellesse vanuserühma:

# 32 last keskmise pikkusega 1.5 meetrit
# ja standardhälbega 0.1 meetrit.
pikkus <- rnorm(32, 1.5, 0.1)

# mu tähistab parameetrit, mille osas
# valimit testime. Antud juhul on see
# pikkuse aritmeetiline keskmine 1.5 meetrit.
t.test(pikkus, mu = 1.5)
## 
##  One Sample t-test
## 
## data:  pikkus
## t = 1.0626, df = 31, p-value = 0.2962
## alternative hypothesis: true mean is not equal to 1.5
## 95 percent confidence interval:
##  1.484611 1.548868
## sample estimates:
## mean of x 
##  1.516739

Testist saame sisuka/alternatiivse hüpoteesi kohta lugeda, et alternative hypothesis: true mean is not equal to 1.5 (keskmine ei võrdu 1.5-ga), mis tähendab omakorda, et nullhüpotees on, et selle populatsioon keskmine pikkus, kust meie valim pärit on, on (enam-vähem) võrdne 1.5 meetriga. Kuna p-väärtus on kõvasti suurem kui 0.05, siis peame jääma nullhüpoteesi juurde ning saame kinnitust, et jah, meie klassi 32 last kuuluvad sellesse populatsiooni, kelle keskmine pikkus on 1.5 meetrit.

Ühe või kahe sabaga test?

Alternatiivne hüpotees võib olla sõnastatud üldiselt, et üks rühm on teisest erinev. Seda nimetatakse kahe sabaga (two-tailed) testiks. Aga alternatiivne hüpotees võib olla ka suunatud, st et ühe rühma väärtus on kõrgem kui teisel. Seda nimetatakse ühe sabaga (one-tailed) testiks. Seda on oluline arvestada, sest sellest sõltub, kui palju meil on eksimisvabadust.

  • Ühe sabaga (one-tailed) testi teeme siis, kui meil on kindlad teadmised selle kohta, et üks rühm on suurem kui teine ja vastupidist võimalust ei ole. Kogu 5% eksimisvabadust ( = 0.05) pannakse selle peale, et X on suurem kui Y ning vastupidist võimalust ei kontrollita. Seega kui tegelikult Y on suurem kui X, siis ühe sabaga testiga me sellele kinnitust ei saa.
  • Kahe sabaga (two-tailed) testi teeme siis, kui üks rühm võib olla teisest nii suurem kui väiksem ja mõlemat võimalust on vaja kontrollida. Kahe sabaga testi puhul jagatakse vastavalt ka eksimisvõimalus kahe alternatiivse võimaluse vahel ja seega on p-väärtus kahe sabaga testil poole suurem.
  • Hüpoteesid peaks sõnastama ja valiku ühe või kahe sabaga testi vahel tegema lähtuvalt eelnevatest teadmistest andmete olemuse kohta, mitte lähtuvalt tulemusest.
  • Ühe sabaga testi kasuks peaks otsutama siis, kui see mingil välisel põhjusel on õigustatud, mitte selleks, et saavutada võimalikult suurt p-väärtust.
  • T-testi argument alternative = c("two.sided", "less", "greater").

Kahe valimiga t-test

Kui meil on üks seletav tunnus, millel on kaks taset, ja tahame teha t-testi, et võrrelda, kas kahe grupi keskmised erinevad, peame vaatama, kuidas andmed on korrastatud.

  • Kaks tulpa, ühe rühma andmed ühes ja teise rühma andmed teises tulbas: t.test(x, y)
  • Ühes tulbas uuritav tunnus, teises tulbas rühmitav tunnus: t.test(y~x)
head(kysimustik[,c("kaua_opid", "kogemused_kvant")])
##   kaua_opid kogemused_kvant
## 1         2              Ei
## 2         4              Ei
## 3        10             Jah
## 4         6             Jah
## 5         5             Jah
## 6        25             Jah

Kuna meil ei ole otseselt alust oletada, et eelnevate kogemustega üliõpilased on kauem ülikoolis käinud või vastupidi, siis teeme kahepoolse testi. Kuna tegu ei ole kordusmõõtmistega, kasutame testi sõltumatute valimitega varianti, mille puhul
H0: Kogemustega ja kogemusteta üliõpilaste keskmine ülikoolis õpitud aastate arv ei erine.
H1: Kogemustega ja kogemusteta üliõpilaste keskmine ülikoolis õpitud aastate arv on erinev.

t.test(log(kysimustik$kaua_opid)~kysimustik$kogemused_kvant)
## 
##  Welch Two Sample t-test
## 
## data:  log(kysimustik$kaua_opid) by kysimustik$kogemused_kvant
## t = -3.5716, df = 25.081, p-value = 0.00147
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.2918620 -0.3469855
## sample estimates:
##  mean in group Ei mean in group Jah 
##          1.062948          1.882372

p-väärtus on < 0.05, seega peame hülgama nullhüpoteesi ja võtma vastu alternatiivse hüpoteesi, mille kohaselt kvantmeetodite kogemustega ja kogemusteta üliõpilaste ülikoolis õpitud aastate keskmised on erinevad.

T-statistiku väärtus üksinda ei ütle meile eriti midagi, sest see ei ole samades ühikutes kui uuritav tunnus. Nullhüpoteesi kehtivuse korral (kui kahe grupi keskmised on täpselt võrdsed) on t-statistiku väärtus 0. Selle, kui kaugele t väärtus võib 0-st kummaski suunas minna, määrab vabadusastmete arv (df) ja olulisusnivoo (). Kui nt statistiku suurus on -3.5715973 ja p-väärtus 0.0014695, siis tõenäosus, et saame sellise statistiku väärtuse nii suure valimiga, on 0.1%, eeldusel, et kehtib nullhüpotees ja gruppide vahel pole mingit erinevust.

Ühepoolne test ei testi otseselt, kas ühe või teise grupi keskmine on teisest oluliselt suurem/väiksem, ent seda, mille alusel test erinevuse leiab, näeb väljundi lõpust, kus on antud kahe grupi keskmised: kogemusteta üliõpilaste logaritmitud ülikoolis õpitud aastate keskmine on 1.06 ja kogemustega üliõpilaste logaritmitud ülikoolis õpitud aastate keskmine 1.88. Kontrollime:

mean(log(kysimustik[kysimustik$kogemused_kvant == "Ei", "kaua_opid"]))
## [1] 1.062948
mean(log(kysimustik[kysimustik$kogemused_kvant == "Jah", "kaua_opid"]))
## [1] 1.882372

95 percent confidence interval väljundis näitab, et 95-s juhuslikus valimis 100-st jääks nende kahe grupi keskmiste vahe ehk -0.8194238 näidatud vahemikku -1.291862 ja -0.3469855 vahele. Kui kahe grupi keskmised üksteisest oluliselt ei erineks, siis jääks usaldusvahemikku ka väärtus 0 (nulli saab ju siis, kui lahutada ühest keskmisest teine keskmine, mis on sama suur kui esimene).

Vaikimisi teeb R sellise t-testi, milles ta eeldab, et kahe grupi hajuvus ei ole võrdne ehk dispersioonid ei ole võrdsed (Welch Two Sample t-test), mis on tihtipeale tõsi.

var(kysimustik[kysimustik$kogemused_kvant == "Ei","kaua_opid"])
## [1] 5.032967
var(kysimustik[kysimustik$kogemused_kvant == "Jah","kaua_opid"])
## [1] 26.66

Dispersioonide erinevust saab kontrollida F-testiga (R-is var.test()), kus F-statistik on kahe grupi dispersioonide jagatis.

var.test(kysimustik$kaua_opid~kysimustik$kogemused_kvant)
## 
##  F test to compare two variances
## 
## data:  kysimustik$kaua_opid by kysimustik$kogemused_kvant
## F = 0.18878, num df = 13, denom df = 24, p-value = 0.003124
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.07545498 0.54618667
## sample estimates:
## ratio of variances 
##          0.1887835

Kui F-statistiku väärtus on 1, siis on dispersioonid võrdsed. Mida rohkem F-statistik 1-st erineb, seda erinevamad on kahe grupi dispersioonid. Juhul, kui esimese grupi dispersioon on väiksem kui teise grupi oma, siis jääb väärtus 0 ja 1 vahele (mida lähemale 0-le, seda erinevamad dispersioonid teineteisest on). Kui esimese grupi dispersioon on suurem kui teise grupi oma, siis jääb väärtus 1 ja lõpmatuse vahele. Teisisõnu: F = 0.5 ja F = 1.5 ei näita ühesuurust erinevust gruppide dispersioonides.
Kui p > 0.05, siis jääb kehtima nullhüpotees, et kahe dispersiooni suhe/jagatis on 1. Kui p < 0.05, siis peab vastu võtma alternatiivse hüpoteesi, mille kohaselt dispersioonid ei ole võrdsed (ja peaks tegema Welchi t-testi).

Kontrollime nüüd logaritmitud uuritava tunnuse dispersioone kahes grupis.

var.test(log(kysimustik$kaua_opid)~kysimustik$kogemused_kvant)
## 
##  F test to compare two variances
## 
## data:  log(kysimustik$kaua_opid) by kysimustik$kogemused_kvant
## F = 1.1925, num df = 13, denom df = 24, p-value = 0.6833
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.4766214 3.4500606
## sample estimates:
## ratio of variances 
##           1.192476

Logaritmitud uuritava tunnusega on gruppide dispersioon sarnane (p > 0.05), nii et saab teha võrdsete dispersioonidega t-testi (var.equal = TRUE).

t.test(log(kysimustik$kaua_opid)~kysimustik$kogemused_kvant, 
       var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  log(kysimustik$kaua_opid) by kysimustik$kogemused_kvant
## t = -3.6637, df = 37, p-value = 0.000774
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.2726059 -0.3662417
## sample estimates:
##  mean in group Ei mean in group Jah 
##          1.062948          1.882372

Vaatame veel üht näidet.

Andmestikus kandidaadid.RData on viimaste, 2019 märtsis toimunud riigikogu valimiste tulemused.

load("kandidaadid.RData")
str(kandidaadid)
## 'data.frame':    1099 obs. of  18 variables:
##  $ erakondlik_kuuluvus        : Factor w/ 11 levels "Eesti Keskerakond",..: 5 NA 5 5 5 NA 5 5 5 NA ...
##  $ haridus                    : Factor w/ 4 levels "Algharidus","Keskharidus (sh keskeriharidus)",..: 3 3 3 3 3 3 2 3 2 2 ...
##  $ kontaktandmed              : chr  "5056540  andres.herkel@gmail.com" "56691750" "5012319  jaak.prozes@fennougria.ee" "5093067  jaanika.klopets@gmail.com" ...
##  $ nimekiri_voi_uksikkandidaat: Factor w/ 11 levels "Eesti Keskerakond",..: 4 4 4 4 4 4 4 4 4 4 ...
##  $ sunniaeg                   : Date, format: "1962-08-14" "1984-09-07" ...
##  $ tookoht_ja_amet            : chr  "Riigikogu liige" "Pikapäkk OÜ, tegevjuht" "Fenno-Ugria Asutus, nõunik" "Arukas maksumaksja OÜ, juhatuse liige" ...
##  $ nimi                       : chr  "ANDRES HERKEL" "ÕIE-MARI AASMÄE" "JAAK PROZES" "JAANIKA KLOPETS" ...
##  $ ringkond                   : Factor w/ 12 levels "Harju- ja Raplamaa",..: 8 8 8 8 8 8 8 8 8 8 ...
##  $ kandidaadi_link            : chr  "https://rk2019.valimised.ee/et/candidates/candidate-101.html" "https://rk2019.valimised.ee/et/candidates/candidate-102.html" "https://rk2019.valimised.ee/et/candidates/candidate-103.html" "https://rk2019.valimised.ee/et/candidates/candidate-104.html" ...
##  $ eesnimi                    : chr  "ANDRES" "ÕIE-MARI" "JAAK" "JAANIKA" ...
##  $ sugu                       : Factor w/ 2 levels "mees","naine": 1 2 1 2 1 1 1 1 2 1 ...
##  $ nr                         : num  101 102 103 104 105 106 107 108 109 110 ...
##  $ e_haaled                   : int  106 32 18 14 10 17 4 3 10 6 ...
##  $ haaled_valisriigist        : int  3 0 3 0 0 1 0 0 0 0 ...
##  $ haali_kokku                : int  222 43 35 23 15 36 9 5 18 12 ...
##  $ kokku_ringkonnas           : int  56191 56191 56191 56191 56191 56191 56191 56191 56191 56191 ...
##  $ haali_kokku_prots_ring     : num  0.3951 0.0765 0.0623 0.0409 0.0267 ...
##  $ sodiaak                    : Factor w/ 12 levels "Kaljukits","Veevalaja",..: 8 9 4 12 9 7 11 10 3 7 ...

Kandidaadid jagunesid soo põhjal:

table(kandidaadid$sugu)
## 
##  mees naine 
##   734   365

Kas lisaks sellele, et mehi oli kandidaatide hulgas rohkem, anti neile ka rohkem hääli? Tulbas haali_kokku on igale kandidaadile antud kogu häälte arv. Kas t-testi eeldused on täidetud?

hist(kandidaadid$haali_kokku)
qqnorm(kandidaadid$haali_kokku)
qqline(kandidaadid$haali_kokku)
shapiro.test(kandidaadid$haali_kokku)

Kas logaritmimine aitaks normaliseerida? Sõnasta hüpoteesid. Kas ühe- või kahepoolne hüpotees?

Kas dispersioonid on võrdsed?

var.test(kandidaadid$haali_kokku ~ kandidaadid$sugu)
## 
##  F test to compare two variances
## 
## data:  kandidaadid$haali_kokku by kandidaadid$sugu
## F = 0.91282, num df = 733, denom df = 364, p-value = 0.3074
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.7619519 1.0876743
## sample estimates:
## ratio of variances 
##          0.9128198
t.test(log(haali_kokku)~sugu, 
       data=kandidaadid, 
       var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  log(haali_kokku) by sugu
## t = 2.3724, df = 1097, p-value = 0.01785
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.04109831 0.43423200
## sample estimates:
##  mean in group mees mean in group naine 
##            5.087489            4.849824

Testi p-väärtus on < 0.05, seega peame hülgama nullhüpoteesi ja vastu võtma alternatiivse hüpoteesi, mille järgi kahe grupi keskmise (logaritmitud) häältesaagi vahel on oluline erinevus.

Usaldusvahemik

Valimit iseloomustavad karakteristikud (nt keskmine, mediaan, keskmiste erinevus vmt) ei pruugi kehtida ka populatsiooni ehk üldkogumi kohta.

Sellepärast on parem üldkogumit kirjeldada mingi vahemiku kaudu, millesse valimi karakteristik mingi tõenäosusega paigutub. Seda vahemikku nimetatakse usaldusvahemikuks.

Usaldusvahemiku arvutamine sõltub konkreetsest statistikust, nt 2 grupi keskmiste erinevuse hindamise puhul t-testis sõltub selle erinevuse usaldusvahemik meie valimi mahust, andmete varieeruvusest ja usaldusnivoost, mis määrab ära tõenäosuse, millega mingi parameeter teatud vahemikus paikneb. Usaldusnivoo on 1-olulisusnivoo ehk 1-α (α on tavaliselt 0.05).

Nt 95% usaldusnivoo puhul jääks populatsiooni parameeter testi erinevate valimitega korrates 95-protsendilise tõenäosusega meie saadud usaldusvahemikku. Teisisõnu: 100st ühesuurusest valimist 95 puhul saame statistiku väärtuse, mis jääb meie valimi usaldusvahemikku. Kui usaldusvahemik sisaldab väärtust 0 ja testi nullhüpotees on, et mingi parameeter võrdub 0-ga, siis on ka p-väärtus suur ja nullhüpotees (“seosed on juhuslikud”) jääb kehtima.

Vaatame uuesti testide väljundeid ning seekord pöörame tähelepanu usaldusvahemikule.

var.test(log(kysimustik$kaua_opid)~kysimustik$kogemused_kvant)
## 
##  F test to compare two variances
## 
## data:  log(kysimustik$kaua_opid) by kysimustik$kogemused_kvant
## F = 1.1925, num df = 13, denom df = 24, p-value = 0.6833
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.4766214 3.4500606
## sample estimates:
## ratio of variances 
##           1.192476

F-testi alternatiivne hüpotees on, et kahe grupi dispersioonide erinevus ei ole võrdne 1-ga, ja nullhüpotees seega, et kahe grupi dispersioonide erinevus on võrdne 1-ga. Seega peab nullhüpoteesi juurde jääma juhul, kui usaldusvahemik sisaldab väärtust 1. Antud juhul vastab see tõele: 95 valimis 100-st on F-statistik ehk kahe grupi dispersioonide jagatis 0.477 ja 3.45 vahel, hõlmates ka varianti F = 1, mispuhul dispersioonid on võrdsed. Seda, et usaldusvahemikku jääb väärtus, mille suhtes testi tehakse, näitab ka see, et testi p-väärtus on suur.

t.test(log(kysimustik$kaua_opid)~kysimustik$kogemused_kvant)
## 
##  Welch Two Sample t-test
## 
## data:  log(kysimustik$kaua_opid) by kysimustik$kogemused_kvant
## t = -3.5716, df = 25.081, p-value = 0.00147
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.2918620 -0.3469855
## sample estimates:
##  mean in group Ei mean in group Jah 
##          1.062948          1.882372

T-testi alternatiivne hüpotees on, et kahe grupi keskmiste erinevus ei ole võrdne 0-ga, ja nullhüpotees seega, et kahe grupi keskmiste erinevus on võrdne 0-ga. Seega peab nullhüpoteesi juurde jääma juhul, kui usaldusvahemik sisaldab väärtust 0. Siin see paika ei pea: usaldusvahemik jääb -1.2918620 ja -0.3469855 vahele ega jäta võimalust, et 95-l juhul 100-st võiks keskmiste erinevus olla ka 0 (erinevust ei oleks). Seega on ka p-väärtus väike ning nullhüpoteesi seose juhuslikkusest peab hülgama.

Mõju suurus

Statistiline olulisus (significance) näitab tõenäosust, et seos või efekt, mille me avastasime, on saadud juhuslikult ja kehtib nullhüpotees. Nt p = 0.05 näitab, et tõenäosus, et meie leitud seos on juhuslik ja tegelikkuses seost ei eksisteeri, on 5%.
Kuna seost või efekti peegeldab arvuliselt mingi teststatistik, näitab p-väärtus teisisõnu tõenäosust, et saaksime sellise statistiku väärtuse vaid juhuse läbi.

Mõju suurus (effect size) näitab, kui suur on ühe teguri mõju teisele.

Statistiline olulisus sõltub mõju suurusest ja valimi suurusest.

p < 0.05 ei tähenda tingimata, et meie leitud seos on ka sisuliselt tähtis. p > 0.05 omakorda ei tähenda, et teguril ei ole tegelikkuses mingit mõju.

Väike mõju suurel arvul isenditel võib olla statistiliselt oluline. Suur mõju väiksel arvul isenditel ei pruugi olla statistiliselt oluline.

T-test ütleb ainult seda, kui tõenäone on, et kahe rühma vahelised erinevused on juhuslikud. Seega, kui t-testi tulemus soovitab hüljata 0-hüpoteesi, saame me küll öelda, et rühmad on üksteisest oluliselt erinevad, aga mitte seda, kui palju nad erinevad.

Mõju suurust (efect size) saab hinnata näiteks Coheni d abil. Selle leidmiseks on käsk paketis effsize.

#install.packages("effsize")
library(effsize)
cohen.d(log(haali_kokku)~sugu, data=kandidaadid)
## 
## Cohen's d
## 
## d estimate: 0.1519453 (negligible)
## 95 percent confidence interval:
##      lower      upper 
## 0.02611439 0.27777614

Kui d väärtus on positiivne, siis on esimese grupi keskmine suurem kui teise grupi oma. Kui negatiivne, on esimese grupi keskmine väiksem kui teise oma. Siin on d positiivne, seega on meeste (logaritmitud) häälesaak keskmiselt pisut suurem kui naiste oma. Mõju suurus on aga väga väike (negligible).

Üldiselt räägitakse skaalast, kus

d <= 0.2: olematu mõju
0.2 < d <= 0.5: väike mõju
0.5 < d <= 0.8: keskmine mõju
0.8 < d: suur mõju

Mitteparameetrilised testid

  • T-test sobib rangelt võttes ainult normaaljaotusega arvulistele tunnustele, ehkki on näidatud, et see annab adekvaatseid tulemusi ka mittenormaaljaotustega.
  • Kui normaaljaotuse nõue on rikutud (tunnus kas pole üldse normaaljaotusega või ei ole seda ühel või teisel põhjusel meie valimis), ükski transformatsioon (nt logaritmimine) ei aita ja meil on vähe andmeid (rühma n < 30), peab kasutama mitteparameetrilisi teste. Mitteparameetrilise jaotuse puhul ei saa vähese arvu parameetritega mingit jaotust identifitseerida.
  • Mitteparameetrilisi teste on eriti soovitatav kasutada siis, kui
    • tunnusel on erindid, mida pole võimalik välja jätta,
    • tegemist on järjestustunnustega,
    • on alust arvata, et mediaan kirjeldab tunnust paremini kui aritmeetiline keskmine (nt palkade jaotus).

Mitteparameetrilised testid on nt Wilcoxoni astaksummatest (rank sum test), tuntud ka kui Manni-Whitney U-test, ja Wilcoxoni astakmärgitest (signed rank test). Esimene on alternatiiv sõltumatute mõõtmistega t-testile, teine sõltuvate mõõtmistega t-testile.

Kuidas valida t- või U-testi vahel?

Eeldused t-test U-test
Juhuslikud valimid Jah Jah
Sõltumatud vaatlused Jah Jah
Vähemalt …skaalal tunnus intervall- järjestus-   
Normaaljaotus (või n>30) Jah Ei
Mõlema grupi hajuvus sarnane Jah (Studenti t-test)
Ei (Welchi t-test)
Ei
Tegeleb… keskmistega mediaanidega

Selles mitteparameetriliste testide peres on kaks sarnast testi, mõlemad R-is käsuga wilcox.test().

Wilcoxon Rank Sum Test
(ka Mann-Whitney U-test)
Wilcoxon Signed Rank Test
astaksummatest astakmärgitest
sõltumatud valimid (paired=FALSE) sõltuvad valimid (paired=TRUE)
nullhüpotees: tõenäosus, et juhuslikult ühest grupist võetud väärtus on suurem/väiksem kui teisest grupist juhuslikult võetud väärtus, on 0,5. nullhüpotees: 1. ja 2. mõõtmise erinevused jaotuvad sümmeetriliselt 0 ümber

Vaatleme nüüd uuesti mitteparameetrilise testiga ülikoolis õpitud aastate erinevust kahes grupis. Kuna mitteparameetriline test ei eelda normaaljaotust, pole siin õpitud aastate arvu vaja logaritmida.

wilcox.test(kysimustik$kaua_opid~kysimustik$kogemused_kvant, exact = FALSE, conf.int = TRUE)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  kysimustik$kaua_opid by kysimustik$kogemused_kvant
## W = 65.5, p-value = 0.001343
## alternative hypothesis: true location shift is not equal to 0
## 95 percent confidence interval:
##  -5.999960 -1.000061
## sample estimates:
## difference in location 
##               -3.00001

Näeme, et alternatiivhüpotees on, et true location shift is not equal to 0. Põhimõtteliselt tähendab see seda, et ühe grupi jaotus oleks teisest x-teljel paremal või vasakul. Ehkki sagedasti tõlgendatakse seda kui kahe valimi mediaanide erinevust, on see rangelt võttes pigem mediaan kahe valimi erinevusest (võivad ka kattuda). Kuna p-väärtus on < 0.05, siis saame selle sisuka hüpoteesi vastu võtta ja tõdeda veel kord, et kvantmeetodite kogemustega ja kogemusteta üliõpilaste ülikoolis õpitud aastate arv erineb.

Statistiku väärtus leitakse järgmiselt.
Kõigepealt järjestatakse kõik uuritava tunnuse väärtused väiksemast suuremani.

# võtame andmestikust välja ainult kahe tulba andmed.
kysimus1 <- kysimustik[,c("kogemused_kvant", "kaua_opid")]

# järjestame andmed uuritava tunnuse ehk õpitud aastate järgi
kysimus1 <- kysimus1[order(kysimus1$kaua_opid),]

Seejärel määratakse uuritava tunnuse väärtustele astakud ehk sisuliselt järjekorranumbrid: kõige väiksem väärtus saab astakuks e järjekorranumbriks 1, sellest järgmine 2 jne. Kui mitu väärtust on ühesugused, saavad need kõik ühesugused astakud. Näiteks siin on kohe alguses 4 üliõpilast, kes on õppinud ülikoolis ainult 1 aasta. Seega ei saa nad järjekorranumbreid 1, 2, 3 ja 4 ega 1, 1, 1, 1 vmt vaid kõik ühtmoodi (1+2+3+4)/4 = 2.5.

# lisame andmetesse uue tulba, kus on
# uuritava tunnuse astakud
kysimus1$astak <- rank(kysimus1$kaua_opid)
head(kysimus1, 10)
##    kogemused_kvant kaua_opid astak
## 9               Ei         1   2.5
## 10              Ei         1   2.5
## 14              Ei         1   2.5
## 20             Jah         1   2.5
## 1               Ei         2   5.5
## 35              Ei         2   5.5
## 21              Ei         3   8.5
## 32             Jah         3   8.5
## 38              Ei         3   8.5
## 39              Ei         3   8.5
tail(kysimus1, 10)
##    kogemused_kvant kaua_opid astak
## 18             Jah         8  30.0
## 25             Jah         8  30.0
## 11             Jah         9  32.0
## 3              Jah        10  33.5
## 29             Jah        10  33.5
## 19             Jah        12  35.0
## 37             Jah        13  36.0
## 27             Jah        15  37.0
## 31             Jah        16  38.0
## 6              Jah        25  39.0

Edasi leitakse nende ridade astakute summa, kus seletava tunnuse lahtris on selle tunnuse (vaikimisi tähestiku) järjekorras esimesena tulev väärtus.

levels(kysimus1$kogemused_kvant)
## [1] "Ei"  "Jah"
(ei_summa <- sum(kysimus1[kysimus1$kogemused_kvant=="Ei", "astak"]))
## [1] 170.5

Kui “Ei” vastanute ülikoolis õpitud aastate arv on väike, on need ka järjekorras eespool, nende astakud madalamad ja astakute summa seega väiksem.

Järgmiseks leiame kõikide nende vastanute arvu, kellel ei ole kvantitatiivsete meetoditega kogemusi, korrutame selle arvu läbi sellest arvust ühe võrra suurema arvuga ning jagame tulemuse kahega. Lõpuks lahutame saadud arvu astakute summast.

(n_ei <- table(kysimus1$kogemused_kvant)["Ei"])
## Ei 
## 14
(W_U <- ei_summa-(n_ei*(n_ei+1)/2))
##   Ei 
## 65.5

Mida lähemal on W-statistik 0-le, seda selgem erinevus kahe grupi vahel on. W teoreetilised väärtused ulatuvad 0-st (täielik erinevus gruppide vahel, kõik ühe grupi väärtused järjestatud tabeli ühes otsast ja teise grupi väärtused teises otsas) kuni kummagi kategooria vaatluste arvu korrutiseni (kaht gruppi ei joonistu välja, kategooriate vaatlused paiknevad järjestatud tabelis omavahel kõik läbisegi). Siin oleks W maksimaalne väärtus niisiis 14*25 ehk

table(kysimustik$kogemused_kvant)[1]*table(kysimustik$kogemused_kvant)[2]
##  Ei 
## 350

Mõju suurus

Mitteparameetrilise testi mõju suuruse hindamiseks saab kasutada Cliffi delta statistikut paketist effsize.

cliff.delta(kysimustik$kaua_opid~kysimustik$kogemused_kvant)
## 
## Cliff's Delta
## 
## delta estimate: -0.6257143 (large)
## 95 percent confidence interval:
##      lower      upper 
## -0.8383333 -0.2478721

Negatiivne delta näitab, et teises grupis (antud juhul “Jah” vastanute hulgas) on uuritaval tunnusel suuremad väärtused kui esimeses grupis. Teisisõnu: kvantmeetodite kogemusega üliõpilased on kauem ülikoolis õppinud. Cliffi delta absoluutväärtus näitab põhimõtteliselt kahe tõenäosuse vahet P(y > x) - P(y < x): tõenäosus, et juhuslikult 2. grupist valitud vaatlus on suurem kui juhuslikult 1. grupist valitud vaatlus, miinus tõenäosus, et juhuslikult 2. grupist valitud vaatlus on väiksem kui juhuslikult 1. grupist valitud vaatlus.

head(kysimustik[,c("kaua_opid", "kogemused_kvant")])
##   kaua_opid kogemused_kvant
## 1         2              Ei
## 2         4              Ei
## 3        10             Jah
## 4         6             Jah
## 5         5             Jah
## 6        25             Jah

Peaksime võrdlema kõiki võimalikke paare. Nt esimese “Jah” vastanu õpitud aastaid (10 aastat) kõikide “Ei” vastanutega (2, 4 jne aastat õppinutega), seejärel teise “Jah” vastanu õpitud aastaid (6 aastat) kõikide “Ei” vastanutega jne. Sisuliselt on kõiki võimalikke kombinatsioone 25(“Jah” vastanuid)*14(“Ei” vastanuid) ehk 350. Tabelis oleks seega nt 25 rida ja 14 tulpa, 1. reas 10-2, 10-4 jne, 2. reas 6-2, 6-4 jne.

# Teeme kõikidest võimalikest "Jah" ja "Ei" kombinatsioonidest tabeli
# ning lahutame "Jah" õpitud aastatest "Ei" õpitud aastad.
(out <- outer(kysimustik[kysimustik$kogemused_kvant == "Jah","kaua_opid"],
      kysimustik[kysimustik$kogemused_kvant == "Ei","kaua_opid"],
      "-"))
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
##  [1,]    8    6    3    6    9    9    2    9    7     5     4     8     7
##  [2,]    4    2   -1    2    5    5   -2    5    3     1     0     4     3
##  [3,]    3    1   -2    1    4    4   -3    4    2     0    -1     3     2
##  [4,]   23   21   18   21   24   24   17   24   22    20    19    23    22
##  [5,]    7    5    2    5    8    8    1    8    6     4     3     7     6
##  [6,]    2    0   -3    0    3    3   -4    3    1    -1    -2     2     1
##  [7,]    4    2   -1    2    5    5   -2    5    3     1     0     4     3
##  [8,]    2    0   -3    0    3    3   -4    3    1    -1    -2     2     1
##  [9,]    3    1   -2    1    4    4   -3    4    2     0    -1     3     2
## [10,]    6    4    1    4    7    7    0    7    5     3     2     6     5
## [11,]   10    8    5    8   11   11    4   11    9     7     6    10     9
## [12,]   -1   -3   -6   -3    0    0   -7    0   -2    -4    -5    -1    -2
## [13,]    2    0   -3    0    3    3   -4    3    1    -1    -2     2     1
## [14,]    5    3    0    3    6    6   -1    6    4     2     1     5     4
## [15,]    6    4    1    4    7    7    0    7    5     3     2     6     5
## [16,]    4    2   -1    2    5    5   -2    5    3     1     0     4     3
## [17,]   13   11    8   11   14   14    7   14   12    10     9    13    12
## [18,]    5    3    0    3    6    6   -1    6    4     2     1     5     4
## [19,]    8    6    3    6    9    9    2    9    7     5     4     8     7
## [20,]    2    0   -3    0    3    3   -4    3    1    -1    -2     2     1
## [21,]   14   12    9   12   15   15    8   15   13    11    10    14    13
## [22,]    1   -1   -4   -1    2    2   -5    2    0    -2    -3     1     0
## [23,]    3    1   -2    1    4    4   -3    4    2     0    -1     3     2
## [24,]    3    1   -2    1    4    4   -3    4    2     0    -1     3     2
## [25,]   11    9    6    9   12   12    5   12   10     8     7    11    10
##       [,14]
##  [1,]     7
##  [2,]     3
##  [3,]     2
##  [4,]    22
##  [5,]     6
##  [6,]     1
##  [7,]     3
##  [8,]     1
##  [9,]     2
## [10,]     5
## [11,]     9
## [12,]    -2
## [13,]     1
## [14,]     4
## [15,]     5
## [16,]     3
## [17,]    12
## [18,]     4
## [19,]     7
## [20,]     1
## [21,]    13
## [22,]     0
## [23,]     2
## [24,]     2
## [25,]    10

Nüüd leiame nende kombinatsioonide osakaalu kõikidest võimalikest, kus tulemus on positiivne (ehk 2. grupi väärtus on suurem kui 1. grupi oma), nende kombinatsioonide osakaalu, kus tulemus on negatiivne, ning lahutame positiivse osakaalust negatiivse osakaalu. Osakaalusid saame tõlgendada tõenäosustena.

p_y_suurem <- length(out[out>0])/sum(length(out))
p_x_suurem <- length(out[out<0])/sum(length(out))
(delta <- p_y_suurem-p_x_suurem)
## [1] 0.6257143

Kuna tegemist on tõenäosuste erinevusega, saab Cliffi delta absoluutväärtus olla 0 ja 1 vahel. Mida lähemal 0-le, seda väiksem mõju (tõenäosus, et ühest grupist juhuslikult valitud väärtus on suurem kui teisest grupist juhuslikult valitud väärtus on sama suur kui tõenäosus, et see on väiksem), mida lähemal 1-le, seda suurem mõju.

Veel üks näide

Proovime mitteparameetrilise testiga, kas sugu mõjutab häältesaaki. Meenutuseks kontrollime jaotust:

load("kandidaadid.RData")
hist(kandidaadid$haali_kokku)

Logaritmitud väärtustega histogramm:

hist(log(kandidaadid$haali_kokku))

shapiro.test(log(kandidaadid$haali_kokku))
## 
##  Shapiro-Wilk normality test
## 
## data:  log(kandidaadid$haali_kokku)
## W = 0.99746, p-value = 0.08343

Parameetriline t-test logaritmitud väärtustega:

t.test(log(haali_kokku)~sugu, kandidaadid)
## 
##  Welch Two Sample t-test
## 
## data:  log(haali_kokku) by sugu
## t = 2.4084, df = 756.57, p-value = 0.01626
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.04394483 0.43138548
## sample estimates:
##  mean in group mees mean in group naine 
##            5.087489            4.849824

Leiame mõju suuruse logaritmitud andmetel:

cohen.d(log(haali_kokku)~sugu, kandidaadid)
## 
## Cohen's d
## 
## d estimate: 0.1519453 (negligible)
## 95 percent confidence interval:
##      lower      upper 
## 0.02611439 0.27777614

Teeme wilcoxoni testi logaritmimata andmetel.

wilcox.test(haali_kokku~sugu, kandidaadid)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  haali_kokku by sugu
## W = 147165, p-value = 0.007688
## alternative hypothesis: true location shift is not equal to 0

Kuna test põhineb astakutel, saab see hakkama nii normaaljaotust üldjoontes siiski jälgivate andmetega kui ka tugevalt paremale või vasakule kaldu olevate andmetega.

# Leiame mõju suuruse logaritmimata andmetel.
cliff.delta(haali_kokku~sugu, kandidaadid)
## 
## Cliff's Delta
## 
## delta estimate: 0.09861147 (negligible)
## 95 percent confidence interval:
##      lower      upper 
## 0.02679223 0.16941794

Mõju suurus on siiski endiselt väike.

Nii t-test (logaritmitud uuritava tunnusega) kui ka Wilcoxoni test (logaritmimata uuritava tunnusega) viitavad sellele, et meeste ja naiste häältesaagi vahel on statistiliselt oluline erinevus, ent mõju suuruse statistikud näitavad, et kandidaadi sool ei olnud häältesaagile suur mõju.

Järgmisel korral

  • Arvuliste tunnuste vahelised seosed
  • Mittearvuliste tunnuste vahelised seosed