Logistilise regressiooni mudelid

Lühidalt kordamiseks

load("data/kysimustik_2024.RData")
# Jätame välja ühe vaatluse
kysimustik2 <- droplevels(kysimustik[kysimustik$lemmikloom != "Mulle ei meeldi loomad",])

mod <- lm(kaua_opid ~ synniaasta + kogemused_kvant + lemmikloom, data = kysimustik2)
summary(mod)
## 
## Call:
## lm(formula = kaua_opid ~ synniaasta + kogemused_kvant + lemmikloom, 
##     data = kysimustik2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -10.1342  -1.5311  -0.1607   1.1202  12.5656 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          716.27254   75.99001   9.426 2.13e-15 ***
## synniaasta            -0.35624    0.03812  -9.344 3.20e-15 ***
## kogemused_kvantJah     1.54848    0.68303   2.267  0.02558 *  
## lemmikloomKaelkirjak  -1.82008    0.93379  -1.949  0.05414 .  
## lemmikloomKoer        -2.34155    0.87172  -2.686  0.00849 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.237 on 98 degrees of freedom
## Multiple R-squared:  0.5149, Adjusted R-squared:  0.4951 
## F-statistic:    26 on 4 and 98 DF,  p-value: 1.061e-14

Lineaarne regressioon aitab seletada arvulise uuritava tunnuse varieerumist ühe või enama seletava tunnuse põhjal.
Seletavad tunnused võivad olla nii

  • arvulised: kui palju suureneb/väheneb uuritava tunnuse ennustatud keskväärtus, kui arvuline tunnus suureneb ühe ühiku võrra?
  • kategoriaalsed: kui palju suureneb/väheneb uuritava tunnuse ennustatud keskväärtus, kui muuta tunnuse klassi/taset?


Lineaarse mudeli väljundi vabaliige (intercept) näitab arvulise uuritava tunnuse ennustatud väärtust kontekstis, kus arvulise seletava tunnuse väärtus on (vaikimisi) 0 ja kategoriaalse seletava tunnuse väärtus on (vaikimisi) tähestikulises järjekorras kõige esimene tase.

  • Näiteks tunnuse kogemused_kvant baastase on Ei ja tunnuse lemmikloom baastase on Glaucus atlanticus.

Lineaarse mudeli väljundi koefitsiendid (coefficient) ehk regressioonikordajad näitavad muutust arvulise uuritava tunnuse väärtuses, kui muuta seletava tunnuse väärtust (kas 1 ühiku võrra või 1 taseme võrra).

  • Näiteks sellisele osalejale, kellel ei ole kogemusi kvantitatiivsete meetoditega ja kelle lemmikloom on glaucus atlanticus, ennustab mudel iga aastase kasvu kohta tema sünniaastas õpitud aastate arvu kahanemist 0.356242 aasta võrra. Kui sellise osaleja sünniaasta oleks nt 1987, ennustaks mudel tema ülikoolis õpitud aastate arvuks 716.27254 + 1987 * (-0.35624) ehk 8.4196675 aastat.
  • Sama sünniaastaga osalejale, kellel on kogemusi kvantitatiivsete meetoditega ja kelle lemmikloom on glaucus atlanticus, ennustab mudel õpitud aastate arvuks aga 716.27254 + 1987 * (-0.35624) + 1.54848 ehk 9.9681502 aastat.
  • Sama sünniaastaga osalejale, kellel on kogemusi kvantitatiivsete meetoditega ja kelle lemmikloom on koer, ennustab mudel õpitud aastate arvuks 716.27254 + 1987 * (-0.35624) + 1.54848 -2.34155 ehk 7.6266024.


Mudeli ennustusi konkreetsetele vaatlustele saame küsida ka funktsiooniga predict(), kui anname ette andmetabeli seletavate tunnuste väärtustega.

predict(mod, 
        data.frame(synniaasta = 1987, kogemused_kvant = "Jah", lemmikloom = "Glaucus atlanticus"))
##       1 
## 9.96815
predict(mod, 
        data.frame(synniaasta = 1987, kogemused_kvant = "Jah", lemmikloom = "Koer"))
##        1 
## 7.626602


Kategoriaalse seletava tunnuse puhul, millel on > 2 taset ja seega > 1 koefitsienti, hindavad kõik koefitsiendid muutust võrreldes baastasemega ega ütle midagi koefitsientide omavahelise suhte kohta. Näiteks hindavad kõik tunnuse lemmikloom koefitsiendid muutust võrreldes glaucus atlanticusega.

Erinevuse suunda võrreldes baastasemega näitab koefitsiendi märk: kui koefitsient on positiivne, siis uuritava tunnuse ennustatud väärtus kasvab, kui koefitsient on negatiivne, siis kahaneb.
Erinevuse statistilist olulisust näitavad koefitsientide p-väärtused. Kui koefitsiendi p-väärtus on > 0.05, ei ole statistiliselt olulist erinevust võrreldes baaskontekstiga (mis ei tähenda tingimata, et erinevus ei oleks oluline mingite teiste väärtuste vahel). Näiteks on ennustatud õpitud aastate arv oluliselt erinev osalejal, kelle hüpoteetiline sünniaasta on 0, ja osalejal, kelle hüpoteetiline sünniaasta on 1. Samuti on ennustatud õpitud aastate arv oluliselt erinev osalejal, kelle lemmikloom on glaucus atlanticus, ja osalejal, kelle lemmikloom on koer (aga me ei tea, kas ka näiteks kaelkirjaku ja koera vahel).

Tasemete omavahelist erinevust saab hinnata post-hoc testide või jooniste abil.

# https://strengejacke.github.io/ggeffects/articles/introduction_plotmethod.html
# install.packages("ggeffects")
library(ggeffects)
plot(ggpredict(mod))


  • Lineaarse mudeli üldist headust näitab R-ruut (mudelite võrdlemisel kohandatud R-ruut), mudeli statistilist olulisust mudeli p-väärtus.
  • Samal andmestikul tehtud mudeleid saab võrrelda funktsiooniga anova(), mis teeb I tüüpi ANOVA.
  • Mudelisse kaasatud tunnuste üldist statistilist olulisust saab hinnata II või III tüüpi ANOVAga (nt car::Anova()), vastavalt sellele, kas mudelis on olulisi interaktsioone (III) või mitte (II). Kui kasutada ainult ühe mudeli tunnuste olulisuse hindamiseks I tüüpi ANOVAt, sõltub tulemus tasakaalustamata andmestikus sellest, mis järjekorras tunnuseid mudelisse on lisatud.


- Ka regressioonimudelite tulemusi saab lasta automaatselt raporteerida.

library(report)
report_text(mod)
## We fitted a linear model (estimated using OLS) to predict kaua_opid with
## synniaasta, kogemused_kvant and lemmikloom (formula: kaua_opid ~ synniaasta +
## kogemused_kvant + lemmikloom). The model explains a statistically significant
## and substantial proportion of variance (R2 = 0.51, F(4, 98) = 26.00, p < .001,
## adj. R2 = 0.50). The model's intercept, corresponding to synniaasta = 0,
## kogemused_kvant = Ei and lemmikloom = Glaucus atlanticus, is at 716.27 (95% CI
## [565.47, 867.07], t(98) = 9.43, p < .001). Within this model:
## 
##   - The effect of synniaasta is statistically significant and negative (beta =
## -0.36, 95% CI [-0.43, -0.28], t(98) = -9.34, p < .001; Std. beta = -0.66, 95%
## CI [-0.81, -0.52])
##   - The effect of kogemused kvant [Jah] is statistically significant and positive
## (beta = 1.55, 95% CI [0.19, 2.90], t(98) = 2.27, p = 0.026; Std. beta = 0.34,
## 95% CI [0.04, 0.64])
##   - The effect of lemmikloom [Kaelkirjak] is statistically non-significant and
## negative (beta = -1.82, 95% CI [-3.67, 0.03], t(98) = -1.95, p = 0.054; Std.
## beta = -0.40, 95% CI [-0.81, 7.24e-03])
##   - The effect of lemmikloom [Koer] is statistically significant and negative
## (beta = -2.34, 95% CI [-4.07, -0.61], t(98) = -2.69, p = 0.008; Std. beta =
## -0.51, 95% CI [-0.89, -0.13])
## 
## Standardized parameters were obtained by fitting the model on a standardized
## version of the dataset. 95% Confidence Intervals (CIs) and p-values were
## computed using a Wald t-distribution approximation.
  • Kui seletavate tunnuste vahel on oluline interaktsioon, tähendab see seda, et ühe seletava tunnuse mõju sõltub sellest, mis on mingi teise tunnuse väärtus.
mod2 <- lm(kaua_opid ~ synniaasta*lemmikloom, data = kysimustik2)
plot(ggpredict(mod2, terms = c("synniaasta", "lemmikloom")))

# Sünniaasta efekt on igal pool negatiivne (= mida suurem sünniaasta, seda vähem ülikoolis õpitud aastaid),
# aga glaucus atlanticuse valinute puhul on sünniaasta efekt palju suurem (= noorte ja vanade vahel suuremad erinevused õpitud aastates).
# Lemmiklooma efekt (= glaucus atlanticuse valinud on keskmiselt kauem õppinud) püsib ainult u kuni sünniaastani 1995.   
  • Kui lineaarses regressioonimudelis on ka arvulisi seletavaid tunnuseid (st tegemist ei ole lihtsalt ANOVAga), võiks kontrollida:
    • kas andmetes on mingeid erindeid,
    • kas mudeli jääkide (mudeli_nimi$residuals) hajuvus on ühtlane,
    • kas mudeli jäägid on normaaljaotusega,
    • kas uuritava tunnuse ja arvuliste seletavate tunnuste vahel on ikka lineaarne seos (äkki seletaks mõni mittelineaarne mudel uuritava tunnuse varieerumist paremini?),
    • kas seletavate tunnuste vahel esineb multikollineaarsust (mitu seletavat tunnust seletab sama asja, seda võiks kontrollida ka kategoriaalsete tunnuste puhul).
    • Paljude nende asjade jaoks võib kasutada nt funktsiooni plot(mudeli_nimi):
        1. Residuals vs. Fitted: x-teljel mudeli ennustatud väärtused, y-teljel mudeli jäägid (erinevused tegelike ja ennustatud väärtuste vahel). Punane horisontaalne joon peaks olema enam-vähem sirge ja jäägid koonduma juhuslikult selle sirge ümber. Kui joon ei ole sirge, võib olla probleeme lineaarse suhtega, kui jäägid ei haju terve x-telje ulatuses ühtlaselt, siis võib olla probleeme jääkide homoskedastilisusega.
        1. Normal Q-Q: kontrollib jääkide normaaljaotust.
        1. Scale-Location: x-teljel mudeli ennustatud väärtused, y-teljel ruutjuur standardiseeritud jääkidest. Kontrollib samuti jääkide homoskedastilisust. Kui jäägid ei haju ühtlaselt sirge joone ümber, võib olla homoskedastilisusega probleeme.
        1. Residuals vs. Leverage Plot: y-teljel standardiseeritud jäägid, x-teljel nn Leverage, mis näitab, kui palju mingi konkreetne andmepunkt/vaatlus koefitsientide hinnanguid mõjutab. Kui vaatlusel on suur jääk ja suur Leverage’i hinnang, võiks kaaluda selle mudelist väljajätmist.
    • Võib kasutada nt ka paketti performance.
# https://easystats.github.io/performance/articles/check_model.html
# install.packages("performance")
library(performance)
check_model(mod)

Mida komplekssem on mudel, seda keerulisemaks eelduste kontroll läheb (mistõttu jäetakse see oluline osa sageli tegemata).
- Loe ka nt Ako Sauga (2020). Statistika õpik majanduseriala üliõpilastele.

Tänases praktikumis

  • Tõenäosus, šanss, šansisuhe
  • Sissejuhatus logistilisse regressiooni

Logistiline regressioon seletab ühe tunnuse muutumist sõltuvalt teis(t)e tunnus(t)e muutumisest, kui sõltuvaks muutujaks/uuritavaks tunnuseks on kategoriaalne tunnus.

Logistilise regressiooni mudel näeb välja sarnane lineaarse regressioonimudeli omaga. Funktsiooni lm() asemel kasutame funktsiooni glm(), kuna logistiline regressioon on üks mudel nn üldistatud lineaarsete mudelite (generalized linear models) perest. Üldistatud lineaarseid mudeleid seob omavahel eeskätt see, et need ei eelda, et mudeli jäägid oleksid normaaljaotusega või homoskedastilised, ning nad võimaldavad luua erinevate funktsioonide abil justkui lineaarse seose tunnuste vahel, mille vahel tegelikult lineaarset seost ei ole (sellest natuke hiljem).

Logistilise regressiooni mudelit saab teha näiteks nii:

# Kas vastus lemmikjoogi kohta sõltub lemmikloomast ja sünniaastast?
m.jook <- glm(lemmikjook ~ lemmikloom + synniaasta, data = kysimustik2, family = "binomial") 
# family = "binomial" ütleb, et teeme nn binomiaalset (binaarse uuritava tunnusega) logistilist regressiooni
summary(m.jook)
## 
## Call:
## glm(formula = lemmikjook ~ lemmikloom + synniaasta, family = "binomial", 
##     data = kysimustik2)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)
## (Intercept)          -79.85328   51.18891  -1.560    0.119
## lemmikloomKaelkirjak  -0.17122    0.59386  -0.288    0.773
## lemmikloomKoer         0.07602    0.55153   0.138    0.890
## synniaasta             0.03992    0.02569   1.554    0.120
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.97  on 102  degrees of freedom
## Residual deviance: 137.27  on  99  degrees of freedom
## AIC: 145.27
## 
## Number of Fisher Scoring iterations: 4

Kuna aga mudeli parameetrite hinnangud tulbas Estimate ei ole enam mingites andmestikus olevates originaalühikutes, vaid hindavad mingi sündmuse toimumise tõenäosust, tuleb enne mudelitest rääkimist teha kõigepealt selgeks mõisted tõenäosus, šanss ja šansisuhe/šansside suhe.

Tõenäosus

Tõenäosus (p) on 0 ja 1 vahele jääv arv, mis iseloomustab sündmuse toimumise võimalikkust teatud tingimustel. Tõenäosus leitakse sündmuse toimumiseks soodsate/oodatud võimaluste arvu jagamisel kõikide võimaluste arvuga.

https://www.mathswithmum.com/dice-probability/

Mis on tõenäosus, et veeretame täringul silmade arvu 3?

  • Täringul on 6 tahku. Igal tahul on erinev arv. Kõikide võimaluste arv on seega 6.
  • 3 silma on ainult ühel tahul, soodsate võimaluste arv on seega 1.
  • Tõenäosus, et veeretame täringul silmade arvu 3, on seega 1/6 = 0.1666667.
  • Tõenäosus, et me ei veereta täringul silmade arvu 3, on seega 5/6 = 0.8333333 ehk 1 - 0.1666667.

Mis on tõenäosus, et veeretame täringul paarisarvu silmi?

  • Kõikide võimaluste arv on endiselt 6.
  • Paarisarv silmi (2, 4, 6) on kolmel tahul. Soodsate võimaluste arv on seega 3.
  • Tõenäosus, et veeretame täringul paarisarvu silmi, on seega 3/6 = 0.5.
  • Tõenäosus, et veeretame täringul paaritu arvu silmi, on samuti 3/6 = 0.5 ehk 1 - 0.5.

Vaatame kursusel osalejate küsimustiku andmestikust tunnust kogemused_kvant ja oletame siinjuures, et saame kasutada empiirilisi andmeid seni kursusel osalenute kohta selleks, et ennustada tulevaste kursusel osalejate oskusi ja eelistusi.

(tab <- table(kysimustik$kogemused_kvant))
## 
##  Ei Jah 
##  34  70

Kogemuse omamise tõenäosuse (p) leidmiseks jagame kogemust omajate (= soodsate võimaluste) arvu kõikide vastajate (= võimaluste) arvuga ehk 70 / (34 + 70).

(p_Jah <- tab[["Jah"]]/sum(tab))
## [1] 0.6730769

Kogemuse omamise tõenäosus on 0.6730769.
Kogemuse mitteomamise tõenäosus on 1 - kogemuse omamise tõenäosus ehk 1-0.6730769=0.3269231.

(p_Ei <- 1-p_Jah)
## [1] 0.3269231
# VÕI
(p_Ei <- tab[["Ei"]]/sum(tab))
## [1] 0.3269231

Kogemuse mitteomamise tõenäosus on seega 0.3269231.

Sündmuse toimumise (kogemuse omamise) ja sündmuse mittetoimumise (kogemuse mitteomamise) tõenäosused annavad liites kokku 1. Praegusel juhul näeme, et tõenäosuse võiks seega justkui kõrvutada suhtelise sagedusega. Statistilist tõenäosust võibki hinnata mingi sündmuse suhtelise sageduse kaudu, kui mingit teoreetilist tõenäosushinnangut ei osata anda ning kui katsete/vaatluste arv on küllalt suur.

Kui võrdleksime tee- ja kohvijoomise tõenäosust, võiksime määrata, et sündmuse toimumine on teejoomine ja sündmuse mittetoimumine seega kohvijoomine. Teoreetiliselt ei ole oluline, et tegemist on just kohvijoomisega, vaid sisuliselt vaatleme tee joomise ja tee mittejoomise tõenäosusi.

(p_Tee <- prop.table(table(kysimustik$lemmikjook))["Tee"])
##       Tee 
## 0.4134615
(p_Kohv <- prop.table(table(kysimustik$lemmikjook))["Kohv"])
##      Kohv 
## 0.5865385

Šanss

Šanss (odds) P = p/(1-p) on sündmuse toimumise tõenäosuse ja sündmuse mittetoimumise tõenäosuse suhe ning näitab mitu korda rohkem sündmus toimub kui ei toimu. Tähistame siin šanssi suure P-tähega.

Kui kvantmeetodite kogemuse omamise tõenäosus on 0.6730769 ja mitteomamise tõenäosus on 0.3269231, siis kogemuse omamise šanss on 0.6730769/0.3269231 = 2.0588235.

Kogemust omatakse eeldatavasti niisiis 2.0588235 korda rohkem kui ei omata.

Kui teejoomise tõenäosus on 0.4134615 ja tee mittejoomise tõenäosus (= kohvijoomise tõenäosus) on 0.5865385, siis on teejoomise šanss 0.4134615 / 0.5865385 = 0.704918.

(P_Tee <- p_Tee/p_Kohv)
##      Tee 
## 0.704918

Teed juuakse 0.704918 “korda rohkem” kui ei jooda.
Teisisõnu: teed juuakse vähem kui kohvi.

Kui šanss oleks 1, siis oleks sündmuse toimumise ja mittetoimumise tõenäosused võrdsed (nt teed ja kohvi juuakse ühepalju).

Šansid jäävad 0 ja lõpmatuse vahele.

  • Kui P > 1, siis sündmuse toimumise tõenäosus > sündmuse mittetoimumise tõenäosus.
  • Kui P < 1, siis sündmuse toimumise tõenäosus < sündmuse mittetoimumise tõenäosus.
  • Kui P = 1, siis on sündmuse toimumise ja mittetoimumise tõenäosused võrdsed (0.5).

Sama tulemuseni jõuame tegelikult siis, kui jagame tõenäosuste asemel absoluutarvud: kogemust omavate arv / kogemust mitteomavate arv või teejoojate arv / mitteteejoojate arv. Ehk kui tõenäosuse leidmiseks jagame soodsate võimaluste arvu kõikide võimaluste arvuga, siis šansi leidmiseks jagame soodsate võimaluste arvu ebasoodsate võimaluste arvuga.

# Kogemuse omamise šanss
70/34
## [1] 2.058824
# Teejoomise šanss
43/61
## [1] 0.704918

Kontrollküsimus: mida tähendab, kui sündmuse toimumise šanss on 0.5 (näiteks “šanss, et kroonaviirusesse nakatub naisterahvas, on 0.5”, kui võrreldakse meeste ja naiste nakatumist)?

Šansse (P) saab lihtsalt teisendada tõenäosusteks (p) ja vastupidi.
Kui P = p/(1-p), siis p = P/(1+P).

Tõenäosus (p) Šanss (P) Logit (log(P))
0.001 (sündmus toimub väga väikese tõenäosusega) 0.001 -6.91
0.01 0.01 -4.6
0.05 0.05 -2.94
0.1 0.11 -2.2
0.5 (sündmuse toimumise ja mittetoimumise tõenäosused on võrdsed) 1 0
0.75 3 1.1
0.9 9 2.2
0.95 19 2.94
0.99 99 4.6
0.999 (sündmus toimub väga suure tõenäosusega) 999 6.91



Logit ehk šansi logaritm on - nagu nimigi viitab - logaritmitud šanss. Selle kaudu hinnatakse logistilises regressioonis uuritava tunnuse ennustatud väärtust mingi seletavate tunnuste kombinatsiooni korral. Kui tõenäosus võib varieeruda nullist üheni [0,1] ja šanss nullist lõpmatuseni [0,∞], siis šansi logaritm võib varieeruda miinus lõpmatusest pluss lõpmatuseni [-∞,∞]. See on oluline omadus logistilise regressiooni mudelis!

Võtame veel ühe näite.

Oletame, et meil on kaks üliõpilast. Ühel on prillid ja teisel ei ole.

Ilma prillideta üliõpilane A(hti) hilineb iga 10 loengu kohta 7 loengusse. See tähendab, et ainult 3 loengusse 10st jõuab üliõpilane õigel ajal.

  1. Mis on tema loengusse hilinemise tõenäosus?
(p_A_hilineb <- ...)
  1. Mis on tema loengusse mittehilinemise tõenäosus?
(p_A_eihiline <- ...)
  1. Mis on tema loengusse hilinemise šanss?
(P_A_hilineb <- ...) # NB! Suur P!

Prillideta üliõpilane A hilineb loengusse … korda rohkem kui jõuab õigeks ajaks.

Seevastu prillidega üliõpilane B(runo) hilineb iga 10 loengu kohta ainult 1 loengusse. See tähendab, et 9 loengusse 10st jõuab üliõpilane õigel ajal.

  1. Mis on tema loengusse hilinemise tõenäosus?
(p_B_hilineb <- ...)
  1. Mis on tema loengusse mittehilinemise tõenäosus?
(p_B_eihiline <- ...)
  1. Mis on tema loengusse hilinemise šanss?
(P_B_hilineb <- ...) # NB! Suur P!

Prillidega üliõpilane B hilineb loengusse … korda rohkem kui jõuab õigeks ajaks? Mida see tähendab?

Kui korrutada mis tahes arvu läbi ühest väiksema arvuga, siis saame esialgsest arvust igal juhul väiksema väärtuse.

5*0.9
## [1] 4.5
5*0.7
## [1] 3.5
5*0.5
## [1] 2.5
5*0.3
## [1] 1.5
5*0.1
## [1] 0.5

Seega kui öelda, et üliõpilane jõuab õigeks ajaks 9 loengusse ja hilineb sellest … korda rohkem, siis tähendab see tegelikult seda, et ta hilineb vähem kui ei hiline.

9*...

Kui see arv ümardada, saame uuesti üliõpilase B loengusse hilinemise kordade arvu.

Kui šanss P on väiksem kui 1, siis sündmuse toimumise tõenäosus on väiksem kui sündmuse mittetoimumise tõenäosus. Teisisõnu: kuna prillidega üliõpilase loengusse hilinemise šanss on …, võime järeldada, et üliõpilase loengusse hilinemise tõenäosus on oluliselt väiksem kui tõenäosus jõuda loengusse õigel ajal.

Šansisuhe

Šansside suhte (odds ratio) mõistet kasutatakse selleks, et võrrelda uuritava tunnuse mingi sündmuse toimumise šansse (odds) erinevates gruppides. St võrreldakse mõlemal juhul seda, et sündmus toimub (vastandina šansile, mis võrdleb toimumist mitte-toimumisega).

  • Kui šansisuhe on > 1, siis on 1. rühmas sündmuse toimumise šansid suuremad kui 2. rühmas.
  • Kui šansisuhe on < 1, siis on 1. rühmas sündmuse toimumise šansid väiksemad kui 2. rühmas.
  • Kui šansisuhe on = 1, siis on mõlemas rühmas šansid võrdsed.

Kui tahame nüüd näiteks teada, kui mitu korda kõrgem on prillideta üliõpilase loengusse hilinemise šanss prillidega üliõpilase omast, peamegi leidma šansisuhte.

Šansisuhe ei ole midagi muud kui kahe šansi jagatis.

# Prillideta üliõpilase A
# loengusse hilinemise šanss
P_A <- p_A_hilineb/p_A_eihiline

# Prillidega üliõpilase B
# loengusse hilinemise šanss
P_B <- p_B_hilineb/p_B_eihiline


# Kahe üliõpilase loengusse hilinemise
# šansside suhe
P_A/P_B
## [1] 21

Prillideta üliõpilase A šanss loengusse hilineda on 21 korda kõrgem kui prillidega üliõpilase B šanss loengusse hilineda.

Aga miks need prillid üldse olulised on?

Põhimõtteliselt oleksime siin võinud rääkida ka lihtsalt üliõpilasest A ja üliõpilasest B. Kui aga paneme selle näite nüüd logistilise regressiooni konteksti ja kujutame ette, et meil on hulga rohkem üliõpilasi, kelle kohta on andmed nende hilinemiste ja prillikandmise kohta, siis oleks loengusse hilinemine kategoriaalne uuritav tunnus väärtustega hilineb ja ei_hiline ning prillikandmine kategoriaalne seletav tunnus väärtustega kannab ja ei_kanna.

Logistilises regressioonis hinnatakse seletava(te) tunnus(t)e mõju uuritava tunnuse ühe taseme esinemise tõenäosusele šansi logaritmi kaudu. Teisisõnu saaksime hinnata logistilise regressiooni mudeliga seda, kuidas üliõpilaste loengusse hilinemise šansi logaritm muutub vastavalt sellele, kas tegemist on prillikandjaga või mitte.

Šansisuhet aga kasutame siis, kui tõlgendame logistilise regressiooni koefitsiente, mis näitavad, mitu logaritmitud korda šanss seletava tunnuse muutumise korral muutub.

# Prillide kandmise mõju hilinemisele 1 loengu andmete põhjal

df <- data.frame(nimi = c("Mari", "Bruno", "Ants", "Toomas", "Kertu",
                          "Peeter", "Sille", "Marianne", "Juhan", "Oskar",
                          "Ahti", "Reelika", "Annika", "Rauno", "Joosep",
                          "Imre", "Sille", "Tauri", "Germo", "Norman"),
                 prillid = c(rep("Jah", 10), rep("Ei", 10)),
                 hilines = c(rep("Jah", 1), rep("Ei", 9), rep("Jah", 7), rep("Ei", 3)))

df
##        nimi prillid hilines
## 1      Mari     Jah     Jah
## 2     Bruno     Jah      Ei
## 3      Ants     Jah      Ei
## 4    Toomas     Jah      Ei
## 5     Kertu     Jah      Ei
## 6    Peeter     Jah      Ei
## 7     Sille     Jah      Ei
## 8  Marianne     Jah      Ei
## 9     Juhan     Jah      Ei
## 10    Oskar     Jah      Ei
## 11     Ahti      Ei     Jah
## 12  Reelika      Ei     Jah
## 13   Annika      Ei     Jah
## 14    Rauno      Ei     Jah
## 15   Joosep      Ei     Jah
## 16     Imre      Ei     Jah
## 17    Sille      Ei     Jah
## 18    Tauri      Ei      Ei
## 19    Germo      Ei      Ei
## 20   Norman      Ei      Ei
logmod <- glm(factor(hilines) ~ prillid, 
              data = df, 
              family = "binomial")
summary(logmod)
## 
## Call:
## glm(formula = factor(hilines) ~ prillid, family = "binomial", 
##     data = df)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)   0.8473     0.6901   1.228   0.2195  
## prillidJah   -3.0445     1.2598  -2.417   0.0157 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 26.920  on 19  degrees of freedom
## Residual deviance: 18.719  on 18  degrees of freedom
## AIC: 22.719
## 
## Number of Fisher Scoring iterations: 4

Näiteks kui

  • prillidega (prillid == "Jah") üliõpilaste grupis on tõenäosus loengusse hilineda 0,1 ja tõenäosus mitte hilineda 0,9 ning šanss hilineda seega 0,1/0,9=0,111111,
  • prillideta (prillid == "Ei") üliõpilaste grupis on tõenäosus loengusse hilineda 0,7 ja tõenäosus mitte hilineda 0,3 ning šanss hilineda seega 0,7/0,3=2,333333,
  • siis kui kasutaksime logistilist regressiooni selleks, et uurida, kuidas mõjutab loengusse hilinemist prillikandmine, kusjuures prillikandmise baastase on “Ei”,
  • näitab mudeli vabaliige (Intercept) hilinemise šansi logaritmi prillideta üliõpilaste seas (sest “Ei” on tähestikus eespool kui “Jah”),
  • koefitsient (prillidJah) šansi muutust logaritmitud kordades (ehk logaritmitud šansisuhet), kui vaatame prillikandjate gruppi: mitu (logaritmitud) korda muutub šanss loengusse hilineda, kui muudame seletava tunnuse taset?

Võrdle!

# prillideta üliõpilaste loengusse hilinemise šanss
0.7/0.3
## [1] 2.333333
exp(logmod$coefficients[1])
## (Intercept) 
##    2.333333
# prillidega üliõpilaste loengusse hilinemise šansi ja prillideta üliõpilaste loengusse hilinemise šansi suhe/jagatis (mitu korda "rohkem" hilinevad prillidega üliõpilased?)
0.111111/2.333333
## [1] 0.04761901
exp(logmod$coefficients[2])
## prillidJah 
## 0.04761905
# prillidega üliõpilaste loengusse hilinemise šanss
0.1/0.9
## [1] 0.1111111
exp(logmod$coefficients[1] + logmod$coefficients[2])
## (Intercept) 
##   0.1111111

Logistiline regressioon

Logistilise regressiooni puhul on uuritav tunnus kategoriaalne ja selle varieerumist seletatakse ühe või enama kategoriaalse või arvulise tunnuse kaudu. Logistiline regressioon on olemuselt klassifitseerimismeetod ning seda saab kasutada, kui uurimisküsimust saab püstitada vähemalt ühel moel järgnevatest:

  • milline oleks uuritava tunnuse ennustatav tase/klass seletavate tunnuste mingite väärtuste korral?
  • milliste seletavate tunnuste väärtuste korral oleks uuritava tunnuse ennustatav klass X?

Või siis täpsemalt tõenäosuste kaudu:

  • milline oleks uuritava tunnuse taseme/klassi ennustatav tõenäosus seletavate tunnuste mingite väärtuste korral?
  • milliste seletavate tunnuste väärtuste korral oleks uuritava tunnuse ennustatav klass tõenäolisemalt X?

Sõltuvalt sellest, kas kategoriaalsel tunnusel on kaks või enam taset, nimetatakse analüüsimeetodit vastavalt kas binomiaalseks või multinomiaalseks logistiliseks regressiooniks.

  • Millest sõltub see, kas vastaja eelistab kohvi või teed? <- Binomiaalne regressioon.
  • Millest sõltub see, kas vastajale meeldivad koerad, kaelkirjakud või molluskid? <- Multinomiaalne regressioon.

Siin räägime põhiliselt binomiaalsest logistilisest regressioonist, kus on kahe tasemega uuritav tunnus. See on aluseks ka multinomiaalsele regressioonile, kus mitme tasemega kategoriaalse uuritava tunnuse puhul võrreldakse kas 1) üht taset kõikide teistega (“muud”) või 2) igat taset iga teise tasemega.

Kahe tasemega uuritava tunnuse saab taandada vastanduseks sündmus toimub vs. sündmust ei toimu, midagi esineb vs. midagi ei esine, midagi on vs. midagi ei ole jne. See uuritava tunnuse tase, mis esindab sündmuse toimumist, saab väärtuseks arvu 1, ning teine, mis esindab sündmuse mittetoimumist, saab väärtuseks arvu 0. Vaikimisi määratakse sündmuse toimumiseks (1) see uuritava tunnuse väärtus/klass/tase, mis on tähestikulises järjekorras tagapool. Näiteks tee- ja kohvijoomise eelistuste uurimise puhul oleks teejoomine sündmuse toimumine ja kohvijoomine seega sündmuse mittetoimumine.

levels(kysimustik$lemmikjook)
## [1] "Kohv" "Tee"

Logistilise regressiooniga võib hinnata näiteks

  • teejoojate (vs. kohvijoojate) esinemise tõenäosust kvantitatiivsete meetodite kursusel sõltuvalt nende lemmikloomast ja ülikoolis õpitud aastate arvust;
  • grippi haigestumise (vs. mittehaigestumise) tõenäosust sõltuvalt vanusest, vaktsineeritusest ja tegevusalast;
  • konstruktsiooni laua peal esinemise (vs. laual esinemise) tõenäosust sõltuvalt tegusõnast, millega konstruktsioon koos esineb, ja sõnade pikkusest;
  • näidendi tragöödiaks klassifitseerimise (vs. komöödiaks klassifitseerimise) tõenäosust sõltuvalt sellest, kui sagedasti seal esineb sõna vaenlane ja kui palju tegelasi on keskmiselt korraga ühes stseenis koos;
  • sõjaliste konfliktide esinemise (vs. mitteesinemise) tõenäosust sõltuvalt piirkonnast, majanduslikust olukorrast ja valitsevast poliitilisest meelsusest.

Lineaarne vs. logistiline regressioon

Lineaarne regressioon Logistiline regressioon
Lineaarses regressioonis on meil mingi arvuline uuritav tunnus, mille keskväärtust hinnatakse seletavate tunnuste lineaarkombinatsiooni abil. Logistilises regressioonis on meil kahe (või enama) tasemega kategoriaalne uuritav tunnus, mille ühe taseme esinemise tõenäosuse keskväärtust hinnatakse seletavate tunnuste lineaarkombinatsiooni abil. Seda tõenäosust väljendab šansi logaritm.
Lineaarse regressiooni mudel:
Y = A + B1 * x1 + B2 * x2 + ...
Logistilise regressiooni mudel:
log(p/(1-p)) = A + B1 * x1 + B2 * x2 + ...
kus
  • A on vabaliige, mis näitab uuritava tunnuse väärtust siis, kui arvuliste seletavate tunnuste väärtused on 0 ja/või kui kategoriaalsete seletavate tunnuste väärtused on nende baastaseme väärtused
  • x1 ja x2 on seletavad tunnused
  • B1 ja B2 on seletavate tunnuste regressioonikordajad, mis näitavad muutust uuritavas tunnuses siis, kui vastav arvuline seletav tunnus kasvab ühe ühiku võrra või kui muutub kategoriaalse seletava tunnuse tase/klass
  • Y on uuritav tunnus
kus
  • A on vabaliige, mis näitab sündmuse toimumise šansi logaritmi, siis, kui arvuliste seletavate tunnuste väärtused on 0 ja/või kui kategoriaalsete seletavate tunnuste väärtused on nende baastaseme väärtused
  • x1 ja x2 on seletavad tunnused
  • B1 ja B2 on seletavate tunnuste regressioonikordajad, mis näitavad logaritmitud muutust šansis (kordades) siis, kui vastav arvuline seletav tunnus kasvab ühe ühiku võrra või kui muutub kategoriaalse seletava tunnuse tase/klass
  • p on ühe uuritava tunnuse taseme esinemise ehk sündmuse toimumise tõenäosus, 1-p on teise taseme esinemise ehk sündmuse mittetoimumise tõenäosus ja p/(1-p) on sündmuse toimumise tõenäosuse ja sündmuse mittetoimumise tõenäosuse suhe ehk šanss.
    log(p/(1-p)) on šansi logaritm (ehk logit)
Näiteks
Reaktsiooniaeg = 762 + 19 * sõna pikkus + (-21) * log1p(sõna sagedus)
Näiteks
Loengusse hilinemise šansi logaritm = 0.8473 + (-3.0445) * prillide kandmine (0/1)



Logistilise regressiooni aluseks on tegelikult samuti lineaarse regressiooni mudel ning seetõttu tuleb kategoriaalse uuritava tunnuse tasemed kodeerida ümber 0-ks ja 1-ks. Kuna lineaarse regressiooni arvuline uuritav tunnus võib teoreetiliselt saada väärtusi miinus lõpmatusest pluss lõpmatuseni, kategoriaalsel tunnusel on aga skaala alati piiratud 0 (“sündmus ei toimu”) ja 1-ga (“sündmus toimub”), tuleb regressioonivõrrandi vasak pool n-ö ära petta. Selleks kasutataksegi šansi logaritmi, kuna ka see võib muutuda miinus lõpmatusest pluss lõpmatuseni.

# Tõenäosused 0.000001-st kuni 0.999999-ni
p <- seq(0.000001,
         0.999999,
         0.000005)

# Nende tõenäosuste šansid
P <- p/(1-p)
head(P)
## [1] 1.000001e-06 6.000036e-06 1.100012e-05 1.600026e-05 2.100044e-05
## [6] 2.600068e-05
# Nende šansside logaritmid
P_log <- log(P)
head(P_log)
## [1] -13.81551 -12.02375 -11.41760 -11.04291 -10.77097 -10.55739
plot(x = P_log, y = p, main = "Tõenäosuste ja šansi logaritmide suhe")

Mida lähemal 0-le on tõenäosus, seda lähemal miinus lõpmatusele on šansi logaritm. Mida lähemal 1-le on tõenäosus, seda lähemal pluss lõpmatusele on šansi logaritm.

Miks siis ikkagi logistiline regressioon ja mitte lineaarne? Näide.

Lisame näiteks prillidega ja prillideta üliõpilaste tabelisse tulba, milles on nende keskmine hinne. Tahame teada, kas üliõpilase hilinemise tõenäosust saab ennustada nt tema keskmise hinde põhjal ülikoolis.

library(tidyverse)
# Järjesta tabel tulba "hilines" järgi
df <- df %>% arrange(hilines)

# Määra "seeme" juhuslike väärtuste korratavuseks
set.seed(12)
# Lisa tabelisse tulp keskmise hindega
df$keskmine <- c(rnorm(12,4,0.4), rnorm(8,3,0.2))

head(df)
##     nimi prillid hilines keskmine
## 1  Bruno     Jah      Ei 3.407773
## 2   Ants     Jah      Ei 4.630868
## 3 Toomas     Jah      Ei 3.617302
## 4  Kertu     Jah      Ei 3.631998
## 5 Peeter     Jah      Ei 3.200943
## 6  Sille     Jah      Ei 3.891082
tail(df)
##       nimi prillid hilines keskmine
## 15 Reelika      Ei     Jah 2.969517
## 16  Annika      Ei     Jah 2.859307
## 17   Rauno      Ei     Jah 3.237776
## 18  Joosep      Ei     Jah 3.068102
## 19    Imre      Ei     Jah 3.101394
## 20   Sille      Ei     Jah 2.941339
# Loome graafikule tegelikel vaatlustel
# põhineva aluskihi, milles hilinemine
# on konverteeritud tõenäosusteks 1 ja 0.

(aluskiht <- ggplot(data = df, 
                   aes(y = ifelse(hilines == "Jah", 1, 0),
                       x = keskmine)) +
  geom_point(alpha = 0.15) + # suurenda andmepunktide läbipaistvust
  labs(x = "Keskmine hinne",
       y = "Hilinemise tõenäosus",
       title = "Lineaarne vs. logistiline regressioon",
       color = "") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))) # joonda pealkiri keskele

Jooniselt näeme andmepunktide järgi, et nendel, kes hilinesid (y-teljel väärtus 1), oli üldjuhul madalam keskmine hinne kui neil, kes ei hilinenud (y-teljel väärtus 0).

Tõmbame nüüd läbi punktide lineaarse regressioonijoone ja logistilise regressioonijoone.

aluskiht +
  geom_smooth(method = "lm",
              aes(color = "lineaarne"), 
              se = F) +
  geom_smooth(method = "glm",
              aes(color = "logistiline"),
              method.args = list(family = "binomial"), 
              se = F)

Kui käsitleda uuritava tunnuse tasemeid sündmuse toimumisena ja mittetoimumisena, saab sündmuse toimumine tõenäosuseks 1 ja mittetoimumine tõenäosuse 0. Nagu jooniselt näha, ennustaks tavaline lineaarne regressioon, et uuritava tunnuse väärtus (üliõpilane on hilineja või ei ole) võib ulatuda põhimõtteliselt miinus lõpmatusest kuni lõpmatuseni. Logistiline funktsioon aga sobitub andmetega oluliselt paremini ega välju kunagi 0 ja 1 vahemikust.

Logaritmimisest R-is

Vaikimisi logaritmimise funktsioon R-is on log(arv), mis teisendab arvud Euleri arvu e astmeteks. e väärtus on umbes 2,71828. See tähendab, et kasutatakse naturaallogaritmi alusel e.

(arvud <- c(1, 2, 8, 10, 100, 500, 1000))
## [1]    1    2    8   10  100  500 1000
(arvud_log <- log(arvud))
## [1] 0.0000000 0.6931472 2.0794415 2.3025851 4.6051702 6.2146081 6.9077553

Arvu 1 saame niisiis väljendada hoopis nii, et see on see arv, mis saadakse, kui võtta arv 2.71828 astmesse 0. Arv 100 on see arv, mis saadakse, kui võtta arv 2.71828 astmesse 4.6 jne.

2.71828^0
## [1] 1
2.71828^4.6051702 # tuleb natuke ümardada
## [1] 99.99969

R-is on naturaallogaritmi pöördtehte ehk alusega e astendamise jaoks funktsioon exp(logaritmitud_arv).

exp(0)
## [1] 1
exp(4.6051702)
## [1] 100

Logaritmimisel võib põhimõtteliselt aga ka ise valida, mille astmeteks arvusid teisendada, see ei pea tingimata olema Euleri arv. Näiteks võib arvusid teisendada kahe astmeteks, kümne astmeteks, saja astmeteks jne.

log(100, base = 2) # ka funktsioon log2()
## [1] 6.643856
log(100, base = 10) # ka funktsioon log10()
## [1] 2
log(100, base = 100)
## [1] 1

Nende tagasiteisenduseks aga mingit eraldi funktsiooni ei ole ning sel juhul tuleb “käsitsi” astendada.

2^6.643856
## [1] 99.99999
10^2
## [1] 100
100^1
## [1] 100

Nagu y-teljelt näeme, on logaritmitud sageduste erinevus palju väiksem kui logaritmimata sageduste erinevus. Näiteks arv 10000 on arvust 100 sada korda suurem (10000/100=100), aga logaritm arvust 10000 on arvu 100 logaritmist ainult kaks korda suurem (log(10000)/log(100)=2).

Ühe seletava tunnusega mudel

Selleks, et natuke paremini aru saada, mis logistilise regressiooni mudelis täpselt ikkagi toimub, laadime andmestiku ade_peal.csv. See kujutab endast selle kursuse tarbeks veidi manipuleeritud varianti keeleteaduse andmestikust, mida on kasutatud artiklis Klavan, Jane, Maarja-Liisa Pilvik & Kristel Uiboaed. 2015. The Use of Multivariate Statistical Classification Models for Predicting Constructional Choice in Spoken, Non-Standard Varieties of Estonian. SKY Journal of Linguistics, 28, 187−224. Artiklis uuriti eesti murrete korpuse andmete põhjal, millest sõltub see, kas kõneleja kasutab kohatähenduses alalütlevat käänet ehk adessiivi (nt laual) või kaassõna peal (nt laua peal). Tegemist on niisiis binaarse (st kahe erineva väärtusega) uuritava tunnusega.

ade_peal <- read.delim("data/ade_peal.csv", encoding = "UTF-8", stringsAsFactors = TRUE)

Vaatame, mis tunnused andmestikus on:

summary(ade_peal)
##           TR_liik       tegusõna         tegusõna_klass    LM_lemma   
##  asesõna      :516   olema  :865   liikumisverb :297    maa    : 125  
##  nimisõnafraas:855   käima  :175   olemisverb   :868    koht   : 119  
##  verbifraas   :661   tegema : 82   paiknemisverb: 61    laud   :  86  
##                      panema : 41   tegevusverb  :618    põld   :  85  
##                      kasvama: 38   verbita      :188    meri   :  78  
##                      (Other):644                        põrand :  55  
##                      NA's   :187                        (Other):1484  
##      LM_mobiilsus   LM_komplekssus   LM_pikkus     LM_pikkus_log    sõnajärg   
##  liigutatav: 729   lihtsõna:1833   Min.   :1.000   Min.   :0.000   lm_tr: 613  
##  staatiline:1303   liitsõna: 199   1st Qu.:2.000   1st Qu.:1.000   tr_lm:1419  
##                                    Median :2.000   Median :1.000               
##                                    Mean   :2.655   Mean   :1.261               
##                                    3rd Qu.:3.000   3rd Qu.:1.585               
##                                    Max.   :9.000   Max.   :3.170               
##                                                                                
##     cx           murre       murderühm  
##  ade : 722   Saarte :457   Kesk   :880  
##  peal:1310   Lääne  :380   Lõuna  :430  
##              Kesk   :379   Ranniku:265  
##              Ranna  :161   Saarte :457  
##              Võru   :154                
##              Ida    :121                
##              (Other):380                
##                                     kõneleja   
##  KJ_JOE_Jyri_Maisa_synt-kontrollitud.xml:  27  
##  KJ_PLT_Liina_Roosimaa_EMH1427_lihts.xml:  26  
##  KJ_PIL_Helene_Pikk_synt-parandamata.xml:  25  
##  KJ_SJN_Marie_Kees_EMH16_synt.xml       :  25  
##  KJ_HMD_Aleksander_Idarand_synt.xml     :  24  
##  KJ_KAI_Leena_Lepamaa_synt.xml          :  23  
##  (Other)                                :1882

Andmestikus on 2032 vaatlust ja 13 tunnust:

  • TR_liik: trajektoriks (Trajector) nimetatakse siin kontekstis seda, mis millegi peal on (nt lamp on laua peal, heinamaal tantsiti). Eristatakse kolme erinevat kategooriat: asesõna (nt mina, te, see), nimisõnafraasi (nt lamp) ja verbifraasi (nt tantsiti).
  • tegusõna: tegusõna, mis kohasuhtega seotud on, nt olema, kui miski on millegi peal, käima, kui miski käib millegi peal jne. Tegusõna võib ka puududa (NA).
  • tegusõna_klass: tähendusklass, kuhu tegusõna kuulub. Eristatakse liikumisverbe (nt käima, minema, sõitma, jooksma), olemisverbe (nt olema), paiknemisverbe (nt istuma, seisma), tegevusverbe (nt kündma, peksma, purjetama) ja ilma tegusõnata lauseid.
  • LM_lemma: orientiiriks ehk LM-iks (Landmark) nimetatakse siin kontekstis seda, mille peal miski on (nt lamp on laua peal, heinamaal tantsiti). Orientiiri lemma tähistab fraasi põhisõna sõnaraamatuvormi (nt lauses Lehm ammub suurel laial heinamaal on orientiiri fraas ise suurel laial heinamaal, aga lemma ainult heinamaa).
  • LM_mobiilsus: tähistab seda, kas orientiiri (nt laud või heinamaa) saab hõlpsalt liigutada või mitte. Liigutatavad on näiteks pall, õlg, surnuvanker, hobune, staatilised jällegi näiteks uulits, heinamaa, veranda, maantee.
  • LM_komplekssus: tähistab seda, kas orientiirifraasi peasõna on lihtsõna (nt maa) või liitsõna (nt heina+maa).
  • LM_pikkus: tähistab orientiirifraasi pikkust silpides. Näiteks fraasi suu-rel lai-al hei-na-maal pikkus on 7 silpi, fraasi lau-a peal pikkus on 2 silpi (kaassõna peal ei loeta silpide arvu sisse).
  • LM_pikkus_log: tähistab orientiirifraasi logaritmitud pikkust silpides. Kasutatud on logaritmi alusel kaks (log2()), mis tähendab seda, et kõik pikkused on teisendatud arvu 2 astmeteks. Näiteks logaritm alusel 2 pikkusest 2 on 1 (log2(2)), sest 2^1=2; logaritm alusel 2 pikkusest 8 on 3 (log2(8)), sest 2^3=8 jne. Logaritmimine vähendab erandlikult pikkade fraaside mõju ja teeb pikkuste jaotust natuke ühtlasemaks.
  • sõnajärg: tähistab seda, kas lauses on eespool trajektor (nt lehm on heinamaal) või orientiir (nt heinamaal on lehm). Tunnuse väärtused on vastavalt tr_lm ja lm_tr.
  • cx: tähistab meie uuritavat tunnust ehk konstruktsiooni. Uuritava tunnuse väärtused võivad olla kas ade (alalütlev kääne) või peal (kaassõna peal).
  • murre: tähistab murdeala, mille kõnelejalt vaatlus on andmestikku sattunud. Sellel tunnusel on tervelt 10 erinevat väärtust: Ida, Lääne, Ranna, Kirde, Saarte, Kesk, Tartu, Mulgi, Võru, Seto.
  • murderühm: siin on murdeid natuke suuremateks rühmadeks jagatud. Tartu, Võru, Seto ja Mulgi murre moodustavad rühma Lõuna, ranna- ja kirdemurre moodustavad rühma Ranniku, lääne-, kesk- ja idamurre moodustavad rühma Kesk ning saarte murre on jäetud siin eraldi rühmaks Saarte.
  • kõneleja: see tunnus sisaldab unikaalset kõneleja koodi, mis moodustub failinimest, kihelkonna nimest ning kõneleja id-st faili sees (nt KJ, KJ1, KJ2 vmt).

Andmete esmane kirjeldamine

Andmestikus on meid huvitav tunnus tulbas nimega cx. Sellel kategoorial on kaks taset - ade ja peal - mis tähistavad vastavalt seda, kui kohasuhet väljendatakse käändega (laual), ja seda, kui kohasuhet väljendatakse kaassõnaga (laua peal).

(tab <- table(ade_peal$cx))
## 
##  ade peal 
##  722 1310

Siin on meil tasakaalustamata valim, mis tähendab seda, et kategooriaid ei esine andmestikus võrdselt: peal-konstruktsioon on oluliselt sagedam.

# Kaassõna "peal" esinemise tõenäosus
(p_peal <- tab[["peal"]]/sum(tab)) # NB! väike p-täht
## [1] 0.644685
# Kaassõna "peal" esinemise šanss
(P_peal <- p_peal/(1-p_peal)) # NB! suur p-täht
## [1] 1.814404
# Kaassõna "peal" mitte-esinemise tõenäosus (= alalütleva käände esinemise tõenäosus)
(p_ade <- tab[["ade"]]/sum(tab))
## [1] 0.355315
# Kaassõna "peal" mitte-esinemise šanss (= alalütleva käände esinemise šanss)
(P_ade <- p_ade/(1-p_ade))
## [1] 0.551145

Ainult esinemissageduse põhjalt saame öelda ainult seda, et peal-konstruktsiooni kasutamine on murretes üldiselt tõenäolisem. Selleks aga, et kahe alternatiivse konstruktsiooni kasutuse kohta midagi sisukamat öelda, vajame lisaks mingeid teisi tunnuseid, mis võimalikku varieerumist murretes aitaksid seletada.

(Kuna tegemist on keelekorpusest kogutud andmetega ning ühelt kõnelejalt võib olla ka mitu vaatlust, on tegelikult vaatluste sõltumatuse nõue rikutud ja võiks kasutada hoopis segamudelit, aga sellest ülejärgmises praktikumis.)

Vaatame näiteks kõigepealt, kas kohakonstruktsiooni ja mõne teise kategoriaalse tunnuse vahel on mingi seos. Enne mudeldamist võime muidugi teha ükshaaval tunnustega tabeleid, jooniseid ja graafikuid.

prop.table(table(ade_peal$cx, ade_peal$LM_mobiilsus), 2)
##       
##        liigutatav staatiline
##   ade   0.1879287  0.4489639
##   peal  0.8120713  0.5510361
ggplot(data = ade_peal) +
  geom_bar(aes(x = LM_mobiilsus, fill = cx),
           position = "fill")

(t <- chisq.test(ade_peal$cx, ade_peal$LM_mobiilsus))
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  ade_peal$cx and ade_peal$LM_mobiilsus
## X-squared = 137.92, df = 1, p-value < 2.2e-16
vcd::assocstats(table(ade_peal$cx, ade_peal$LM_mobiilsus))$cramer
## [1] 0.2615959

Ehkki peal-konstruktsioon tundub olevat nii liigutatavate kui ka staatiliste “kohtadega” (LM) sagedam, on staatiliste kohtade puhul kaassõna kasutus oluliselt vähem tõenäoline (nt heinamaa peal) kui liigutatavate kohtadega (nt laua peal).



Logistilise regressiooni mudel

Teeme nüüd lihtsa logistilise regressiooni mudeli, et kontrollida, kas kohakonstruktsiooni valikut saab seletada koha/orientiiri liigutatavuse kaudu. Tegelikkuses on mudeli kasutamine kasulikum muidugi pigem siis, kui vaadata mitme seletava tunnuse mõju uuritava tunnuse varieerumisele.

# Logistilise regressiooni mudel
m.glm <- glm(cx ~ LM_mobiilsus, data = ade_peal, family = "binomial")

Mudelist ülevaate saamiseks kasutame jällegi käsku summary().

summary(m.glm)
## 
## Call:
## glm(formula = cx ~ LM_mobiilsus, family = "binomial", data = ade_peal)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             1.46353    0.09481   15.44   <2e-16 ***
## LM_mobiilsusstaatiline -1.25867    0.10996  -11.45   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2644.3  on 2031  degrees of freedom
## Residual deviance: 2497.3  on 2030  degrees of freedom
## AIC: 2501.3
## 
## Number of Fisher Scoring iterations: 4

Kuidas regressioonimudeli tulemust lugeda?

summary(m.glm)
## 
## Call:
## glm(formula = cx ~ LM_mobiilsus, family = "binomial", data = ade_peal)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             1.46353    0.09481   15.44   <2e-16 ***
## LM_mobiilsusstaatiline -1.25867    0.10996  -11.45   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2644.3  on 2031  degrees of freedom
## Residual deviance: 2497.3  on 2030  degrees of freedom
## AIC: 2501.3
## 
## Number of Fisher Scoring iterations: 4

Kuna regressioonimudel hindab uuritava tunnuse ühe taseme esinemise tõenäosust šansi logaritmi kaudu, siis peame kõigepealt vaatama, mida peab R sündmuse toimumiseks. Vaikimisi on selleks uuritava tunnuse tähestikulises järjekorras teine tase.

levels(ade_peal$cx)
## [1] "ade"  "peal"

Sündmuse toimumine (1) on niisiis peal-konstruktsiooni kasutus ja mittetoimumine käändekonstruktsiooni kasutus. Mudel ennustab seega tõenäosust, et mingis seletavate tunnuste poolt määratud kontekstis kasutatakse kohasuhte väljendamiseks peal-kaassõna konstruktsiooni. Antud juhul siis tahame näha, kas peal-konstruktsiooni kasutus kasvab või kahaneb, kui vaatame liigutatavate kohtade (nt laud) asemel staatilisi kohti (nt tänav).

Läheme nüüd uuesti mudeli väljundi juurde.

1. Vabaliikme (Intercept) koefitsient 1.4635257 näitab peal-konstruktsiooni esinemise šansi logaritmi (logit) tunnuse LM_mobiilsus baastaseme korral. Kategoriaalse seletava tunnuse baastase on vaikimisi tähestikulises järjekorras kõige esimene väärtus (LM_mobiilsus tunnuse puhul liigutatav, mitte staatiline). Peal-konstruktsiooni esinemise šansi logaritmi ennustatakse niisiis sellises kontekstis, kus kohasõna on mõtteliselt hõlpsasti liigutatav (nt laud). Logaritmitud šansi saab teisendada tavaliseks šansiks astendamise funktsiooniga exp(). Ehk kui logaritm alusel e (Euleri arv, umbes 2,71828) šansist on 1.4635257, siis šanss on e astmes 1.4635257. Vaikimisi kasutatakse niisiis naturaallogaritmi.

# peal-cx esinemise šanss kontekstis,
# kus kohasõna referent on mobiilne, liigutatav
(P_liigut <- exp(m.glm$coefficients[["(Intercept)"]]))
## [1] 4.321168
# või
(P_liigut <- exp(1.46353))
## [1] 4.321186

Šanss, et mingi liigutatava koha puhul kasutatakse kohasuhte väljendamiseks peal-konstruktsiooni, on ~4.32. Kuna šanss on > 1, võime tõlgendada seda ka nii, et tõenäosus peal-cx kasutamiseks liigutatavate kohtade korral on suurem kui 0.5. Selle tõenäosuse saab šansi kaudu ka välja arvutada.

(p_liigut <- P_liigut/(1+P_liigut))
## [1] 0.812072

peal-cx esinemise tõenäosus juhul, kui kohasõna referent on liigutatav objekt, on 0.812072.

Kui seletav tunnus oleks arvuline, mitte kategoriaalne, väljendaks vabaliige sündmuse toimumise logaritmitud šanssi (hüpoteetilises) kontekstis, kus arvulise tunnuse väärtus oleks 0.

2. Seletava tunnuse koefitsient -1.258668 näitab sündmuse toimumise šansi muutust logaritmitud kordades 1-ühikulise või ühe taseme muutuse puhul vastava seletava tunnuse väärtuses. Teisisõnu näitab see koefitsient logaritmitud šansisuhet ehk seda, mitu logaritmitud korda suurem on sündmuse toimumise šanss seletava tunnuse uue taseme korral. Plussmärgiga koefitsiendid lisavad sündmuse toimumise šanssi (ühtlasi ka tõenäosust), miinusmärgiga vähendavad. Negatiivne koefitsient siin viitab seega sellele, et sündmuse toimumise šanss väheneb seletava tunnuse taseme muutmisel.

Astendame esmalt selle koefitsiendi, et saada logaritmitud kordade asemel tegeliku kordade arvu.

# šansside suhe
# (peal-cx esinemise šanss staatiliste kohtade puhul/
# peal-cx esinemise šanss liigutatavate kohtade puhul)
(P_suhe <- exp(m.glm$coefficients[["LM_mobiilsusstaatiline"]]))
## [1] 0.2840321

Seletava tunnuse astendatud koefitsient näitab siin niisiis, et kontekstis, kus kohasõna on staatiline (lehm ammub heinamaa peal), on peal-cx kasutamine ~0.28 korda “suurem” kui kontekstis, kus kohasõna viitab liigutatavale referendile (lehm ammub laua peal). See, et šansisuhe on < 1, näitab, et see arv, mida suhte arvutamisel jagame, on väiksem kui see arv, millega jagame. Seega peaks uue seletava tunnuse taseme korral (LM_mobiilsus = "staatiline") peal-cx kasutamise šanss olema väiksem kui baastaseme korral (LM_mobiilsus = "liigutatav").

Kontrollime, kas see on nii.
Teame juba peal-cx esinemise šanssi kontekstis, kus kohasõna viitab liigutatavale referendile. Selle saime kätte vabaliikme astendamise kaudu ja see on salvestatud objekti P_liigut.
Leiame nüüd peal-cx esinemise šansi kontekstis, kus kohasõna viitab staatilisele referendile. Selleks liidame vabaliikme ja seletava tunnuse koefitsiendid ning astendame tulemuse.

# peal-cx esinemise šanss kontekstis,
# kus kohasõna viitab staatilisele referendile
(P_staat <- exp(m.glm$coefficients[["(Intercept)"]] + m.glm$coefficients[["LM_mobiilsusstaatiline"]]))
## [1] 1.22735

See, et šanss staatilise kohaga kontekstis on ikkagi > 1, näitab, et peal-konstruktsiooni kasutus on ka staatiliste kohtadega tõenäolisem, aga mitte enam nii palju tõenäolisem kui alalütleva käände kasutus. Näiteks heinamaa peal võiks esineda u 1.22 korda rohkem kui heinamaal, aga laua peal esineks tervelt 4.3 korda rohkem kui laual.

Nüüd leiame šansisuhte ja šansisuhte logaritmi.

P_staat/P_liigut
## [1] 0.2840309
log(P_staat/P_liigut)
## [1] -1.258672

Saime sama tulemuse nagu mudelist.

Arvulise seletava tunnuse puhul väljendaks koefitsient sündmuse toimumise šansi muutust logaritmitud kordades 1-ühikulise muutuse puhul vastava seletava tunnuse väärtuses (nt kui silpide arv kasvab 1 silbi võrra, kui vanus kasvab 1 aasta võrra vmt).

Kui räägime ainult šansi logaritmist, võime lihtsalt öelda, et koefitsiendid tõstavad šansi logaritmi koefitsiendi väljendatud arvu VÕRRA.
Tavalisest šansist rääkides aga peame ütlema, et koefitsiendid tõstavad šanssi astendatud koefitsiendi väljendatud arv KORDI.

Üldiselt pole šansi ja šansisuhte terminite kasutamine tingimata vajalik, kui rääkida lihtsalt uuritava tunnuse ühe väärtuse esinemise tõenäosuse suurenemisest või vähenemisest ja mitte arvutada seda, kui mitu korda mingid šansid parajasti muutuvad.

Muutuse suuna ütlevad ära koefitsientide ees olevad märgid ning kui šansisuhe kasvab, kasvavad ka sündmuse toimumise šansid ja tõenäosus ja vastupidi.

3. Std. Error, z value ja Pr(>|z|). Waldi Z-statistiku (z value) väärtus on koefitsient (Estimate) jagatud standardveaga (Std. Error) ja see testib seda, kas koefitsient võiks olla vähemalt sama ekstreemse suurusega (s.t nullist erinev) ka populatsioonis, juhul kui kehtib nullhüpotees. Selle statistilist olulisust näitab p-väärtus (Pr(>|z|)), mis ütleb meile ühtlasi seda, kas antud tunnuse väärtus on statistiliselt oluliselt erinev tunnuse baastaseme väärtusest (uuritava tunnuse ennustamisel). Olulisuse nivoo on vaikimisi endiselt 0.05 ning tärnikeste tõlgendamine käib samamoodi nagu lineaarses regressioonis. Kui mingi koefitsiendi standardviga on väga suur, siis võib vastava parameetri hinnangut pidada ebamääraseks ning see võib isegi ainult natuke üksteisest erinevates valimites kõvasti varieeruda. Üldjuhul ei ole väga suure standardveaga koefitsiendid statistiliselt olulised ehk ei saa piisava kindlusega väita, et muutus mingis tunnuses tooks kaasa statistiliselt olulise muutuse sündmuse esinemise šanssides.
Selles mudelis on muutus seletavas tunnuses statistiliselt oluline, mis tähendab, et on oluline erinevus peal-konstruktsiooni kasutamise šanssides kontekstis, kus kohasõna viitab liigutatavale referendile, ja kontekstis, kus see viitab staatilisele referendile.

4. Null deviance näitab, kui suur oleks uuritava tunnuse varieerumise seletamata osa mudelis, kus ei ole ühtegi seletavat tunnust. Selle vabadusastmete arv (degrees of freedom) on enamasti vaatluste arv (n) - 1. Residual deviance näitab, kui suur on see seletamata osa, kui mudelis on need seletavad tunnused, mis seal parajasti on. Selle vabadusastmete arv sõltub mudelisse kaasatud tunnuste arvust ja kategoriaalsete tunnuste puhul ka tasemete arvust. Selles mudelis tuleb hinnata ainult ühe tunnuse ühe taseme mõju, seega lahutatakse n-st 1+1. Mida väiksem Residual deviance Null Deviance’ist on, seda parem, sest seda rohkem meie mudelisse lisatud seletavatel tunnustel uuritava tunnuse varieerumisega pistmist on.

5. AIC ehk Akaike Information Criterion võimaldab hinnata mudeli headust võrdluses teiste mudelitega (väiksem arv on parem). Arvestab valimi suuruse ja mudelisse kaasatud parameetrite arvuga (nagu adjusted R2 lineaarse regressiooni mudelis). Kui näiteks teeksime veel ühe mudeli, kuhu lisaksime ühe seletava tunnuse juurde, aga AIC väärtus ei läheks oluliselt väiksemaks, siis ei pruugi meie lisatud tunnusel olla uuritava tunnuse varieerumise seletamisel kuigi suur roll ja peaksime valima lihtsama (= vähemate seletavate tunnustega) mudeli.

Joonised ja mõjude raporteerimine

#library(ggeffects)
plot(ggpredict(m.glm))

# library(report)
report_text(m.glm)
## We fitted a logistic model (estimated using ML) to predict cx with LM_mobiilsus
## (formula: cx ~ LM_mobiilsus). The model's explanatory power is weak (Tjur's R2
## = 0.07). The model's intercept, corresponding to LM_mobiilsus = liigutatav, is
## at 1.46 (95% CI [1.28, 1.65], p < .001). Within this model:
## 
##   - The effect of LM mobiilsus [staatiline] is statistically significant and
## negative (beta = -1.26, 95% CI [-1.48, -1.05], p < .001; Std. beta = -1.26, 95%
## CI [-1.48, -1.05])
## 
## Standardized parameters were obtained by fitting the model on a standardized
## version of the dataset. 95% Confidence Intervals (CIs) and p-values were
## computed using a Wald z-distribution approximation.

Sõnastame uuesti tulemused

  • peal-konstruktsiooni kasutus on kohasuhete väljendamisel murretes üldiselt tõenäolisem kui käändekonstruktsiooni kasutus.
  • peal-konstruktsiooni kasutamise šansid koos liigutatavatele objektidele viitavate kohasõnadega (nt laud) on exp(1.46353)=4.321186.
  • peal-konstruktsiooni kasutamise šansid koos staatilistele objektidele viitavate kohasõnadega (nt heinamaa) “kasvavad” exp(-1.25867)=0.2840315 korda. Teisisõnu: staatiliste kohtadega peal-konstruktsiooni kasutamise šansid kahanevad.
  • peal-konstruktsiooni kasutamise šansid koos staatilistele objektidele viitavate kohasõnadega (nt heinamaa) on exp(1.46353-1.25867)=1.227353. Võiksime leida selle väärtuse põhimõtteliselt ka esialgsete (logaritmimata) šansside läbikorrutamisel (logaritmimata) šansisuhtega: 4.321186*0.2840315=1.227353.

Järeldus: kohasõna referendi staatilisus vähendab peal-konstruktsiooni kasutamise tõenäosust.

Miks? Eesti keeles on kaassõnu peetud palju konkreetsemate suhete väljendajateks kui käändeid, millel on sageli palju funktsioone ning mis seetõttu väljendavad sagedamini abstraktseid suhteid. On pakutud, et suured, staatilised kohad tunduvad kõnelejale abstraktsemad ja seetõttu sallivad käändekonstruktsioone rohkem kui väiksed, liigutatavad objektid, mis on kõnelejale konkreetsemad ning eelistavad seetõttu kaassõnakonstruktsioone (vt nt Bartens 1978; Ojutkangas 2008; Lestrade 2010).

Kordamisküsimused

1. Töörahulolu küsitlusele vastas 40 meest, kellest 30 olid oma tööga rahul. Kui suur on šanss, et küsitlusele vastanud mees ei ole oma tööga rahul?

  1. 0.25
  2. 0.33
  3. 0.75

2. Samale küsitlusele vastas 50 naist, kellest samuti 30 olid oma tööga rahul. Milline on meeste ja naiste tööga mitterahulolu šansside suhe?

  1. 0.5
  2. 0.625
  3. 1
  4. 1.25

3. Millises vahemikus võivad olla tõenäosused, šansid ja šansside suhe?

  1. tõenäosus [0,1], šanss [-∞,∞], šansside suhe [-∞,∞]
  2. tõenäosus [0,1], šanss [0,∞], šansside suhe [0,∞]
  3. tõenäosus [0,1], šanss [0,∞], šansside suhe [-∞,∞]
  4. tõenäosus [-1,1], šanss [0,1], šansside suhe [0,∞]

4. Millised on õiged väited?

  1. Logistilises regressioonis loeb R vaikimisi sündmuse toimumiseks uuritava tunnuse tähestiku järjekorras tagapool olevat taset.
  2. Logistilises regressioonis loeb R vaikimisi sündmuse toimumiseks uuritava tunnuse tähestiku järjekorras eespool olevat taset.
  3. Seletava tunnuse baastasemeks loeb R vaikimisi tähestiku järjekorras tagapool olevat taset.
  4. Seletava tunnuse baastasemeks loeb R vaikimisi tähestiku järjekorras eespool olevat taset.

5. Logistilise regressioonimudeli vabaliige väljendab

  1. uuritava tunnuse väärtust juhul, kui ühtegi seletavat tunnust mudelis ei ole.
  2. uuritava tunnuse ennustatava taseme šanssi juhul, kui kõikide arvuliste seletavate tunnuste väärtused on 0 ja kõikide kategoriaalsete seletavate tunnuste väärtused on nende baastasemel.
  3. uuritava tunnuse ennustatava taseme šansi logaritmi juhul, kui kõikide arvuliste seletavate tunnuste väärtused on 0 ja kõikide kategoriaalsete seletavate tunnuste väärtused on nende baastasemel.
  4. logaritmitud tõenäosust, et uuritav tunnus on seletavate tunnuste kasvades ühe ühiku võrra oma baastasemel.

6. Tehes andmestikust ade_peal logistilise regressiooni mudeli, kus peal-konstruktsiooni esinemist seletatakse orientiiri/kohasõna komplekssuse kaudu, saame alloleva väljundi. Seletava tunnuse baastase on lihtsõna ning hinnatav parameeter liitsõnalisus. Kas liitsõna kohasõnana (nt karja+maa) kasvatab või kahandab peal-konstruktsiooni kasutamise šansse?

## 
## Call:
## glm(formula = cx ~ LM_komplekssus, family = "binomial", data = ade_peal)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             0.71532    0.04973  14.383  < 2e-16 ***
## LM_komplekssusliitsõna -1.13337    0.15318  -7.399 1.37e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2644.3  on 2031  degrees of freedom
## Residual deviance: 2588.1  on 2030  degrees of freedom
## AIC: 2592.1
## 
## Number of Fisher Scoring iterations: 4
  1. Ei ole võimalik öelda, sest enne peab kindlasti astendama.
  2. Liitsõnaliste kohasõnadega on peal-konstruktsiooni kasutamise šanss väiksem kui lihtsõnaliste kohasõnadega, sest koefitsient on < 0.
  3. Liitsõnaliste kohasõnadega on peal-konstruktsiooni kasutamise tõenäosus suurem kui lihtsõnaliste kohasõnadega, sest koefitsient on < 0.
  4. Liitsõnaliste kohasõnadega on peal-konstruktsiooni kasutamise tõenäosus väiksem kui lihtsõnaliste kohasõnadega, sest koefitsient on < 1.
  5. See ei ole statistiliselt oluline, nii et selle hindamisel ei ole mõtet.

7. Kui suur on eelmises näites oleva mudeli põhjal šanss, et peal-konstruktsiooni kasutatakse koos liitsõnalise (LM_komplekssusliitsõna) kohasõnaga (nt karjamaa peal)?

  1. -1.133
  2. 0.322
  3. 0.658
  4. 2.044

8. cx ~ LM_mobiilsus mudeli AIC on 2501. cx ~ LM_komplekssus mudeli AIC on 2592. Kumb mudel seletab asesõna kasutamise varieerumist paremini?

  1. Ei ole võimalik öelda.
  2. cx ~ LM_komplekssus, sest selle AIC on suurem.
  3. cx ~ LM_mobiilsus, sest selle AIC on väiksem.

Järgmisel korral

  • Mitme seletava tunnusega logistilise regressiooni mudel
  • Interaktsioonidega logistilise regressiooni mudel
  • Mudelite võrdlemine ja optimaalse mudeli leidmine
  • Mudeli mõjude visualiseerimine
  • Mudeli headuse näitajad

Funktsioonide sõnastik

  • exp() - teisenda logaritmitud šanss tavaliseks šansiks (või logaritmitud šansisuhe tavaliseks šansisuhteks)
  • ggeffects::ggpredict() - ennusta uuritava tunnuse väärtust mingis tüüpilises seletavate tunnuste kontekstis
  • glm() - tee logistilise regressiooni mudel
  • performance::check_model() - kontrolli mudeli jääke jm eeldusi
  • plogis() - teisenda logaritmitud šanss tõenäosuseks
  • predict() - leia mudeli ennustused kas treeningandmestikul või testandmestikul (lisades argumendi newdata)
  • report::report_text() - raporteeri mudeli tulemused tekstina