Tänases praktikumis

Eelmisel korral

  • tõenäosus, šanss, šansisuhe,
  • sissejuhatus logistilisse regressiooni:
    • ühe seletava tunnusega regressioonimudel,
    • väljundi tõlgendamine.

Sel korral

  • mitme tunnusega regressioonimudel,
  • mudelite võrdlemine ja optimaalse mudeli leidmine,
  • interaktsioonide lisamine.

Mitme tunnusega logistilise regressiooni mudel

Eelmisel korral vaatasime keeleteaduse andmestikku esimeneisik.RData ning püüdsime seletada, kuidas sõltub eesti murretes asesõna mina/ma esinemine koos tegusõnaga sellest, kas tegusõnal on vormiliselt ka 1. isiku pöördelõpp -n või mitte. Saime teada, et asesõna esinemise šanss on pöördelõpuga tegusõnaga (ma olen) koos väiksem kui siis, kui tegusõnal pöördelõppu ei ole (ma ole).

Vaatame sel korral sama andmestiku suuremat versiooni ja lisame mudelisse nüüd ka teisi seletavaid tunnuseid.

Esmalt laadime andmestiku.

load("isik1suur.RData")

Tuletame meelde, mis tunnused andmestikus on.

summary(isik1suur)
##      Sone               Lemma       Pron       Lopp       Aeg      
##  Length:4066        olema  : 637   ei :1893   ei :1627   ipf:2636  
##  Class :character   minema : 257   jah:2173   jah:2439   pr :1430  
##  Mode  :character   käima  : 232                                   
##                     ütlema : 224                                   
##                     tegema : 191                                   
##                     saama  : 184                                   
##                     (Other):2341                                   
##  Ref_kaugus_num   Ref_kaugus_klass             Verbiklass      Murre     
##  Min.   : 0.000   Length:4066        kognitiivne    : 316   IDA   : 436  
##  1st Qu.: 2.000   Class :character   kommunikatiivne: 319   KESK  :1081  
##  Median : 4.000   Mode  :character   muu            :3431   RANNA : 522  
##  Mean   : 6.797                                             SAARTE:1308  
##  3rd Qu.: 9.000                                             VORU  : 719  
##  Max.   :29.000                                                          
##                                                                          
##      Fail          
##  Length:4066       
##  Class :character  
##  Mode  :character  
##                    
##                    
##                    
## 

Selles andmestikus on võrreldes eelmisega mitu korda rohkem vaatlusi ning ka kaks uut tunnust:

  • Ref_kaugus_num on kaugus eelmisest 1. isiku viitest (sõnast ma/mina või 1. isiku tegusõnavormist) tekstis (sõnades).
  • Ref_kaugus_klass on faktor, mis grupeerib teatud kauguste klassid.

Kõigepealt tegime mudeli, milles oli ainsa seletava tunnusena tegusõna pöördelõpp Lopp.

m1.glm <- glm(Pron ~ Lopp, data = isik1suur, family = "binomial")
summary(m1.glm)
## 
## Call:
## glm(formula = Pron ~ Lopp, family = "binomial", data = isik1suur)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.5066  -1.0740   0.8807   1.2844   1.2844  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  0.74711    0.05308   14.07   <2e-16 ***
## Loppjah     -0.99520    0.06696  -14.86   <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: 5617.4  on 4065  degrees of freedom
## Residual deviance: 5387.3  on 4064  degrees of freedom
## AIC: 5391.3
## 
## Number of Fisher Scoring iterations: 4

Lisame mudelisse lisaks tunnusele Lopp ka tunnuse Aeg, mis näitab, kas tegusõna vorm, millega asesõna võiks koos esineda, on minevikus ((ma) sõin) või olevikus (ma söön). Testime alustuseks jälle uuritava ja seletava tunnuse omavahelist sõltuvust.

chisq.test(isik1suur$Pron, isik1suur$Aeg)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  isik1suur$Pron and isik1suur$Aeg
## X-squared = 65.868, df = 1, p-value = 4.823e-16

Kuna testi p-väärtus on väike, siis võime järeldada, et asesõna kasutamine on seotud sellega, kas räägime oleviku või tulevikusündmustest. Hii-ruut-testi võib nimetada ühetunnuseliseks analüüsiks. Kui sellega saab olulise seose, siis on suur tõenäosus, et seletaval tunnusel on mingi mõju ka mitme tunnusega regressioonimudelis, ehkki teised seletavad tunnused võivad selle seose vahel ka varju jätta: interaktsioonideta mudelis on tegu sisuliselt omavahel võistlevate tunnustega (milline tunnus seletab uuritava tunnuse varieerumist rohkem/paremini). See aga, kui hii-ruut-test annab ebaolulise tulemuse, ei tähenda tingimata, et seletaval tunnusel ei oleks uuritavale tunnusele mõju mingi teise tunnusega koosmõjus (nt interaktsioonina).

Mitme tunnusega mudeli tegemine käib logistilises regressioonis samamoodi nagu lineaarses: seletavate tunnuste peamõjud lisatakse mudelisse plussmärgiga.

# Teeme mudeli
m2.glm <- glm(Pron ~ Lopp + Aeg, data = isik1suur, family = "binomial")

# Uurime mudeli väljundit
summary(m2.glm)
## 
## Call:
## glm(formula = Pron ~ Lopp + Aeg, family = "binomial", data = isik1suur)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.6965  -0.9840   0.7358   1.1203   1.3840  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  0.55896    0.05697   9.811   <2e-16 ***
## Loppjah     -1.03257    0.06788 -15.212   <2e-16 ***
## Aegpr        0.60933    0.06926   8.797   <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: 5617.4  on 4065  degrees of freedom
## Residual deviance: 5308.3  on 4063  degrees of freedom
## AIC: 5314.3
## 
## Number of Fisher Scoring iterations: 4

Kui lineaarses regressioonis näitab mudeli väljund kohe ka seda, kas mudel tervikuna on statistiliselt oluline või mitte, siis glm-mudelite pere (Generalized Linear Models), kuhu kuulub ka logistiline regressioon, mudelile ise p-väärtust ei omista. Küll aga on võimalik see p-väärtus välja arvutada n-ö “käsitsi” funktsiooniga pchisq(), kasutades nullmudeli (ilma seletavate tunnusteta mudeli) ning tunnustega mudeli hälbimuse näitajaid (deviance) ja vabadusastmete arvu (df).

pchisq(q = m2.glm$null.deviance-m2.glm$deviance, 
       df = m2.glm$df.null-m2.glm$df.residual, 
       lower.tail = FALSE)
## [1] 7.86229e-68

Vaatame kõigepealt koefitsiente.
1. Vabaliige (Intercept)

  • Koefitsient on 0.55896. Kuna vabaliikme koefitsient esindab šansi logaritmi ja see on positiivne arv (>0), siis saab järeldada juba koefitsiendi enda järgi, et kontekstis, kus kategoriaalsed seletavad tunnused on baastaseme väärtused (vastavalt Lopp = "ei" ja Aeg = "ipf" ehk nt Ma oli) võiks asesõna esinemise šansid olla suuremad kui selle mitteesinemise šansid.
  • Asesõna esinemise šanss ise koos tegusõnaga, millel ei ole pöördelõppu ja mis on mineviku vormis, on exp(0.55896) või exp(m2.glm$coefficients[["(Intercept)"]]) ehk ~1.75. Kuna šanss on >1, siis see tähendab, et asesõna tõenäosus esineda selles kontekstis on suurem kui tõenäosus mitte esineda.
  • Asesõna esinemise tõenäosus koos tegusõnaga, millel ei ole pöördelõppu ja mis on mineviku vormis, on exp(m2.glm$coefficients[["(Intercept)"]])/(1+exp(m2.glm$coefficients[["(Intercept)"]])) ehk ~0.64. Seega asesõna mitte-esinemise tõenäosus on 1-0.64=0.36.
  • Mudeli väljund näitab, et vabaliige on statistiliselt oluline (p-väärtus on <2e-16). Kui vabaliige oleks statistiliselt ebaoluline, tähendaks see seda, et koefitsient oleks küll selle valimi puhul nullist erinev, tegelikult ei saaks piisavalt kindlad olla, kas asesõna mingite teiste valimite puhul seletavate tunnuste baastasemete kontekstis tõenäolisemalt esineks või ei esineks.

2. Tegusõna pöördelõpp (Loppjah)

  • Koefitsient on -1.03257. Mäletatavasti näitavad seletavate tunnuste koefitsiendid erinevalt vabaliikme koefitsiendist mitte enam šansi logaritmi, vaid šansisuhte logaritmi, mis võrdleb uut seletavate tunnuste konfiguratsiooni vana, baastaseme konfiguratsiooniga. Teisisõnu näitab koefitsient logaritmi sellest, kui mitu korda on uues kontekstis asesõna esinemise šanss suurem kui vanas, baastasemete kontekstis. Uus kontekst siin tähendab olukorda, kus seletav tunnus Aegon endiselt baastasemel (Aeg = "ipf"), aga Lopp on nüüd Lopp = "jah" (nt Ma olin). Kuna koefitsient on negatiivne, võib järeldada, et uues kontekstis/konfiguratsioonis on asesõna esinemise šanss väiksem kui baastasemel.
  • Šansisuhe ise on exp(-1.03257) või exp(m2.glm$coefficients[["Loppjah"]]) ehk ~0.36. See tähendab, et asesõna esinemise šanss kontekstis, kus tegusõna on minevikus ja tegusõnal on pöördelõpp -n (Ma olin), on 0.36 korda “suurem” kui asesõna esinemise šanss kontekstis, kus tegusõna on minevikus ja tegusõnal ei ole pöördelõppu (Ma oli). Eelmisel korral rääkisime sellest, et kui miski on millestki suurem nullist väiksem arv kordi, siis on ta tegelikult väiksem.
  • Asesõna esinemise šanss kontekstis, kus tegusõna on minevikus ja tal on pöördelõpp -n, on exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Loppjah"]]) ehk ~0.62. Kuna šanss on < 1, on selles kontekstis tegelikult asesõna mitteesinemine tõenäolisem.
  • Asesõna esinemise tõenäosus kontekstis, kus tegusõna on minevikus ja tal on pöördelõpp -n, on 0.62/(1+0.62) või pikalt välja kirjutades exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Loppjah"]])/(1+exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Loppjah"]])) ehk ~0.38. Asesõna mitte-esinemise tõenäosus on seega 1-0.38=0.62.
  • Mudeli väljund näitab, et tunnuse Lopp koefitsient on statistiliselt oluline (p-väärtus on <2e-16) ehk pöördelõpu tasemete vahel on statistiliselt oluline erinevus selles, kas asesõna pigem väljendatakse või mitte.

3. Tegusõna ajavorm (Aegpr)

  • Koefitsient on 0.60933. See näitab logaritmi sellest, kui mitu korda on uues kontekstis asesõna esinemise šanss baastasemete kontekstist suurem sellises kontekstis, kus seletav tunnus Lopp on baastasemel (Lopp = "ei"), aga Aeg on nüüd Aeg = "pr" (nt Ma ole). Kuna koefitsient on positiivne, võib järeldada, et uues kontekstis/konfiguratsioonis on asesõna esinemise šanss suurem kui baastasemel.
  • Šansisuhe ise on exp(0.60933) või exp(m2.glm$coefficients[["Aegpr"]]) ehk ~1.84. See tähendab, et asesõna esinemise šanss kontekstis, kus tegusõna on olevikus ja tegusõnal puudub pöördelõpp (Ma ole), on 1.84 korda suurem kui asesõna esinemise šanss kontekstis, kus tegusõna on minevikus ja tegusõnal ei ole pöördelõppu (Ma oli).
  • Asesõna esinemise šanss kontekstis, kus tegusõna on olevikus ja tal ei ole pöördelõppu, on exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Aegpr"]]) ehk ~3.22. Kuna šanss on > 1, on selles kontekstis tegelikult asesõna esinemine tõenäolisem kui selle mitteesinemine.
  • Asesõna esinemise tõenäosus kontekstis, kus tegusõna on olevikus ja tal ei ole pöördelõppu, on 3.22/(1+3.22) või pikalt välja kirjutades exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Aegpr"]])/(1+exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Aegpr"]])) ehk ~0.76. Asesõna mitte-esinemise tõenäosus on seega 1-0.76=0.24.
  • Mudeli väljund näitab, et tunnuse Aeg koefitsient on statistiliselt oluline (p-väärtus on <2e-16) ehk ajavormi tasemete vahel on statistiliselt oluline erinevus selles, kas asesõna pigem väljendatakse või mitte.

Mida me siis siiani murrete kohta teame?

  1. Pöördelõpu olemasolu tegusõna vormi küljes (olin) vähendab asesõna mina/ma kasutamise šansse ja tõenäosust;
  2. Tegusõna olevikuvormi kasutamine (ole) suurendab asesõna mina/ma kasutamise šansse ja tõenäosust.

Aga mis on asesõna kasutamise šansid ja tõenäosused kontekstis, kus tegusõna on olevikus ja tal on ka pöördelõpp (ma olen)? Selle teadasaamiseks liidame kõik koefitsiendid.

exp(m2.glm$coefficients[["(Intercept)"]] + 
      m2.glm$coefficients[["Loppjah"]] + 
      m2.glm$coefficients[["Aegpr"]])
## [1] 1.145367

Sellises kontekstis on asesõna kasutamise šanss 1.145 ehk asesõna kasutamise tõenäosus on 1.145 korda suurem kui asesõna mittekasutamise tõenäosus. Asesõna kasutamise tõenäosus selles kontekstis on 1.145/(1+1.145) või pikemalt exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Loppjah"]] + m2.glm$coefficients[["Aegpr"]])/(1+exp(m2.glm$coefficients[["(Intercept)"]] + m2.glm$coefficients[["Loppjah"]] + m2.glm$coefficients[["Aegpr"]])) ehk ~0.53. Asesõna mittekasutamise tõenäosus on seega 1-0.53=0.47

Millises kontekstis on siis asesõna kasutamise tõenäosus kõige suurem?

Võrdleme uuesti kõiki võimalikke šansse:

  • tegusõna minevikus, ilma pöördelõputa (oli):
    • šanss ~1.75,
    • tõenäosus ~0.64;
  • tegusõna minevikus, pöördelõpuga (olin):
    • šanss ~0.62,
    • tõenäosus ~0.38;
  • tegusõna olevikus, ilma pöördelõputa (ole):
    • šanss ~3.22,
    • tõenäosus ~0.76;
  • tegusõna olevikus, pöördelõpuga (olen):
    • šanss ~1.15,
    • tõenäosus ~0.53.

Kõige tõenäolisemalt esineb mina/ma koos tegusõnaga siis, kui tegusõna on olevikus ja ilma pöördelõputa (ma ole). Kõige vähem tõenäoliselt esineb asesõna siis, kui tegusõna on minevikus ja pöördelõpuga.

Arvulised seletavad tunnused logistilise regressiooni mudelis

Äkki mõjutab asesõna esinemist nt see, kui pikk tegusõnavorm on? Võime püstitada üldistest kognitiivse protsessimise tendentsidest lähtuvalt hüpoteesi, et mida pikem on tegusõnavorm, seda tõenäolisemalt kasutatakse tegusõnaga koos ka asesõna, selleks et viide isikule oleks kergemini tuvastatav.

Kuna meil sõnede pikkuseid veel tabelis ei ole, tuleb andmeid natuke eeltöödelda. Murdekorpuse tekstides on palju trankriptsioonimärke, mis meid sõnapikkuste kokkulugemisel ei huvita.

# Vaatame, mis sümboleid ja kui palju 
# sõnades üldse on
table(unlist(strsplit(isik1suur$Sone, "")))
## 
##    '    -         #    (    )    *    .    `    +    a    b    d    e    g    h 
##  858   13    9  242  532  528  183  945  914    2 1665   22  134 1235  226  171 
##    i    j    k    l    m    n    o    p    q    r    s    t    u    v    w    õ 
## 3321  124 1108 2045  196 2935 1045  314    9  182 1799 1603  501  316    2  383 
##    ä    ö    ü    y 
##  878  115  258    4
# Kustutame ebavajalikud sümbolid.
# Selleks asendame need mitte millegagi.
isik1suur$Sone <- gsub("['#()\\*\\.`]", "", isik1suur$Sone)

# Arvutame tegusõnade pikkuse tähemärkides
isik1suur$Sonepikkus <- nchar(isik1suur$Sone) 

# Vaatame tabeli kokkuvõtet
summary(isik1suur)
##      Sone               Lemma       Pron       Lopp       Aeg      
##  Length:4066        olema  : 637   ei :1893   ei :1627   ipf:2636  
##  Class :character   minema : 257   jah:2173   jah:2439   pr :1430  
##  Mode  :character   käima  : 232                                   
##                     ütlema : 224                                   
##                     tegema : 191                                   
##                     saama  : 184                                   
##                     (Other):2341                                   
##  Ref_kaugus_num   Ref_kaugus_klass             Verbiklass      Murre     
##  Min.   : 0.000   Length:4066        kognitiivne    : 316   IDA   : 436  
##  1st Qu.: 2.000   Class :character   kommunikatiivne: 319   KESK  :1081  
##  Median : 4.000   Mode  :character   muu            :3431   RANNA : 522  
##  Mean   : 6.797                                             SAARTE:1308  
##  3rd Qu.: 9.000                                             VORU  : 719  
##  Max.   :29.000                                                          
##                                                                          
##      Fail             Sonepikkus   
##  Length:4066        Min.   : 2.00  
##  Class :character   1st Qu.: 4.00  
##  Mode  :character   Median : 5.00  
##                     Mean   : 5.07  
##                     3rd Qu.: 6.00  
##                     Max.   :17.00  
## 

Tundub, et kõige lühem tegusõna andmestikus on ainult 2 tähemärgi pikkune, kõige pikem aga 11 tähemärgi pikkune. Keskmiselt jääb sõnade pikkus aga umbes 5 tähemärgi kanti.

Teeme nüüd uue, kolme seletava tunnusega mudeli.

m3.glm <- glm(Pron ~ Lopp + Aeg + Sonepikkus, data = isik1suur, family = "binomial")
summary(m3.glm)
## 
## Call:
## glm(formula = Pron ~ Lopp + Aeg + Sonepikkus, family = "binomial", 
##     data = isik1suur)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.7619  -1.0853   0.6899   1.0590   1.7967  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  1.24799    0.12217  10.216  < 2e-16 ***
## Loppjah     -0.88266    0.07161 -12.327  < 2e-16 ***
## Aegpr        0.50547    0.07124   7.095 1.29e-12 ***
## Sonepikkus  -0.14645    0.02283  -6.413 1.42e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5617.4  on 4065  degrees of freedom
## Residual deviance: 5266.3  on 4062  degrees of freedom
## AIC: 5274.3
## 
## Number of Fisher Scoring iterations: 4

Kuidas nüüd tulemusi tõlgendada? Kas vabaliikme väärtus on tähenduslik?

Vabaliige väärtusega 1.24799 ennustab asesõna esinemise logaritmitud šansse, KUI

  • tegusõna vormil ei ole pöördelõppu (Lopp = "ei"),
  • tegusõna on minevikus (Aeg = "ipf"),
  • tegusõna pikkus on 0 tähte (Sonepikkus = 0)…

Vabaliige sellisena järelikult väga palju ei tähenda, kuna 0-tähelisi sõnu ei saa olemas olla.

Millised tunnused kasvatavad asesõna esinemise šanssi/tõenäosust?

  • Aeg: asesõna esinemise šansid kasvavad, kui tegusõnavorm on olevikus.

Millised tunnused vähendavad asesõna esinemise šanssi/tõenäosust?

  • Lopp: asesõna esinemise šansid kahanevad, kui tegusõna vormil on pöördelõpp.
  • Sonepikkus: asesõna esinemise šansid kahanevad tegusõnavormi pikkuse kasvades.

Teeme nüüd mudeli, kus lisaks on ka arvuline tunnus Ref_kaugus_num. Tunnuse lisamise eelduseks võiks olla hüpotees, et mida kaugemal on kontekstis eelnev viide 1. isikule, seda tõenäolisemalt võiks asesõna koos verbivormiga esineda.

m4.glm <- glm(Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num, data = isik1suur, family = "binomial")
summary(m4.glm)
## 
## Call:
## glm(formula = Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num, 
##     family = "binomial", data = isik1suur)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.2074  -1.0815   0.6576   1.0506   1.8628  
## 
## Coefficients:
##                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     0.927360   0.127165   7.293 3.04e-13 ***
## Loppjah        -0.915868   0.072600 -12.615  < 2e-16 ***
## Aegpr           0.539332   0.072205   7.470 8.05e-14 ***
## Sonepikkus     -0.145554   0.023040  -6.317 2.66e-10 ***
## Ref_kaugus_num  0.048690   0.005256   9.263  < 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: 5617.4  on 4065  degrees of freedom
## Residual deviance: 5175.3  on 4061  degrees of freedom
## AIC: 5185.3
## 
## Number of Fisher Scoring iterations: 4

Ka kaugus eelmises viitest 1. isikule tundub olevat statistiliselt oluline tegur asesõna kasutamise seletamisel. Asesõna kasutamise šanss ja tõenäosus kasvab, mida kaugemal on eelmine 1. isiku viide.

Kui tõenäoline on selle mudeli põhjal, et järgmises kontekstis esineks paksus kirjas tegusõnaga ka asesõna mina/ma (jättes praegu kõrvale olulise teadmise, et meil on tegemist murrete andmetel põhineva mudeliga ja näitekontekst on kirjakeelne):

Ja siis ma olen nagu sangar seiklusfilmis, ohu ees ei sule iial silmi. Ei ma satu hätta ja ükski neiu jätta mind ei enam saa. Kui tarvis, tähti taevast alla tooma sõidan, igas paigas aina kuulsust võidan. Kasvõi tiigrit paitan, jah, miski siin ei aita, kõigist julgem ma, kõigist julgem olen ma!

Defineerime konteksti:

  • Tegusõnal on pöördelõpp -n.
  • Tegusõna on oleviku vormis.
  • Tegusõna pikkus on 6 tähemärki.
  • Eelmise 1. isiku viite (sõidan) ja tegusõna vahel on 4 sõna.
# Leiame asesõna esinemise šansi
(P <- exp(m4.glm$coefficients[["(Intercept)"]] + 
            m4.glm$coefficients[["Loppjah"]] + 
            m4.glm$coefficients[["Aegpr"]] + 
            6*m4.glm$coefficients[["Sonepikkus"]] + 
            4*m4.glm$coefficients[["Ref_kaugus_num"]]))
## [1] 0.8800801
# Leiame asesõna esinemise tõenäosuse
P/(1+P)
## [1] 0.4681078

Sellises kontekstis niisiis asesõna tõenäolisemalt (murretes) tegusõnaga koos ei esine.

Mudelite võrdlemine

Milline mudel on kõige parem?

Logistilise regressiooni mudeleid ei saa võrrelda R-ruudu alusel nagu lineaarses regressioonis. Mudelite valikul on kõige parem alustada erinevate mudelite Akaike informatsioonikriteeriumi AIC võrdlemisest, mis väljendab seletamata varieerumise hulka andmetes. Teisest perspektiivist võib AIC-d kirjeldada ka kui seda informatsiooni hulka, mis läheb kaotsi, kui algandmete varieeruvust mudeli kaudu seletada: mudel ei ole kunagi täiesti täpne representatsioon algandmetest. AIC arvestab valimi suuruse ja mudelisse kaasatud parameetrite arvuga (nagu kohandatud R-ruut lineaarse regressiooni mudelis) ja mida väiksem AIC väärtus on, seda parem.

Oleme teinud 4 mudelit, millest igaühes on järjest rohkem tunnuseid. Sisuliselt oleme järginud samm-sammulist mudeldamist. Võrdleme nende mudelite AIC-d. 

AIC(m1.glm)
## [1] 5391.306
AIC(m2.glm)
## [1] 5314.348
AIC(m3.glm)
## [1] 5274.282
AIC(m4.glm)
## [1] 5185.344

# või
AIC(m1.glm, m2.glm, m3.glm, m4.glm)
##        df      AIC
## m1.glm  2 5391.306
## m2.glm  3 5314.348
## m3.glm  4 5274.282
## m4.glm  5 5185.344

# AIC saab kätte ka mudeli väljundit 
# vaadates või mudelist küsides
m1.glm$aic
## [1] 5391.306
m2.glm$aic
## [1] 5314.348
m3.glm$aic
## [1] 5274.282
m4.glm$aic
## [1] 5185.344

Näeme, et praegusel juhul on iga lisatud tunnusega läinud meie mudelis seletamata varieerumise osa väiksemaks.

AIC-d võib võrrelda erinevate mudelite vahel, mis põhinevad samal andmestikul ja millel on sama uuritav tunnus, ilma et nendes mudelites peaks tingimata olema jagatud seletavaid tunnuseid.

Nn nested ehk hierarhiliste mudelite võrdlemiseks, kus igas komplekssemas mudelis sisalduvad ka lihtsamates mudelites olevad mõjud, saab kasutada ka logistilise regressiooni mudelite puhul anova()-funktsiooni, mis teeb mudelite jääkidel esimest tüüpi ANOVA. Kui tahame väljundis näha ka jääkide erinevuse statistilist olulisust, tuleb logistiliste mudelite puhul täpsustada ka, et testi liik on hii-ruut-test (test = "Chisq").

anova(m1.glm, m2.glm, m3.glm, m4.glm, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: Pron ~ Lopp
## Model 2: Pron ~ Lopp + Aeg
## Model 3: Pron ~ Lopp + Aeg + Sonepikkus
## Model 4: Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num
##   Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
## 1      4064     5387.3                          
## 2      4063     5308.3  1   78.957 < 2.2e-16 ***
## 3      4062     5266.3  1   42.066 8.825e-11 ***
## 4      4061     5175.3  1   90.938 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Iga mudelisse lisatud tunnus on teinud mudelit oluliselt paremaks (p-väärtused on väikesed), arvestades ka kulu, mis läheb mudelil uute lisatavate parameetrite hindamisele. Tulbad Resid.Dev ja Resid.Df on vastavalt jääkhälbimuse näitaja ja sellega seotud vabadusastmete arv, mida näeb ka mudelist summary() käsuga (vt ka 11. ptk materjale). Df on vabadusastmete arv mudelis, mis arvuliste tunnuste puhul on alati 1 ja kategoriaalsete tunnuste puhul tasemete arv -1. Deviance näitab siin kahe järjestikuse mudeli jääkhälbimuste ümardatud vahet, 78.957 on 5387.3-5308.3, 42.066 on 5308.3-5266.3, 90.938 on 5266.3-5175.3. Mida suurem on mudeli Deviance, seda rohkem varieerumisest see mudel seletab, võrreldes sellele eelneva mudeliga.

anova() ei ütle iseenesest millist mudelit peaksime eelistama, vaid lihtsalt seda, kas erinevus kahe või enama mudeli vahel on statistiliselt oluline, st seda, kas väiksem jääkhälbimus (Resid. Dev, mis on lähedane AIC-ga) võib olla saadud juhuslikult või mitte.

Nagu lineaarses regressioonis, võib ka logistilises regressioonis mudeldamist alustada kas n-ö nullmudelist, lisades samm-sammult tunnuseid juurde ning kontrollides, kas mudel läheb sellest paremaks või mitte, või hoopis maksimaalsest mudelist, kust tuleb hakata ebaolulisi asju välja viskama. Praegu oleme liikunud lihtsamast mudelist komplekssema suunas, aga võime proovida ka teistpidi. Selleks on R-is nt funktsioon drop1(), mis viskab ükshaaval mudelist tunnuseid välja ja näitab, kas mudel läks sellest oluliselt halvemaks või mitte.

drop1(m4.glm, test = "Chisq")
## Single term deletions
## 
## Model:
## Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num
##                Df Deviance    AIC     LRT  Pr(>Chi)    
## <none>              5175.3 5185.3                      
## Lopp            1   5339.0 5347.0 163.649 < 2.2e-16 ***
## Aeg             1   5231.9 5239.9  56.562 5.445e-14 ***
## Sonepikkus      1   5216.1 5224.1  40.735 1.743e-10 ***
## Ref_kaugus_num  1   5266.3 5274.3  90.938 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Oluline on siin eeskätt vaadata p-väärtusi: kui p-väärtus on väike, on tunnusel tervikuna (!) mudelis oluline koht. Erinevalt mudeli enda väljundist, mis hindab kategoriaalsete seletavate tunnuste puhul ainult tunnuse ühe taseme erinevust baastasemest, võimaldab see test niisiis kontrollida tunnuse kui terviku olulisust. Rea <none> väärtus tulbas Deviance (hälbimus) on kõige parema mudeli hälbimus ning sellele lähedane väärtus saadakse ka kõikide ülejäänud ridade Deviance-väärtusest LRT-väärtuse (Likelihood-Ratio Test) lahutamisel. LRT ja p-väärtuse tulbad omakorda on samad, mida annab teist tüüpi ANOVA (nt funktsiooniga Anova() paketist car).

car::Anova(m4.glm)
## Analysis of Deviance Table (Type II tests)
## 
## Response: Pron
##                LR Chisq Df Pr(>Chisq)    
## Lopp            163.649  1  < 2.2e-16 ***
## Aeg              56.562  1  5.445e-14 ***
## Sonepikkus       40.735  1  1.743e-10 ***
## Ref_kaugus_num   90.938  1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Põhimõtteliselt saab sama asja teada ka anova()-ga, kui sisendiks panna ainult üks mudel, ent funktsioonide testitüübid on erinevad ja seega võib vahel saada erinevaid tulemusi. ANOVA tüüpide kohta võid pikemalt lugeda nt siit.

Teeme nüüd veel kaks mudelit, kuhu lisame järjest juurde 1) tunnuse Verbiklass ja 2) tunnuse Murre (kuna tegemist on ikkagi murdeandmetel põhineva mudeliga).

# Verbiklassiga mudel
m5.glm <- glm(Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + Verbiklass, data = isik1suur, family = "binomial")

# Kui tahame mitme tunnusega mudelile lihtsalt 
# üht tunnust juurde lisada, saab seda teha ka lühemalt.
# Verbiklassi ja murdega mudel
m6.glm <- update(m5.glm, ~ . + Murre)

Võrdleme nüüd mudeleid 4-6.

AIC(m4.glm, m5.glm, m6.glm)
##        df      AIC
## m4.glm  5 5185.344
## m5.glm  7 5053.165
## m6.glm 11 4921.806
anova(m4.glm, m5.glm, m6.glm, test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num
## Model 2: Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + Verbiklass
## Model 3: Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + Verbiklass + 
##     Murre
##   Resid. Df Resid. Dev Df Deviance  Pr(>Chi)    
## 1      4061     5175.3                          
## 2      4059     5039.2  2   136.18 < 2.2e-16 ***
## 3      4055     4899.8  4   139.36 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
drop1(m6.glm, test = "Chisq")
## Single term deletions
## 
## Model:
## Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + Verbiklass + 
##     Murre
##                Df Deviance    AIC     LRT  Pr(>Chi)    
## <none>              4899.8 4921.8                      
## Lopp            1   5038.2 5058.2 138.386 < 2.2e-16 ***
## Aeg             1   4917.6 4937.6  17.843 2.399e-05 ***
## Sonepikkus      1   4979.0 4999.0  79.173 < 2.2e-16 ***
## Ref_kaugus_num  1   4979.6 4999.6  79.796 < 2.2e-16 ***
## Verbiklass      2   5029.1 5047.1 129.309 < 2.2e-16 ***
## Murre           4   5039.2 5053.2 139.359 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Tundub, et kõige parema peamõjudega mudeli saame, kui jätame mudelisse kõik tunnused sisse. Vaatame ka 6. mudeli ülevaadet.

summary(m6.glm)
## 
## Call:
## glm(formula = Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + 
##     Verbiklass + Murre, family = "binomial", data = isik1suur)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.4743  -1.0188   0.4619   1.0152   2.0980  
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                3.331238   0.266823  12.485  < 2e-16 ***
## Loppjah                   -1.470320   0.128701 -11.424  < 2e-16 ***
## Aegpr                      0.327413   0.077620   4.218 2.46e-05 ***
## Sonepikkus                -0.218757   0.025179  -8.688  < 2e-16 ***
## Ref_kaugus_num             0.047513   0.005455   8.709  < 2e-16 ***
## Verbiklasskommunikatiivne  0.422679   0.201488   2.098   0.0359 *  
## Verbiklassmuu             -0.958337   0.145173  -6.601 4.07e-11 ***
## MurreKESK                 -0.627230   0.121543  -5.161 2.46e-07 ***
## MurreRANNA                -0.774596   0.139631  -5.547 2.90e-08 ***
## MurreSAARTE               -0.685024   0.142947  -4.792 1.65e-06 ***
## MurreVORU                 -1.806956   0.180653 -10.002  < 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: 5617.4  on 4065  degrees of freedom
## Residual deviance: 4899.8  on 4055  degrees of freedom
## AIC: 4921.8
## 
## Number of Fisher Scoring iterations: 4

Baastaseme kontekstis on:

  • pöördelõputa tegusõna minevikuvormis (nt oli),
  • tegusõna pikkus 0 tähemärki,
  • kaugus eelmisest viitest 0 sõna,
  • tegusõna semantiline klass kognitiivne (nt mäletama, teadma),
  • keelejuht idamurde kõneleja.

Tunnused, mis tõstavad asesõna esinemise šanssi:

  • tegusõna kasutamine olevikuvormis,
  • kaugus eelmisest viitest 1. isikule,
  • kommunikatiivsete tegusõnade kasutamine (nt ütlema)

Tunnused, mis langetavad asesõna esinemise šanssi:

  • tegusõna pöördelõpu -n olemasolu (nt olin),
  • tegusõna pikkus tähemärkides
  • mittekognitiivsete ja mittekommunikatiivsete verbide (“muu”) kasutamine,
  • mis tahes teise murde kõnelemine (aga eriti Võru murde kõnelemine).

Interaktsioonid

Nagu lineaarses regressioonis, võib ka logistilise regressiooni mudelis hinnata tunnustevahelisi interaktsioone. See tähendab, et ühe seletava tunnuse mõju sõltub teise seletava tunnuse väärtustest. Näiteks hüpoteetiliselt:

  • Gripihooajal grippi haigestumise (vs. mittehaigestumise) tõenäosust vähendab vaktsineeritud olemine ainult juhul, kui vaktsineeritud on vahemikus oktoobrist detsembrini. Muul juhul statistiliselt oluline mõju puudub;
  • Teietamise (vs. sinatamise) tõenäosus kasvab vastavalt vestluspartneri vanuse tõusule ainult juhul, kui vestluspartner on võõras. Tuttavate vestluspartneritega vanusel statistiliselt oluline mõju puudub;
  • Leksikaalses otsustuskatses sõna tõenäosus saada klassifitseerituks päriselt olemasolevaks sõnaks (vs. päriselt mitte olemasolevaks sõnaks) kasvab vastavalt täishäälikute hulga suurenemisele sõnas juhul, kui sõna pikkus on alla 8 tähemärgi, ning kahaneb juhul, kui sõna pikkus on üle 8 tähemärgi.

Meie mudeli m6.glm puhul võib interaktsioone esineda nt tegusõna semantilise klassi ja tegusõna ajavormi vahel (keeles on olevikuvormis sagedasti kasutusel väljendid, nagu ma tean, ma arvan). Küsime seega, kas tegusõna ajavormil on erinev mõju asesõna esinemise tõenäosusele vastavalt tegusõna semantilisele klassile.

m7.glm <- update(m6.glm, ~ . + Verbiklass:Aeg)
anova(m6.glm, m7.glm, test = "Chisq") # Tundub, et interaktsioon teeb mudeli ainult õige pisut paremaks
## Analysis of Deviance Table
## 
## Model 1: Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + Verbiklass + 
##     Murre
## Model 2: Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + Verbiklass + 
##     Murre + Aeg:Verbiklass
##   Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
## 1      4055     4899.8                       
## 2      4053     4893.1  2   6.7279   0.0346 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
AIC(m6.glm, m7.glm)
##        df      AIC
## m6.glm 11 4921.806
## m7.glm 13 4919.079
drop1(m7.glm,test = "Chisq")
## Single term deletions
## 
## Model:
## Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + Verbiklass + 
##     Murre + Aeg:Verbiklass
##                Df Deviance    AIC     LRT Pr(>Chi)    
## <none>              4893.1 4919.1                     
## Lopp            1   5031.0 5055.0 137.962   <2e-16 ***
## Sonepikkus      1   4970.0 4994.0  76.910   <2e-16 ***
## Ref_kaugus_num  1   4973.0 4997.0  79.881   <2e-16 ***
## Murre           4   5032.4 5050.4 139.360   <2e-16 ***
## Aeg:Verbiklass  2   4899.8 4921.8   6.728   0.0346 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Vaatame mudelisse sisse ka.

summary(m7.glm)
## 
## Call:
## glm(formula = Pron ~ Lopp + Aeg + Sonepikkus + Ref_kaugus_num + 
##     Verbiklass + Murre + Aeg:Verbiklass, family = "binomial", 
##     data = isik1suur)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.4790  -1.0172   0.4542   1.0166   2.0954  
## 
## Coefficients:
##                                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                      3.010527   0.326947   9.208  < 2e-16 ***
## Loppjah                         -1.469137   0.128783 -11.408  < 2e-16 ***
## Aegpr                            0.779829   0.287908   2.709  0.00676 ** 
## Sonepikkus                      -0.216372   0.025250  -8.569  < 2e-16 ***
## Ref_kaugus_num                   0.047638   0.005467   8.714  < 2e-16 ***
## Verbiklasskommunikatiivne        1.001958   0.313384   3.197  0.00139 ** 
## Verbiklassmuu                   -0.649403   0.242598  -2.677  0.00743 ** 
## MurreKESK                       -0.636810   0.121661  -5.234 1.66e-07 ***
## MurreRANNA                      -0.777364   0.139647  -5.567 2.60e-08 ***
## MurreSAARTE                     -0.690195   0.142992  -4.827 1.39e-06 ***
## MurreVORU                       -1.810241   0.180786 -10.013  < 2e-16 ***
## Aegpr:Verbiklasskommunikatiivne -1.064950   0.412732  -2.580  0.00987 ** 
## Aegpr:Verbiklassmuu             -0.441221   0.297074  -1.485  0.13748    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5617.4  on 4065  degrees of freedom
## Residual deviance: 4893.1  on 4053  degrees of freedom
## AIC: 4919.1
## 
## Number of Fisher Scoring iterations: 4

Interaktsioonides esinevate tunnuste peamõjude tõlgendamisel tuleb olla ettevaatlik. Aegpr ei näita enam tunnuse üldist efekti, vaid oleviku mõju asesõna esinemise tõenäosusele siis, kui tegemist on kognitiivse tegusõnaga. Samamoodi näitab Verbiklasskommunikatiivne tunnuse efekti minevikuvormis tegusõnadega. Ehkki ka ilma interaktsioonideta mudelis on koefitsientide tõlgendamise aluseks teiste tunnuste baastasemed, saab neid käsitleda siiski üldiste mõjudena, kuna erinevate koefitsientide mõjusid lihtsalt kokku liites saame uue konteksti ennustused. Siin aga tuleb silmas pidada, mille kohta täpselt šansisuhet väljendatakse.

Interaktsioon Aegpr:Verbiklasskommunikatiivne võrdleb nüüd oleviku ajavormi mõju kommunikatiivsete ja kognitiivsete tegusõnade vahel.

exp(m7.glm$coefficients[["Aegpr"]]+m7.glm$coefficients[["Aegpr:Verbiklasskommunikatiivne"]])
## [1] 0.7519232

Šansisuhe näitab, et tegusõna oleviku vormidega on asesõna kasutamise šanss kommunikatiivsete tegusõnadega 0.75 korda “suurem” kui kognitiivsete tegusõnadega. Teisisõnu: kommunikatiivsete tegusõnade (ma ütlen) puhul on olevikus väiksem tõenäosus kohata asesõna kui kognitiivsete tegusõnade (ma tean) puhul. AGA mõlemate puhul on siiski asesõna kasutamise šanss väga suur!

Interaktsiooni võib tõlgendada ka teistpidi: kui kommunikatiivsete tegusõnade mõju mineviku ja olevikuvormide hulgas.

exp(m7.glm$coefficients[["Verbiklasskommunikatiivne"]] + m7.glm$coefficients[["Aegpr:Verbiklasskommunikatiivne"]])
## [1] 0.9389505

See šansisuhe näitab, et kommunikatiivsete tegusõnadega on asesõna kasutamise šanss olevikuvormidega koos 0.94 korda “suurem” kui minevikuvormidega koos. Teisisõnu: koos kommunikatiivsete tegusõnade olevikuvormidega on vähem tõenäoline kohata asesõna kui nende minevikuvormidega.

Šansside leidmiseks võime panna koefitsiendid tabelisse:

Aeg Verbiklass Logit(P(Pron = “jah”))
ipf kognitiivne exp(3.0105)
pr kognitiivne exp(3.0105+0.7798)
ipf kommunikatiivne exp(3.0105+1.0020)
pr kommunikatiivne exp(3.0105+0.7798+1.0020-1.0650)

Saame tulemusi natuke lihtsustada ja teha järelduse, et kommunikatiivsed tegusõnad esinevad peaaegu alati koos asesõnaga, kui nad on minevikus (ma ütlesin). Kognitiivsed tegusõnad jällegi esinevad minevikus koos asesõnaga vähem, ent siiski väga sageli.

Olevikus esinevad nii kommunikatiivsed kui ka kognitiivsed tegusõnad asesõnaga enam-vähem sama tõenäosusega.

Mis puutub teistesse tegusõnadesse, siis erinevad need kognitiivsetest tegusõnadest küll minevikus (need esinevad minevikus oluliselt harvemini asesõnaga kui kognitiivsed tegusõnad), ent olevikus ei ole šansi muutus kognitiivsete tegusõnadega võrreldes statistiliselt oluline.

Interaktsioonidega mudeli visualiseerimine

Interaktsioonide analüüsil on suureks abiks visuaalne tugi. Selleks võib kasutada nt funktsioonid visreg() paketist visreg.

library(visreg)
visreg(m7.glm, xvar = "Aeg", by = "Verbiklass")

Hallid punktid on iga vaatluse kohta mudeli osajäägid (partial residuals), y-teljel on näidatud uuritava tunnuse šansi logaritm ning sinine joon on mudeli ennustus vastava tunnusekombinatsiooni kohta (nt verbiklass = "kognitiivne" + Aeg = "ipf"). Jooniselt on näha, et kognitiivsetel ja kommunikatiivsetel tegusõnadel on asesõna esinemise seletamisel vastupidine tendents: kognitiivsete tegusõnadega asesõna kasutamise šanss olevikuvormides kasvab, kommunikatiivsete tegusõnadega kahaneb. Muudel tegusõnadel on asesõna kasutamise šanss nii mineviku- kui ka olevikuvormidega teistest verbiklassidest madalam, ent seose suund on sama, mis kognitiivsete tegusõnadega.

Siin ei ole kontekst, mille kohta mudeli ennustused esitatakse, päris sama mis regressioonimudeli koefitsientide tabelis. Siin on vaikimisi võrdluskontekstiks konfiguratsioon, kus kategoriaalsete seletavate tunnuse väärtus on nende tunnuste kõige sagedasem väärtus, ning arvuliste tunnuste väärtus nende mediaanväärtus. Võrdlusalust saab muuta nii visreg-funktsioonis kui tegelikult ka regressioonimudelis, muutes tunnuste baastasemeid või skaleerides arvulisi tunnuseid nii, et vabaliige väljendaks mitte “0-situatsiooni”, vaid nt mingit keskväärtust (nt lahutades kõikidest väärtustest tunnuse keskmise). Selleks, et näha, mis konteksti kohta täpselt visreg ennustusi näitab, saab funktsioonis täpsustada ära argumendi print.cond = TRUE. Samuti võib kuvada y-teljel šansi logaritmide asemel tõenäosusi argumendiga scale = "response" (sel juhul tagab argument partial = TRUE, et näeme endiselt ka jääke).

visreg(m7.glm, xvar = "Aeg", by = "Verbiklass", print.cond = TRUE, scale = "response", partial = TRUE)
## Conditions used in construction of plot
## Verbiklass: kognitiivne / kommunikatiivne / muu
## Lopp: jah
## Sonepikkus: 5
## Ref_kaugus_num: 4
## Murre: SAARTE

visreg-funktsiooniga saab vaadata ka üksikuid tunnuseid. Samuti saab jooniseid modifitseerida ggploti-stiilis, kui täpsustada funktsioonis argumendi gg = TRUE. Vaata lähemalt siit.

Veelgi lihtsama väljundi saab funktsiooniga visreg2d(), mis näitab värvidega ära kõige suuremad ja väiksemad tõenäosused.

visreg2d(m7.glm, x="Aeg", y="Verbiklass", plot.type="gg", scale = "response")

Sellelt graafikult näeme kohe ära, et klassides “muu” ja “kognitiivne” on ajavormi mõju samapidine (olevikuvormidega asesõna kasutamise tõenäosus kasvab), klassis “kommunikatiivne” on aga ajavormi mõju teistpidine.

Võime vaadata ka kõikide mudelisse kaasatud tunnuste mõjusid graafiliselt, näiteks kasutades funktsiooni predictorEffects() paketist effects. Siin esitatu erineb regressioonimudeli väljundist selle poolest, et iga seletava tunnuse mõju on hinnatud kontekstis, kus arvuliste seletvaate tunnuste mõju ei ole mitte nullis, vaid nende kesktasemel.

library(effects)
plot(predictorEffects(m7.glm), type = "response", rows = 3, cols = 2)

Testida võiks tegelikult veel interaktsioone, nt

  • murde ja tegusõna pöördelõpu vahel (mingites murretes on pöördelõpu väljajätt ise tavalisem kui teistes),
  • sõne pikkuse ja pöördelõpu vahel (kui sõnal on pöördelõpp -n, on see kohe ühe tähemärgi võrra pikem).

Mitme tasemega kategoriaalsed mudelid (nagu nt murre) teevad interaktsioonides aga mudeli kompleksseks ja selle tõlgendamise keeruliseks.

Kordamisküsimused

1. Milline väide on õige?

  1. Kui hii-ruut-test ei näita, et kahe tunnuse vahel oleks seos, tuleks tunnus mudelist välja jätta.
  2. Logistilise regressiooni vabaliige näitab šanssi, kui mudelis on 1 seletav tunnus, ja šansisuhet, kui mudelis on mitu seletavat tunnust.
  3. Mitme seletava tunnusega mudel on alati parem kui ühe seletava tunnusega mudel.
  4. Logistilise regressioonimudeli headust ei saa hinnata R-ruudu järgi samamoodi nagu lineaarse regressioonimudeli puhul.

2. Milliseid mudeli näitajaid näeb logistilise regressioonimudeli väljundist käsuga summary()?

  1. AIC-d.
  2. Hälbimust.
  3. Mudeli p-väärtust.
  4. Koefitsientide p-väärtusi.

3. Teeme kursuse küsimustiku andmete pealt mudeli, mis ennustab vastajate lemmikjooki sünniaasta, ülikoolis õpitud aastate arvu, kvantmeetodite kogemuse, lemmiklooma ja küsimustikule vastamise aasta järgi. Millised peamõjud tuleks mudelisse jätta?

load("kysimustik_2020.RData")
m <- glm(lemmikjook ~ synniaasta + kaua_opid + kogemused_kvant + lemmikloom + aasta, data = kysimustik, family = "binomial")
drop1(m, test = "Chisq")
## Single term deletions
## 
## Model:
## lemmikjook ~ synniaasta + kaua_opid + kogemused_kvant + lemmikloom + 
##     aasta
##                 Df Deviance    AIC    LRT Pr(>Chi)
## <none>               47.000 63.000                
## synniaasta       1   47.020 61.020 0.0208   0.8853
## kaua_opid        1   47.053 61.053 0.0530   0.8178
## kogemused_kvant  1   47.324 61.324 0.3241   0.5691
## lemmikloom       2   51.099 63.099 4.0989   0.1288
## aasta            2   48.195 60.195 1.1950   0.5502
  1. mitte ühtegi
  2. kogemused_kvant ja vastamise aasta
  3. kogemused_kvant, vastamise aasta ja lemmikloom
  4. kõik

4. Tee kursuse küsimustiku andmete pealt mudel, mis ennustab seda, kas vastajal on kogemusi kvantitatiivsete meetoditega või mitte, vastavalt küsimustikule vastamise aasta ja ülikoolis õpitud aastate arvu järgi. Milline väide on õige?

m1 <- glm(kogemused_kvant ~ aasta + kaua_opid, data = kysimustik, family = "binomial")
  1. Mõlemad seletavad tunnused teevad mudelit oluliselt paremaks.
  2. Ainult vastamise aasta tuleks mudelisse alles jätta.
  3. Ainult õpitud aastad tuleks mudelisse alles jätta.
  4. Tuleks lisada ka aasta ja õpitud aastate interaktsioon.

Järgmisel korral

  • Mudelite headuse näitajad
  • Logistilise regressiooni eelduste kontroll
  • Mudeli valideerimine
  • Segamudelid