Seni oleme
Põhiliselt oleme tegelenud ühe tunnuse uurimise ja
kirjeldamisega.
Nüüd liigume edasi kahe tunnuse vaheliste seoste juurde ning vaatleme
korrelatsiooni. Korrelatsioon ehk
sõltuvus tähendab, et ühe tunnuse muutus mingis kindlas
suunas toob kaasa teise tunnuse muutuse kindlas suunas.
Tänased teemad:
Arvuliste tunnuste vaheline korrelatsioon
Andmestikud, mida see kord kasutame: uus andmestik
ldt.csv
ja eelmisest korrast tuttav üllatusküsimused.
Sõltuvust saab iseloomustada selle järgi, kas see on
set.seed(100)
x <- 1:100
y1 <- x + runif(100, 1, 100)
y2 <- log(y1)
y3 <- c(rev(y1[1:50]), y1[51:100])
par(mfrow = c(1, 3))
plot(x, y1, main = "Monotoonne lineaarne"); abline(lm(y1 ~ x))
plot(x, y2, main = "Monotoonne mittelineaarne"); lines(predict(loess(y2 ~ x)))
plot(x, y3, main = "Mittemonotoonne"); lines(predict(loess(y3 ~ x)))
Korrelatsioonikordaja näitab seose
Pideva normaaljaotusega tunnuste jaoks sobib Pearsoni korrelatsioonikordaja r.
Järjestustunnuste või mitte normaaljaotusega pidevatele tunnustele sobivad Spearmani korrelatsioonikordaja ρ ehk astakkkorrelatsioonikordaja ning Kendalli korrelatsioonikordaja τ.
On ka muid valikuid, millest siin kursusel juttu ei tule, nt Goodmani-Kruskali gamma, Somersi D, neljavälja korrelatsioonikordaja ja veel palju muud.
Korrelatsioonikordaja väärtused on tavaliselt vahemikus [-1;1]. Väärtus 1 tähendab, et tegemist on täpse positiivse korrelatsiooniga, -1 tähendab, et tegemist on täpse negatiivse korrelatsiooniga, 0 tähendab, et korrelatsiooni pole.
Pearsoni korrelatsioonikordaja sobib, kui
set.seed(20)
m <- 1:10
n1 <- 4 * m
n2 <- -4 * m
n3 <- m
n4 <- runif(10, 1, 10)
n5 <- rnorm(10, 6.6, 3.5)
n6 <- rnorm(10, mean(m), sd(m))
par(mfrow = c(3, 2))
plot(m, n1, main = paste("r = ", round(cor(m, n1), 1))); abline(lm(n1 ~ m))
plot(m, n2, main = paste("r = ", round(cor(m, n2), 1))); abline(lm(n2 ~ m))
plot(m, n3, main = paste("r = ", round(cor(m, n3), 1)), ylim = c(0, 40)); abline(lm(n3 ~ m))
plot(m, n4, main = paste("r = ", round(cor(m, n4), 1))); abline(lm(n4 ~ m))
plot(m, n5, main = paste("r = ", round(cor(m, n5), 1))); abline(lm(n5 ~ m))
plot(m, n6, main = paste("r = ", round(cor(m, n6), 1))); abline(lm(n6 ~ m))
Omadused:
1^2*100
ehk 100% teise tunnuse muutumisest; kui r =
-0.5, kirjeldab ühe tunnuse muutumine ära (-0.5)^2*100
ehk
25% teise tunnuse muutumisest.Seose tugevus:
Selle, millisest väärtusest alates tegelikult seost tugevaks pidada, määravad tihtipeale ära valdkond, uurimisküsimus, andmed vm tegurid, seega tuleb seose tugevust tõlgendada alati kontekstuaalselt.
Pearsoni korrelatsioonikordaja on väga tundlik erindite suhtes!
# install.packages("MASS")
library(MASS)
set.seed(10)
test <- mvrnorm(n = 10, mu = c(5,5), Sigma = matrix(c(1,0,0,1), nrow = 2),
empirical = TRUE)
a <- test[, 1]
b <- test[, 2]
a2 <- c(a, 15)
b2 <- c(b, 12)
par(mfrow = c(1,2))
plot(b ~ a, xlim = c(0,20), ylim = c(0,20), main = "r = 0"); abline(lm(b ~ a))
plot(b2 ~ a2, xlim = c(0,20), ylim = c(0,20), main = "r = 0.87"); abline(lm(b2 ~ a2))
Loeme sisse andmestiku ldt.csv
paketist Rling
,
mis on lisamaterjal Natalia Levshina õpikule “How to do linguistics with
R” (2015). Andmestik sisaldab 100 juhuslikult valitud sõna the English Lexicon Projecti
andmebaasist (Balota jt 2007). ELP sisaldab katselisi ja kirjeldavaid
andmeid (nt sõna pikkus, sagedus, ortograafiliste naabrite arv,
konkreetsus/abstraktsus, sõnaliik, sõna keskmine äratundmisaeg, sõna
keskmine nimetamisaeg jpm) enam kui 40 000 inglise keele sõna kohta,
samuti andmeid väljamõeldud sõnade kohta. Vaata lähemalt siit.
## X Length Freq Mean_RT
## 1 marveled 8 131 819.19
## 2 persuaders 10 82 977.63
## 3 midmost 7 0 908.22
## 4 crutch 6 592 766.30
## 5 resuspension 12 2 1125.42
## 6 efflorescent 12 9 948.33
Selles andmestikus on ainult 5 tunnust: X
(sõna ise),
Length
(sõna pikkus tähemärkides), Freq
(sõna
sagedus HAL korpuses), Mean_RT
(keskmine reaktsiooniaeg
millisekundites sõna-mittesõna äratundmisel).
Tahaksime teada, kas sõna-mittesõna otsuse tegemiseks kuluv aeg sõltub sõna pikkusest. Meie hüpotees on, et pikemate sõnade äratundmiseks kuluv aeg on pikem.
# Teeme kõigepealt joonise
plot(x = ldt$Length, y = ldt$Mean_RT)
# või
# plot(ldt$Mean_RT ~ ldt$Length)
# või
# plot(Mean_RT ~ Length, ldt)
Lisame ka regressioonijoone, mis lihtsustatult öeldes näitab üldist suundumust andmetes. Regressioonist tuleb pikemalt juttu aprillikuu praktikumides.
plot(Mean_RT ~ Length, ldt)
abline(lm(Mean_RT ~ Length, ldt), col = "red")
# abline-funktsioon peab alati järgnema joonise funktsioonile
# Sama asi ggplotiga
library(ggplot2)
ggplot(data = ldt,
aes(x = Length, y = Mean_RT)) +
geom_point(shape = 1, size = 3) +
geom_smooth(method = lm,
se = FALSE,
col = "red")
## `geom_smooth()` using formula = 'y ~ x'
Tundub, et tegemist on positiivse monotoonse korrelatsiooniga: mida pikem on sõna, seda rohkem aega kulub otsustamiseks, kas tegemist on sõna või mitte-sõnaga.
Leiame Pearsoni korrelatsioonikordaja. Mida selle väärtus näitab?
## [1] 0.6147456
## [1] 0.6147456
Näeme jooniselt, et andmestikus tundub olevat paar sõna, mille reaktsiooniaeg on eriti pikk (üle 1200 ms). Kontrollime, kas need võivad olla erindid ja seega meie korrelatsioonikordajat mõjutada.
## [1] 1314.33 1216.81 1458.75
Vaatame, mis korrelatsioonikordajaga juhtub, kui viskame erindid andmestikust välja.
## [1] 100
## [1] 97
# Joonistame algsele joonisele ldt andmestikust
# veel ühe regressioonijoone ldt1 andmestiku põhjal
plot(Mean_RT ~ Length, ldt)
abline(lm(Mean_RT ~ Length, ldt), col = "red")
abline(lm(Mean_RT ~ Length, ldt1), col = "blue", lty = "dashed") # ldt1 regressioonijoon
# Sama asi ggplotiga
ggplot(data = ldt,
aes(x = Length, y = Mean_RT)) +
geom_point(shape = 1, size = 3) +
geom_smooth(method = lm,
se = FALSE,
col = "red") +
geom_smooth(data = ldt1, # uued andmed (tunnused samad)
method = lm,
se = FALSE,
col = "blue",
linetype = "dashed")
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
Näeme, et regressioonijoone kalle muutub laugemaks ning tegelikult väheneb ka korrelatsiooni tugevus.
## [1] 0.5886011
Selleks, et olla kindlam selles, et korrelatsioonikordaja näitab olulist seost ka mõnes teises üldkogumist juhuslikult võetud valimis, tuleb testida korrelatsioonikordaja statistilist olulisust. Selle testimisel on mitmeid eeldusi:
Valimi juhuslikkus (1) on antud juhul täidetud ning mõlemad tunnused
on tõepoolest vähemalt intervallskaalal (2). Teiste eelduste jaoks peame
kasutama juba tegelikult lineaarse regressiooni mudelit funktsiooniga
lm(y ~ x)
.
3. Normaaljaotuse kontrollimine.
# Kuna andmestik on suur (N > 30), peame kontrollima ainult
# tunnuste ühisjaotust.
# install.packages("energy")
library(energy)
# Funktsiooni sisendiks on maatriks,
# seega peame andmestiku tulbad
# kombineerima maatriksiks nt käsuga cbind.
# H0: ühisjaotus on normaaljaotusega,
# H1: ühisjaotus ei ole normaaljaotusega
mvnorm.etest(cbind(ldt1$Length, ldt1$Mean_RT),
R = 999)
# Iga kord saab natuke erineva väärtuse!
##
## Energy test of multivariate normality: estimated parameters
##
## data: x, sample size 97, dimension 2, replicates 999
## E-statistic = 0.48503, p-value = 0.8899
Nagu ka Shapiro-Wilki testi puhul on siin nullhüpoteesiks, et andmete ühisjaotus läheneb normaaljaotusele. Seega näitab suur p-väärtus siin, et peame jääma selle nullhüpoteesi juurde ning tõdeme, et normaaljaotuse eeldusega on kõik hästi.
4. Jääkide dispersiooni kontrollimine. Jäägid on iga vaatluse kaugus regressioonijoonest (samades ühikutes, mis y-teljel olev tunnus).
# Vaatleme kaht suvalist arvulist tunnust q ja w1
set.seed(1)
q <- 1:50
w1 <- q + runif(50, 1, 50)
plot(w1 ~ q);abline(lm(w1 ~ q), col = "red")
for (i in w1) {
indeks <- which(w1 == i)
lines(rep(q[indeks],
length(w1[indeks]:lm(w1 ~ q)$fitted[indeks])),
w1[indeks]:lm(w1 ~ q)$fitted[indeks],
lty = "dashed")
}
## [1] 15.00992 21.23407 32.06981 49.50218 15.88241 51.02109
# Regressioonijoone y-teljel oleva tunnuse väärtused
ennustatud <- lm(w1 ~ q)$fitted
head(ennustatud)
## 1 2 3 4 5 6
## 26.95910 28.00554 29.05199 30.09844 31.14488 32.19133
# Leiame jäägid ja kuvame need graafikul
resid <- w1 - ennustatud
par(mfrow = c(1,2))
plot(q, resid, main = "Homoskedastiline jaotumine")
plot(q, resid * q, main = "Heteroskedastiline jaotumine")
Kui jääkide dispersioon on homoskedastiline, siis on iga x-teljel oleva tunnuse väärtuse puhul jääkide hajuvus ühesugune. Kui jääkide dispersioon on heteroskedastiline, siis märkame enamasti lehtrikujulist jaotust: y-teljel oleva tunnuse väärtused ei kasva/kahane x-telje igas vahemikus ühtmoodi ning mingite x-telje väärtuste puhul on y-telje väärtused üksteisest palju erinevamad kui mingite teiste x-telje väärtuste puhul.
Vaatleme nüüd pikkuse ja reaktsiooniaja jääke.
teg <- ldt1$Mean_RT # tegelikud reaktsiooniajad
enn <- lm(ldt1$Mean_RT ~ ldt1$Length)$fitted # ennustatud reaktsiooniajad
res <- teg - enn # jäägid
plot(ldt1$Length, res)
Jääkide homoskedastilisuse kontrollimiseks on kindlam kasutada testi
ncvTest
paketist car
.
# install.packages("car")
library(car)
# H0: jääkide dispersioon on homoskedastiline
# H1: jääkide dispersioon on heteroskedastiline
ncvTest(lm(ldt1$Mean_RT ~ ldt1$Length))
## Non-constant Variance Score Test
## Variance formula: ~ fitted.values
## Chisquare = 1.243717, Df = 1, p = 0.26476
Kuna p > 0.05, siis saame öelda, et ka jääkide homoskedastilisusega on kõik korras.
5. Jääkide sõltumatus
# library(car)
# H0: autokorrelatsiooni jääkide vahel ei ole
# H1: autokorrelatsioon jääkide vahel eksisteerib
durbinWatsonTest(lm(ldt1$Mean_RT ~ ldt1$Length))
## lag Autocorrelation D-W Statistic p-value
## 1 0.03234626 1.923466 0.682
## Alternative hypothesis: rho != 0
Kuna p > 0.05, siis jääme nullhüpoteesi juurde, mille järgi jääkide vahel ei ole autokorrelatsiooni. Seega ei sõltu tunnuse väärtus tunnuse eelmisest väärtusest (= ühe mingi pikkusega sõna reaktsiooniaeg ei sõltu sellele eelnevast mingi pikkusega sõna reaktsiooniajast). Jääkide autokorrelatsiooni võib ette tulla tunnuste puhul, kus muutus on järk-järguline (nt temperatuur), aegridade analüüsis, aga ka juhul, kui nt ühelt subjektilt on mitu vaatlust. Autokorrelatsiooni testimisel tuleb hoolikas olla ka nt andmete sorteerimisega!
## lag Autocorrelation D-W Statistic p-value
## 1 0.6049382 0.7299267 0
## Alternative hypothesis: rho != 0
Kui oleme kindlad, et andmestik vastab kõikidele eeldustele, siis
saame testida kordaja olulisust. Nagu ka t-testi puhul, võib valida, kas
teeme ühepoolse või kahepoolse testi. Kui eeldame, et korrelatsioon on
positiivne ehk sisukas hüpotees on, et korrelatsioonikordaja > 0,
siis teeme ühepoolse hüpoteesi ja lisame alternative =
“greater”. Kui eeldame, et korrelatsioon on negatiivne
(korrelatsioonikordaja < 0), siis lisame alternative =
“less”. Kui pole otsest põhjust testida ainult kas negatiivset või
positiivset korrelatsiooni, võib jätta alternative
argumendi välja või kasutada alternative = “two.sided”.
NB! Funktsiooni cor.test()
argumendid on kujul
x, y
, mitte y ~ x
.
##
## Pearson's product-moment correlation
##
## data: ldt1$Length and ldt1$Mean_RT
## t = 7.0965, df = 95, p-value = 1.145e-10
## alternative hypothesis: true correlation is greater than 0
## 95 percent confidence interval:
## 0.4667205 1.0000000
## sample estimates:
## cor
## 0.5886011
Saame sama korrelatsioonikordaja, mis funktsiooni cor()
puhul. Korrelatsioon on seega positiivne ja väga tugev.
p-väärtus 1.145e-10 ehk 0.0000000001145 näitab, et
korrelatsioon on statistiliselt oluline ehk kehtib tõenäoliselt ka
üldkogumis.
Sobivad, kui
Omadused:
Spearmani ja Kendalli korrelatsioonikordaja olulisuse testimisel on kaks eeldust:
Ilmselgelt peab tegemist olema ka monotoonse seosega, vastasel juhul ei ole korrelatsioonikordajal mingit sisu.
Siin osas me nüüd ei vaata arvuliste tunnuste erinevusi (või seoseid) kahe küsimustüübi rühma vahel vaid kahe arvulise tunnuse vahelisi seoseid rühmast sõltumata. Võtame vaadeldavateks tunnusteks kestuse ja põhitooni ulatuse: kas põhitooni liikumine lausungi jooksul võiks olla seotud lausungi kestusega?
H0: kestuse ja põhitooni ulatuse vahel seos puudub H1: pikema kestusega lausungitel on suurem põhitooni ulatus
load("data/yllatuskysimused_koneleja_keskmised.Rda")
plot(f0_ulat_sem~kestus, data = ylla); abline(lm(f0_ulat_sem~kestus, data = ylla))
Kontrollime, kas tunnused on normaaljaotusega.
# mäletame eelmisest korrast, et ei ole
hist(ylla$kestus)
shapiro.test(ylla$kestus)
hist(ylla$f0_ulat_sem)
shapiro.test(ylla$f0_ulat_sem)
Kuna tunnused ei ole kumbki normaaljaotusega, oleks parem kasutada Spearmani või Kendalli korrelatsioonikordajat.
##
## Spearman's rank correlation rho
##
## data: ylla$f0_ulat_sem and ylla$kestus
## S = 44376, p-value = 4.9e-08
## alternative hypothesis: true rho is greater than 0
## sample estimates:
## rho
## 0.5507138
# kui pole otsest eeldust, mille kohaselt negatiivne korrelatsioon ei tohiks võimalik olla,
# võiks tegelikult testida kahepoolset hüpoteesi
cor.test(ylla$f0_ulat_sem, ylla$kestus, method = "spearman", alternative = "two.sided")
##
## Spearman's rank correlation rho
##
## data: ylla$f0_ulat_sem and ylla$kestus
## S = 44376, p-value = 9.8e-08
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.5507138
Seos on oluline ja positiivne: pikema kestusega küsimustel on suurem põhitooni ulatus.
Arvutame ka Kendalli tau.
##
## Kendall's rank correlation tau
##
## data: ylla$f0_ulat_sem and ylla$kestus
## z = 5.2229, p-value = 1.761e-07
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.3878371
Kumba valida? Selle üle vaieldakse ja tavaliselt valitakse see, mis vastavas uurimisvaldkonnas tavaks on. Samas ütlevad mõned, et kui andmestik on väike ja mitu vaatlust on samade väärtustega, siis peaks eelistama Kendalli korrelatsioonikordajat.
Vaatame veel lõpuks, kas meil oli tegu ikka puhtalt monotoonse seosega.
ggplot(data = ylla,
aes(x = kestus, y = f0_ulat_sem)) +
geom_point(shape = 1) +
geom_smooth(method = "loess")
## `geom_smooth()` using formula = 'y ~ x'
Pigem on monotoonne: mittelineaarne regressioonijoon teeb küll väikse
jõnksu alla umbes 0.8 sekundi pikkuste lausungite juures, aga see jõnks
ei pruugi olla oluline. Võimalik et jõnks on tingitud kahetipulisest
jaotusest: mäletatavasti on infoküsimustel keskmiselt lühem kestus kui
üllatusküsimustel. Jagame info- (ISQ) ja üllatusküsimused (SQ) eri
ggploti paneelidele ja lisame kummalegi paneelile
ggpubr
-paketist korrelatsioonikordaja ja
p-väärtuse.
# install.packages("ggpubr")
library(ggpubr)
ggplot(data = ylla,
aes(x = kestus, y = f0_ulat_sem)) +
geom_point(shape = 1) +
geom_smooth(method = "lm") +
facet_wrap("tyyp1") +
stat_cor(method = "spearman",
cor.coef.name = "rho",
alternative = "two.sided")
## `geom_smooth()` using formula = 'y ~ x'
Nagu t-testi puhul, saame ka siin kasutada paketti
report
.
library(report)
report(cor.test(ylla$f0_ulat_sem, ylla$kestus, method = "spearman", alternative = "two.sided"))
## Effect sizes were labelled following Funder's (2019) recommendations.
##
## The Spearman's rank correlation rho between ylla$f0_ulat_sem and ylla$kestus is
## positive, statistically significant, and very large (rho = 0.55, S = 44376.00,
## p < .001)
Eeldused | Pearson | Spearman või Kendall |
---|---|---|
Juhuslikud valimid | Jah | Jah |
Sõltumatud vaatlused | Jah | Jah |
Jääkide vahel ei ole autokorrelatsiooni |
Jah | Jah |
Vähemalt …skaalal tunnus | intervalli- | järjestus- |
Normaaljaotus (või n>30) | Jah | Ei |
Jääkide ühtlane hajuvus | Jah | Ei |
Lineaarne suhe | Jah | Ei |
Eelkõige küsitluste puhul on meil sageli mitu järjestusskaalal tunnust ning tahaksime näha, kuidas nende (keskmised) väärtused omavahel suhestuvad. Peaksime tegema niisiis terve hulga korrelatsiooniteste, aga lihtsam viis on tunnustevahelisi korrelatsioone sel juhul hoopis visuaalselt analüüsida.
#Andmestik Euroopa linnade meelelahutuskohtade, söögikohtade,
# vaatamisväärsuste jm hinnangute kohta.
load(url("https://www-1.ms.ut.ee/mart/andmeteadus/ratings.RData"))
head(ratings)
## restoranid pitsa pagarid kohvikud baarid tantsuklubid rannad ujulad spa
## 1 2.33 1.69 0.5 0 2.64 0.59 3.63 0.5 0
## 2 2.33 1.69 0.5 0 2.65 0.59 3.63 0.5 0
## 3 2.33 1.69 0.5 0 2.64 0.59 3.63 0.5 0
## 4 2.33 1.69 0.5 0 2.64 0.59 3.63 0.5 0
## 5 2.33 1.69 0.5 0 2.64 0.59 3.63 0.5 0
## 6 2.33 1.69 0.5 0 2.65 0.59 3.63 0.5 0
## spordikeskus aiad pargid vaatekohad kirikud muuseumid kunstigaleriid teatrid
## 1 0 0 3.65 0 0 2.92 1.74 5
## 2 0 0 3.65 0 0 2.92 1.74 5
## 3 0 0 3.63 0 0 2.92 1.74 5
## 4 0 0 3.63 0 0 2.92 1.74 5
## 5 0 0 3.63 0 0 2.92 1.74 5
## 6 0 0 3.63 0 0 2.92 1.74 5
## poed majutus
## 1 5 1.70
## 2 5 1.70
## 3 5 1.70
## 4 5 1.70
## 5 5 1.70
## 6 5 1.69
# install.packages("corrplot")
library(corrplot)
corrplot(korrelatsioonid,
type = "upper", # ainult ülemine osa graafikust
diag = FALSE) # ära näita korrelatsioone iseendaga
Mida tumedam ja suurem on ring, seda tugevam on kahe tunnuse vaheline sõltuvus (sinisega positiivne, punasega negatiivne).
Visualiseerimisvõimalusi pakuvad aga teisedki paketid.
# install.packages("ggcorrplot")
library(ggcorrplot)
ggcorrplot(korrelatsioonid,
type = "upper",
colors = c("red", "white", "blue"), # määra värvid
lab = T, # näita korrelatsioonikordajaid kastikestes
lab_size = 2, # korrelatsioonikordaja suurus
p.mat = cor_pmat(ratings), # p-väärtused
legend.title = "Korrelatsioon", # legendi pealkiri
ggtheme = theme_classic()) + # joonise teema
theme(axis.text.x = element_text(angle = 270, # pööra x-telje silte
hjust = 0)) # joonda silte
Asi, mida statistiliste testide puhul võiks lisaks uurida, on testi võimsus ehk tõenäosus, et test suudab olulise seose tuvastada, kui see tegelikult ka olemas on. Testi võimsus sõltub eeskätt valimi suurusest, mõju suurusest ja olulisuse nivoost.
Vaatame näiteks korrelatsioonitesti võimsust, kui uurime sõna pikkuse ja reaktsiooniaja vahelist seost.
# install.packages("pwr")
library(pwr)
n = nrow(ldt1) # valimi suurus / vaatluste arv
r = cor(ldt1$Mean_RT, ldt1$Length) # mõju suurus (siin korrelatsioonikordaja)
pwr.r.test(n = n, r = r, sig.level = 0.05, alternative = "greater")
##
## approximate correlation power calculation (arctangh transformation)
##
## n = 97
## r = 0.5886011
## sig.level = 0.05
## power = 0.9999996
## alternative = greater
Testi võimsus on 0.9999996, mis tähendab, et tõenäosus, et teeme teist tüüpi vea (ütleme, et seost ei ole, kui tegelikult on), on väiksem kui 1% ((1-0.9999996)*100).
Testi võimsuse analüüs aitab nõnda näiteks aru saada, kas statistiliselt ebaoluline seos tuleneb sellest, et meil on liiga vähe vaatlusi, või sellest, et seost ka tegelikult tõenäoliselt ei eksisteeri.
Ka t-testile on pwr
paketis oma funktsioon.
load("data/kysimustik_2024.RData")
t.test(log(kysimustik$kaua_opid) ~ kysimustik$kogemused_kvant,
var.equal = TRUE)
moju <- effsize::cohen.d(log(kaua_opid) ~ kogemused_kvant, kysimustik)
n = nrow(kysimustik) # valimi suurus / vaatluste arv
d = moju$estimate # mõju suurus (siin Coheni D)
pwr.t.test(n = n, d = d, sig.level = 0.05, alternative = "two.sided")
##
## Two Sample t-test
##
## data: log(kysimustik$kaua_opid) by kysimustik$kogemused_kvant
## t = -2.3889, df = 102, p-value = 0.01874
## alternative hypothesis: true difference in means between group Ei and group Jah is not equal to 0
## 95 percent confidence interval:
## -0.68729610 -0.06373097
## sample estimates:
## mean in group Ei mean in group Jah
## 1.230461 1.605975
##
##
## Two-sample t test power calculation
##
## n = 104
## d = 0.4993823
## sig.level = 0.05
## power = 0.9478435
## alternative = two.sided
##
## NOTE: n is number in *each* group
Siin saame t-testiga statistiliselt ebaolulise tulemuse (olulisuse nivool 0.05) ning kuna testi võimsus on sellise vaatluste arvu ning mõju suurusega päris suur (86%), peame tõdema, et ilmselt õpitud aastate arvu ja kvantitatiivsete meetodite kogemuse vahel tõepoolest ei ole olulist seost ka populatsioonis ja tõenäosus, et teeme seda öeldes teist tüüpi vea (= tegelikult on oluline seos populatsioonis olemas), on 14%.
Mittearvuliste tunnuste vahelised seosed.
cor(x, y)
- annab ainult
korrelatsioonikordaja
cor.test(x, y)
- korrelatsiooni test
plot(y~x) - kahe arvulise tunnusega joonis
abline() - lisab sirge joone sirge joone, sisendiks võib olla kas horisontaalse või vertikaalse koordinaadi väärtus või regressioonijoone joonistamiseks lineaarse regressiooni funktsioon:
abline(lm(y~x)) - lineaarne regressioonijoon joonisele; lineaarsest regressioonist ülejärgmises praktikumis