---
title: "KÃµnetempo ja -soravuse varieerumine eesti keeles"
author: "PÃ¤rtel Lippus, Maarja-Liisa Pilvik, Kaidi LÃµo, Liina LindstrÃ¶m"
date: "22.12.2023"
output:
  html_document: default
  word_document: default
csl: "https://raw.githubusercontent.com/citation-style-language/styles/master/unified-style-sheet-for-linguistics.csl"
link-citations: yes
lang: et
bibliography: viited.bib
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
                      message = FALSE,
                      warning = FALSE,
                      fig.width=4.6,fig.height=2.6)
options(scipen = 99)
```

See on R-i kood, millega on analÃ¼Ã¼situd kÃµnetempo ja soravuse andmeid Eesti Rakenduslingvistika Ãhingu aastaraamatus ilmunud artikli tarvis.


```{r, echo = T, message=F}
library(tidyverse)
library(gridExtra)

teema <-  theme_bw() + 
  theme(plot.title = element_text(hjust = 0.5, size = 12),
        axis.text = element_text(size = 8),
        axis.title = element_text(size = 8),
        strip.text = element_text(size = 10),
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 10))
```

## Andmete ettevalmistus

Teke ja foneetikakorpuse andmestikus on andmed kogutud kÃµnevoorude kaupa (lokaalne kÃµnetempo). Artiklis analÃ¼Ã¼sime globaalset kÃµnetempot, selleks teisendame andmed nii, et Ã¼helt kÃµnelejalt oleks Ã¼ks rida Ã¼he faili kohta. Samuti siin artiklis analÃ¼Ã¼sime ainult dialooge, nii et filtreerime vÃ¤lja failid, kus on rohkem kui kaks vestlejat. Siin 


### Teke andmed

Koodiblokk mis, loeb teke andmed:

```{r, echo=T}
teke <- read.delim("teke_voorud.csv", encoding = "UTF-8") 
teke$sugu <- toupper(teke$sugu)
```


```{r, echo=T}
# vastavalt faili kogukestusele
teke %>%
  group_by(fail, koneleja) %>%
  reframe(faili_kogukestus = (faili_kogukestus_ms/1000),
            vanus = vanus,
            sugu = sugu,
            silpide_arv = sum(silpide_arv),
            sonade_arv = sum(sÃµnade_arv),
            poolikute_arv = sum(poolikute_arv),
            venituste_arv = sum(venituste_arv),
            korduste_arv =sum(korduste_arv),
            disf_arv = sum(poolikute_arv+korduste_arv+venituste_arv),
            kestus = sum((kestus_ms)/1000)) %>%
  distinct() %>%
  filter(!is.na(sugu), !is.na(vanus)) %>%
  group_by(fail) %>%
  mutate(prop = kestus/faili_kogukestus) %>%
  ungroup() -> tmp

tmp <- data.frame(tmp,
                  kaaskoneleja = character(nrow(tmp)),
                  kaaskoneleja_sugu = character(nrow(tmp)),
                  kaaskoneleja_vanus = numeric(nrow(tmp)),
                  kaaskoneleja_kestus = numeric(nrow(tmp)),
                  kaaskoneleja_silpide_arv = numeric(nrow(tmp)),
                  kaaskoneleja_sonade_arv = numeric(nrow(tmp)),
                  kaaskoneleja_disf_arv = numeric(nrow(tmp))) 
for(f in unique(tmp$fail)){
  tmp2 <- tmp[tmp$fail==f,]
  for(k in tmp2$koneleja){
    tmp2[tmp2$koneleja != k,]$koneleja %>% 
      unique() %>% paste(., collapse = "_") -> tmp$kaaskoneleja[tmp$fail==f&tmp$koneleja==k]
    tmp2[tmp2$koneleja != k,]$sugu %>% 
      unique() %>% ifelse(length(.) > 1, "mÃµlemad", .) -> tmp$kaaskoneleja_sugu[tmp$fail==f&tmp$koneleja==k]
    tmp2[tmp2$koneleja != k,]$vanus %>% 
      mean() -> tmp$kaaskoneleja_vanus[tmp$fail==f&tmp$koneleja==k]
    tmp2[tmp2$koneleja != k,]$silpide_arv %>% 
      mean() -> tmp$kaaskoneleja_silpide_arv[tmp$fail==f&tmp$koneleja==k]
    tmp2[tmp2$koneleja != k,]$sonade_arv %>% 
      mean() -> tmp$kaaskoneleja_sonade_arv[tmp$fail==f&tmp$koneleja==k]
    tmp2[tmp2$koneleja != k,]$kestus %>% 
      mean() -> tmp$kaaskoneleja_kestus[tmp$fail==f&tmp$koneleja==k]
    tmp2[tmp2$koneleja != k,]$disf_arv %>% 
      mean() -> tmp$kaaskoneleja_disf_arv[tmp$fail==f&tmp$koneleja==k]
  }
}
tmp %>%
  filter(!nchar(kaaskoneleja)>3, vanus>9, kaaskoneleja_vanus>9) -> teke2

# faktoriseerime muutujad
teke2$koneleja <- factor(teke2$koneleja)
teke2$sugu <- factor(teke2$sugu)
teke2$fail <- factor(teke2$fail)

```


Salvestame globaalse kÃµnetempo andmestiku
```{r, eval=F}
save(teke2, file = "teke_globaalne_konetempo.Rda")
```



### Foneetika korpuse andmed

```{r, echo=FALSE}
# koodiblokk, mis loeb fonkorp
load("fonkorp_voorud.Rda")
fonkorp$fail <- substr(fonkorp$file, 1,6)
fonkorp <- fonkorp[fonkorp$SP1_age<70|fonkorp$SP2_age<70,]
```
```{r, echo=F}
# vastavalt faili kogukestusele
fonkorp %>%
  group_by(fail, koneleja = SP1_ID) %>%
  filter(vooru_tyyp=="voor", SP1_age<70, SP2_age<70) %>%
  summarise(faili_kogukestus = (faili_kogukestus),
            vanus = SP1_age,
            sugu = SP1_sugu,
            silpide_arv = sum(silpide_arv),
            sonade_arv = sum(sonade_arv),
            poolikute_arv = sum(poolikute_arv),
            venituste_arv = sum(venituste_arv),
            korduste_arv =sum(korduste_arv),
            Ã¼neemide_arv = sum(yneemide_arv),
            disf_arv = sum(poolikute_arv + korduste_arv + venituste_arv),
            kestus = sum(vooru_kestus),
            art_kestus = sum(artikul_kestus),
            pÃµhitoon = mean(f0Mean, na.rm=T),
            kaaskoneleja = SP2_ID,
            kaaskoneleja_sugu = SP2_sugu,
            kaaskoneleja_vanus = SP2_age,
            vanusevahe = mean(agedif),
            ) %>%
  distinct() %>%
  group_by(fail)  -> fonkorp2

fonkorp2 <- data.frame(fonkorp2,
                  kaaskoneleja_kestus = numeric(nrow(fonkorp2)),
                  kaaskoneleja_silpide_arv = numeric(nrow(fonkorp2)),
                  kaaskoneleja_sonade_arv = numeric(nrow(fonkorp2)),
                  kaaskoneleja_disf_arv = numeric(nrow(fonkorp2)),
                  kaaskoneleja_pÃµhitoon = numeric(nrow(fonkorp2))) 

for(i in 1:nrow(fonkorp2)){
  fonkorp2$kaaskoneleja_kestus[i] <- fonkorp2$kestus[fonkorp2$fail==fonkorp2$fail[i] & fonkorp2$kaaskoneleja==fonkorp2$koneleja[i]]
    fonkorp2$kaaskoneleja_silpide_arv[i] <- fonkorp2$silpide_arv[fonkorp2$fail==fonkorp2$fail[i] & fonkorp2$kaaskoneleja==fonkorp2$koneleja[i]]
    fonkorp2$kaaskoneleja_sonade_arv[i] <- fonkorp2$sonade_arv[fonkorp2$fail==fonkorp2$fail[i] & fonkorp2$kaaskoneleja==fonkorp2$koneleja[i]]      
    fonkorp2$kaaskoneleja_disf_arv[i] <- fonkorp2$disf_arv[fonkorp2$fail==fonkorp2$fail[i] & fonkorp2$kaaskoneleja==fonkorp2$koneleja[i]]
      fonkorp2$kaaskoneleja_pÃµhitoon[i] <- fonkorp2$pÃµhitoon[fonkorp2$fail==fonkorp2$fail[i] & fonkorp2$kaaskoneleja==fonkorp2$koneleja[i]]
}
```
Salvestame globaalse kÃµnetempo andmed
```{r, eval=F}
save(fonkorp2, file = "fonkorp_globaalne_konetempo.Rda")
```


## Loeme andmestikud

Kui eelnevat mitte jookustada, siis vÃµib alustada siit ja lugeda sisse kolm globaalse kÃµnetempo andmestikku.

Teke
```{r}
load("teke_globaalne_konetempo.Rda")
```

Foneetika korpus
```{r}
load("fonkorp_globaalne_konetempo.Rda")
```

PÃµhjatuule korpuse andmed


```{r, echo=F}
# loeme pÃµhjatuule
load("pohja_konetempo_andmed.Rda")
```


## Materjali kirjeldus

###Teismeliste korpus

**TeKE** koosneb teismeliste omavahelistest vestlustest, mis on salvestatud diktofoniga (enamasti keelejuhtide kodudes). Korpus on kÃ¤sitsi transkribeeritud, mÃ¤rgitud on kÃµnevooru piirid, sÃµnad Ã¼ldiselt tavaortograafias mÃµningate tÃ¤psustavate lisamÃ¤rkidega. Siin ettekandes kasutame seda osa TeKE-st,

  - kus osaleb kaks kÃµnelejat;
  - `r length(unique(teke2$koneleja))` erinevat kÃµnelejat;
  - `r paste(table(teke2$sugu[!duplicated(teke2$koneleja)]), c("poissi ja", "tÃ¼drukut"), collapse=" ")` vanuses `r paste(range(teke2$vanus), collapse ="â")` aastat;
  - kokku `r length(unique(teke2$fail))` vestlust;
  - keskmine kestus `r round(mean(teke2$faili_kogukestus/60))` minutit (`r paste(round(range(teke2$faili_kogukestus/60)), collapse="â")` minutit);
  - kogukestus `r round(sum(teke2$faili_kogukestus[!duplicated(teke2$fail)])/3600,1)` tundi.  

### Materjal: Eesti keele spontaanse kÃµne foneetiline korpus

**EKSKFK** [@lippus_phonetic_2021] koosneb mono-, dia- ja trialoogidest, mis on kÃ¤sitsi mÃ¤rgendatud erinevatel lingvistilistel tasanditel: mÃ¤rgitud on sÃµnade, silpide ja hÃ¤Ã¤likute piirid, hÃ¤Ã¤lelaadi, venitusi, Ã¼neeme jpm. Salvestused on suures osas lÃ¤bi viidud foneetika labori vaikses salvestusruumis.  
Siin ettekandes kasutame seda osa foneetika korpusest,

  - kus osaleb kaks kÃµnelejat;
  - `r length(unique(fonkorp2$koneleja))` erinevat kÃµnelejat;
  - `r paste(table(fonkorp2$sugu[!duplicated(fonkorp2$koneleja)]), c("meest ja", "naist"), collapse=" ")` vanuses `r paste(range(fonkorp2$vanus), collapse ="â")` aastat;
  - kokku `r nrow(fonkorp2)` vestlust;
  - keskmine kestus `r round(mean(fonkorp2$faili_kogukestus/60))` minutit (`r paste(round(range(fonkorp2$faili_kogukestus/60)), collapse="â")` minutit);
  - kogukestus `r round(sum(fonkorp2$faili_kogukestus[!duplicated(fonkorp2$fail)])/3600,1)` tundi.  

### Materjal: PÃµhjatuule ja pÃ¤ikese korpus

Korpus koosneb **PÃµhjatuule ja pÃ¤ikese** loetud tekstist. Suuresti samad keelejuhid, kes osalevad EKSKFK, aga oleme seda teksti palunud lugeda ka muudes katsetes osalejatel. Korpus on osaliselt mÃ¤rgendatud (umbes 90 salvestust), mÃ¤rgitud on sÃµnade ja hÃ¤Ã¤likute piirid. Salvestused on suures osas lÃ¤bi viidud foneetika labori vaikses salvestusruumis.  

  - kokku `r nrow(pohja)` salvestust;
  - `r length(unique(pohja$ID))` erinevat kÃµnelejat;
  - `r paste(table(pohja$sugu[!duplicated(pohja$ID)]), c("meest ja", "naist"), collapse=" ")` vanuses `r paste(range(pohja$vanus, na.rm=T), collapse ="â")` aastat;
  - Keelejuhtidest `r length(which(unique(fonkorp2$koneleja) %in% pohja$ID))` on samad, kes osalevad ka EKSKFK spontaansetes vestlustes.


### Vestluspaaride sooline ja vanuseline jaotus TEKEs


```{r, echo=F, message=F, fig.align = "center"}
teke2 %>%
  summarise(vanus, sugu, `partneri sugu` = kaaskoneleja_sugu, `partneri vanus`= kaaskoneleja_vanus) %>%
  ggplot(aes(x = vanus, y=`partneri vanus`)) +
  geom_point(aes(col=`partneri sugu`), alpha = 0.3, size = 3) +
  facet_wrap("sugu") +
  #labs(title = "Vestluspartnerid TeKEs") +
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

### Vestluspaaride sooline ja vanuseline jaotus EKSKFKs

```{r, echo=F, message=F, fig.align = "center"}
fonkorp2 %>%
  summarise(vanus, sugu, `partneri sugu` = kaaskoneleja_sugu, `partneri vanus`= kaaskoneleja_vanus) %>%
  ggplot(aes(x = vanus, y=`partneri vanus`)) +
  geom_point(aes(col=`partneri sugu`), alpha = 0.3, size = 3) +
  facet_wrap("sugu") +
  #labs(title = "Vestluspartnerid EKSKFKs") +
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

### KÃµnelejate jaotus PÃµhjatuule ja pÃ¤ikese korpuses

```{r, echo=F, message=F, fig.align = "center"}
pohja %>%
  select(ID, sugu, vanus) %>% 
  distinct() %>% 
  ggplot(aes(x=vanus)) +
  geom_histogram(binwidth = 10)+
  facet_wrap("sugu") +
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))+
  labs(y="KÃµnelejate arv")
```

## KÃµnetempo analÃ¼Ã¼s

<!-- `KÃµnetempo = silpide arv/kÃµnevoorude kestus`. KÃµnevoor on see Ã¼ksus, mille jooksul sÃµna on Ã¼hel osalejal, sisaldab neid pause, mille jooksul keegi sÃµnajÃ¤rge Ã¼le ei vÃµta. TeKE silpide loendus lÃ¤htub estNLTK silbitusest, EKSKFK-s hÃ¤Ã¤likutasandi mÃ¤rgendusest. -->

### Vanuse ja soo efekt

#### Teismeliste korpuses

```{r, echo=F, message=F, fig.align = "center"}
teke2 %>%
  #filter(!(sugu == "M" & vanus == 13)) %>% 
  ggplot(aes(x = vanus, y = silpide_arv/(kestus), color = sugu, pch = sugu)) +
  geom_point(alpha = 0.3, size = 3) +
  #geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 3)) +
  geom_smooth(method = "lm") +
  #facet_wrap("sugu") +
  labs(y = "KÃµnetempo (silpi/sek)") +
  ylim(2,8)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

Keskmiselt Ã¼le 5 silbi sekundis, poistel aeglasem.

```{r}
teke2 %>% 
  group_by(sugu) %>% 
  summarise(tempo = mean(silpide_arv/kestus))
teke2 %>% summarise(tempo = (silpide_arv/kestus)) %>% summary()
```

Testime vanuse & soo efekti GAM mudeliga

```{r, message=F}
library(mgcv)
#mod <- bam((silpide_arv/kestus) ~ sugu + s(vanus, by = sugu, k=5) + s(koneleja, bs = "re"), data = teke2, subset = !(sugu == "M" & vanus == 13))
mod <- bam((silpide_arv/kestus) ~ vanus + sugu + s(koneleja, bs = "re"), data = teke2)
#mod <- bam((silpide_arv/kestus) ~ vanus  + s(koneleja, bs = "re"), data = teke2, subset = sugu == "M" & vanus != 13)
summary(mod)

#concurvity(mod)
#qqnorm(resid(mod))
#qqline(resid(mod))


#par(mfrow = c(2,2))
#plot(mod, all.terms = T)

```

#### KÃµnetempo tÃ¤iskasvanutel

```{r, echo=F, message=F, fig.align = "center"}
fonkorp2 %>%
  ggplot(aes(x = vanus, y = silpide_arv/(kestus), color = sugu)) +
  geom_point(alpha = 0.3, size = 3) +
  geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 8)) +
  #facet_wrap("sugu") +
  labs(y = "KÃµnetempo (silpi/sek)") +
  ylim(2,8)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

Meestel on keskmiselt madalam kÃµnetempo. Naistel pÃ¼sib kÃµnetempo stabiilselt.

```{r}
mod <- bam((silpide_arv/kestus) ~ sugu + s(vanus, by = sugu) + s(koneleja, bs = "re"), data = fonkorp2)
summary(mod)
#plot(mod, select = 1)

```


#### KÃµnetempo tÃ¤iskasvanutel loetud kÃµnes

```{r, echo=F, message=F, fig.align = "center"}
pohja %>%
  ggplot(aes(x = vanus, y = sprate, color = sugu)) +
  geom_point(alpha = 0.3, size = 3) +
  geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 8)) +
  #facet_wrap("sugu") +
  labs(y = "KÃµnetempo (silpi/sek)") +
  ylim(2,8)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

TÃ¤iskasvanutel loetud kÃµnes kÃµnetempo spontaansest veidi aeglasem, vanusega aeglustub, meestel ja naistel olulist vahet pole. 

```{r}
pohja$sugu <- factor(pohja$sugu)
pohja$ID <- factor(pohja$ID)


#mod <- bam(sprate ~ sugu + s(vanus, by = sugu, k=5) + s(ID, bs = "re"), data = pohja)
mod <- bam(sprate ~ vanus  + s(ID, bs = "re"), data = pohja)
summary(mod)
# plot(mod, select = 1)
# library(itsadug)
# plot_smooth(mod, view = "vanus")

```

### Vanuse ja soo efekti joonis artiklisse (Joonis 2)

Kolme paneeliga vanuse efekti joonis

```{r}
teke2 %>%
  mutate(kÃµnetempo = (silpide_arv/kestus), subkorp = "Teismelised") %>% 
  select(subkorp, kÃµneleja = koneleja, vanus, sugu, kÃµnetempo) -> tmp1
fonkorp2 %>% 
  mutate(kÃµnetempo = (silpide_arv/kestus), subkorp = "TÃ¤isk. vestlus") %>% 
  select(subkorp, kÃµneleja = koneleja, vanus, sugu, kÃµnetempo) -> tmp2
pohja %>% 
  mutate(subkorp = "TÃ¤isk. loetud") %>% 
  select(subkorp, kÃµneleja = ID, vanus, sugu, kÃµnetempo = sprate) -> tmp3
koond1 <- rbind(tmp1,tmp2,tmp3)
koond1$subkorp <- factor(koond1$subkorp, levels=c( "Teismelised", "TÃ¤isk. vestlus", "TÃ¤isk. loetud"))

joonis2 <- koond1 %>% 
  ggplot(aes(x = vanus, y = kÃµnetempo, color = sugu, pch = sugu)) +
  geom_point(alpha = 0.6, size = 2) +
  #geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 3)) +
  geom_smooth(method = "lm") +
  facet_grid(cols=vars(subkorp), scales = "free_x") + #space="free"
  labs(y = "KÃµnetempo (silpi/sek)") +
  ylim(2,8)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))+
 # scale_shape_manual(values = c(25,2))+
  NULL
joonis2

koond1 %>% 
  group_by(subkorp) %>% 
  summarise(mean(kÃµnetempo))
```

```{r, eval=FALSE}
pdf(file = "konetempo_RLY2024_joonis2.pdf", width = 4.7, height = 2.6)
joonis2
dev.off()
```


### KÃµnetempo ja kaaskÃµneleja kÃµnetempo teismelistel


```{r, echo=F, message=F, fig.align = "center"}
teke2 %>%
  summarise(sugu, vanus,
            `partneri sugu` = kaaskoneleja_sugu,
            `partneri vanus` = kaaskoneleja_vanus,
            `kÃµneleja konetempo` = silpide_arv/kestus,
            `partneri kÃµnetempo` = kaaskoneleja_silpide_arv/kaaskoneleja_kestus) %>% 
ggplot(aes(x = `kÃµneleja konetempo`, y = `partneri kÃµnetempo`, color = `partneri sugu`)) +
  geom_point(alpha = 0.3, size = 3) +
  #geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 3)) +
  geom_smooth(method = "lm", formula = y ~ x) +
  #  facet_wrap("sugu") +
  #labs(title = "KÃµnetempo vastavalt kaaskÃµneleja kÃµnetempole ja kÃµneleja soole TeKEs") +
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

Tugev seos vestluspartnerite kÃµnetempo vahel.

```{r}
teke2 %>%
  mutate(subkorp = "Teismelised",
         konetempo = silpide_arv/kestus,
         soravus = disf_arv/kestus,
         soravus2 = disf_arv/sonade_arv*100,
         vanusevahe = kaaskoneleja_vanus - vanus,
         partneri_konetempo = kaaskoneleja_silpide_arv/kaaskoneleja_kestus,
         partneri_soravus = kaaskoneleja_disf_arv/kaaskoneleja_kestus,
         partneri_soravus2 = kaaskoneleja_disf_arv/kaaskoneleja_sonade_arv*100) %>% 
  select(subkorp, koneleja, sugu, vanus,
            partneri_sugu = kaaskoneleja_sugu,
            partneri_vanus = kaaskoneleja_vanus,
           konetempo,
           soravus,
           soravus2,
           partneri_konetempo,
           partneri_soravus,
           partneri_soravus2,
           vanusevahe) -> teke3
teke3$sugu <- factor(teke3$sugu)
teke3$partneri_sugu <- factor(teke3$partneri_sugu)

mod01<- bam( konetempo ~   vanus + s(koneleja, bs = "re"), data = teke3)
mod02<- bam( konetempo ~  partneri_konetempo  + s(koneleja, bs = "re"), data = teke3)
mod <- bam( konetempo ~  partneri_konetempo +vanus + s(koneleja, bs = "re"), data = teke3)
mod1 <- bam( konetempo ~  sugu +vanus + s(koneleja, bs = "re"), data = teke3)
mod2 <- bam( konetempo ~ partneri_konetempo +vanusevahe+ s(koneleja, bs = "re"), data = teke3)
mod3 <- bam( konetempo ~ sugu +vanusevahe+ s(koneleja, bs = "re"), data = teke3)
AIC(mod,mod01, mod1, mod3)

summary(mod)
#plot(mod)
```


### KÃµnetempo ja kaaskÃµneleja kÃµnetempo tÃ¤iskasvanutel

```{r, echo=F, message=F, fig.align = "center"}
fonkorp2 %>%
  reframe(sugu, vanus,
            `partneri sugu` = kaaskoneleja_sugu,
            `partneri vanus` = kaaskoneleja_vanus,
            `kÃµneleja kÃµnetempo` = silpide_arv/kestus,
            `partneri kÃµnetempo` = kaaskoneleja_silpide_arv/kaaskoneleja_kestus) %>%
    #filter(`kÃµneleja kÃµnetempo`<6.5, `partneri kÃµnetempo`<6.5)%>%
  ggplot(aes(x = `kÃµneleja kÃµnetempo`, y = `partneri kÃµnetempo`, color = `partneri sugu`)) +
  geom_point(alpha = 0.3, size = 3) +
#  geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 8)) +
  geom_smooth(method = "lm", formula = y ~x) +
#    facet_wrap("sugu") +
  #labs(title = "KÃµnetempo vastavalt kaaskÃµneleja kÃµnetempole ja soole EKSKFKs") +
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

Ãldiselt on kÃµnetempo seotud vestluspartneri kÃµnetempoga, huvitav on, et vastassoost paaridel on seos tugevam.

```{r}
fonkorp2 %>%
  mutate(subkorp = "TÃ¤iskasvanud", 
         partneri_konetempo = kaaskoneleja_silpide_arv/kaaskoneleja_kestus, 
         partneri_soravus = kaaskoneleja_disf_arv/kaaskoneleja_kestus,
         partneri_soravus2 = kaaskoneleja_disf_arv/kaaskoneleja_sonade_arv*100,
         vanusevahe = kaaskoneleja_vanus - vanus,
          konetempo = silpide_arv/kestus,
          soravus = disf_arv/kestus,
          soravus2 = disf_arv/sonade_arv*100) %>% 
  select(subkorp, koneleja, sugu, vanus,
            partneri_sugu = kaaskoneleja_sugu,
            partneri_vanus = kaaskoneleja_vanus,
            konetempo,
            soravus,
            soravus2,
            partneri_konetempo,
            partneri_soravus,
            partneri_soravus2,
            vanusevahe) -> fonkorp3



mod <- bam( konetempo ~  partneri_konetempo+ vanus+sugu+ s(koneleja, bs = "re"), data = fonkorp3)
mod1 <- bam( konetempo ~  partneri_konetempo*  vanus*sugu+ s(koneleja, bs = "re"), data = fonkorp3)
mod2 <- bam( konetempo ~  partneri_konetempo+ vanus*sugu+ s(koneleja, bs = "re"), data = fonkorp3)
mod3 <- bam( konetempo ~  partneri_konetempo* vanus+sugu+ s(koneleja, bs = "re"), data = fonkorp3)
AIC(mod,mod1,mod2,mod3)
summary(mod2)

```

### Joonis artiklisse KÃµnetempo seos vestlusparneri tempoga (Joonis 2)
```{r}
koond2 <- rbind (teke3, fonkorp3)
koond2$subkorp <- factor(koond2$subkorp, levels=c("Teismelised", "TÃ¤iskasvanud"))

joonis3 <- koond2 %>% 
  ggplot(aes(x = partneri_konetempo, y = konetempo, color = sugu, pch = sugu)) +
  geom_point(alpha = 0.6, size = 2) +
  #geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 3)) +
  geom_smooth(method = "lm") +
  facet_grid(cols=vars(subkorp)) + #space="free", scales = "free_x"
  labs(y = "KÃµnetempo (silpi/sek)", x="Vestluspartneri kÃµnetempo (silpi/sek)") +
  #ylim(2,8)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))+
 # scale_shape_manual(values = c(25,2))+
  NULL
joonis3

```
```{r, eval=FALSE}
pdf(file = "konetempo_RLY2024_joonis3.pdf", width = 4.7, height = 2.6)
joonis3
dev.off()
```

## Soravus

Soravuse hindamiseks lugesime kokku takerdumisetele viitavad mÃ¤rgendid, mida mÃµlemas korpuses on mÃ¤rgendatud:  
  - pooleli jÃ¤Ã¤nud sÃµnad,  
  - sÃµnakordused,  
  - venitused.
  
Arvutame soravuse mÃµÃµdiku 2 erineval viisil: 
  - soravus = takerduste arv / kÃµneleja kÃµnevoorude kestus
  - soravus2 = takerduste arv / sÃµnade arv \* 100

### Soravus teismelistel

```{r, echo=F, message=F, fig.align = "center"}
teke2 %>%
  ggplot(aes(x = vanus, y = disf_arv/kestus, color = sugu)) +
    #geom_boxplot(aes(x=(vanus), y = disf_arv/kestus), inherit.aes = F, alpha = 0.3) +
  geom_point(alpha = 0.3, size = 3) +
  geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 8)) +
  facet_wrap("sugu") +
  labs(y = "Takerdumisi sekundis") +
  ylim(0, 0.5)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

Poistel on takerdumisi rohkem, aga vanusega langeb tÃ¼drukutega samale tasemele.

Testime ka alternatiivselt arvutatud soravust

```{r, echo=F, message=F, fig.align = "center"}
teke3 %>%
  ggplot(aes(x = vanus, y = soravus2, color = sugu)) +
    #geom_boxplot(aes(x=(vanus), y = disf_arv/kestus), inherit.aes = F, alpha = 0.3) +
  geom_point(alpha = 0.3, size = 3) +
  geom_smooth(method="lm")+
  #geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 8)) +
  facet_wrap("sugu") +
  #labs(y = "Takerdumisi sekundis") +
  #ylim(0, 0.5)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```


```{r}
mod1 <- bam(soravus ~  vanus +  s(koneleja, bs = "re"), data = teke3)
mod2 <- bam(soravus ~  vanus+sugu +  s(koneleja, bs = "re"), data = teke3)
mod3 <- bam(soravus ~  vanus*sugu +  s(koneleja, bs = "re"), data = teke3)
summary(mod3)


AIC(mod1,mod2,mod3)

```

Soravus2
```{r}
mod <- bam(soravus2 ~  vanus +  s(koneleja, bs = "re"), data = teke3)
mod1 <- bam(soravus2 ~  vanus+sugu +  s(koneleja, bs = "re"), data = teke3)
mod2 <- bam(soravus2 ~  vanus*sugu +  s(koneleja, bs = "re"), data = teke3)


AIC(mod, mod1, mod2)
summary(mod1)
```

Tulemused nÃ¤itavad, et kaks soravuse arvutamise viisi annavad vÃ¤ga sarnased tulemused, aga soravus ajaÃ¼hiku kohta seostub mudelis paremini kirjeldavate tunnustega. 

### Soravus tÃ¤iskasvanutel (Joonis 5)

```{r, echo=F, message=F, fig.align = "center"}
joonis5 <- fonkorp3 %>%
  ggplot(aes(x = partneri_soravus, y = soravus, color = sugu, pch = sugu)) +
  geom_point(alpha = 0.6, size = 2) +
  geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs")) +
  labs(y = "KÃµneleja soravus (takerdumisi/sek)", x="Partneri soravus (takerdumisi/sek)") +
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
joonis5
```
```{r, eval=FALSE}
pdf(file = "konetempo_RLY2024_joonis5.pdf", width = 3.7, height = 2.6)
joonis5
dev.off()
```


```{r, echo=F, message=F, fig.align = "center"}
fonkorp3 %>%
  #filter(soravus < 0.4 & partneri_soravus < 0.4) %>% 
  ggplot(aes(x = partneri_soravus2, y = soravus2, color = sugu, pch = sugu)) +
  #geom_boxplot(aes(x=(vanus), y = disf_arv/kestus), inherit.aes = F, alpha = 0.3) +
  geom_point(alpha = 0.6, size = 2) +
  geom_smooth(method = "lm") +
  #geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs")) +
  #facet_wrap("sugu") +
  labs(y = "KÃµneleja soravus (takerdumisi/sek)", x="Partneri soravus (takerdumisi/sek)") +
  #ylim(0, 0.4)+ xlim(0, 0.5)+
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))
```

TÃ¤iskasvanutel vanusega muutusi pole, meestel takerdumisi rohkem.

```{r}
mod0 <- bam( soravus ~  s(koneleja, bs = "re"), data = fonkorp3)
mod1a <- bam( soravus ~  sugu+  s(koneleja, bs = "re"), data = fonkorp3)
mod1b <- bam( soravus ~  partneri_soravus+  s(koneleja, bs = "re"), data = fonkorp3)
mod2 <- bam( soravus ~  sugu+partneri_soravus+  s(koneleja, bs = "re"), data = fonkorp3)
mod3 <- bam( soravus ~  sugu*partneri_soravus+  s(koneleja, bs = "re"), data = fonkorp3)
mod4 <- bam( soravus ~  s(partneri_soravus)+  s(koneleja, bs = "re"), data = fonkorp3)
mod5 <- bam( soravus ~  s(partneri_soravus, by=sugu)+  s(koneleja, bs = "re"), data = fonkorp3)

AIC(mod0, mod1a, mod1b, mod2, mod3, mod4, mod5)

summary(mod5)
#qqnorm(resid(mod5))
#qqline(resid(mod5))


# plot(mod5, select=1)
# library(itsadug)
# plot_diff(mod5, view = "partneri_soravus", comp = list(sugu= c("M", "N")))
# plot_smooth(mod5, view = "partneri_soravus", cond = list(sugu="M"), col="blue")
# plot_smooth(mod5, view = "partneri_soravus", cond = list(sugu="N"), add=T, col=2)

```

```{r}
mod0 <- bam( soravus2 ~  s(koneleja, bs = "re"), data = fonkorp3)
mod1a <- bam( soravus2 ~  sugu+  s(koneleja, bs = "re"), data = fonkorp3)
mod1b <- bam( soravus2 ~  partneri_soravus2+  s(koneleja, bs = "re"), data = fonkorp3)
mod2 <- bam( soravus2 ~  sugu+partneri_soravus2+  s(koneleja, bs = "re"), data = fonkorp3)
mod3 <- bam( soravus2 ~  sugu*partneri_soravus2+  s(koneleja, bs = "re"), data = fonkorp3)
mod4 <- bam( soravus2 ~  s(partneri_soravus2)+  s(koneleja, bs = "re"), data = fonkorp3)
mod5 <- bam( soravus2 ~  s(partneri_soravus2, by=sugu)+  s(koneleja, bs = "re"), data = fonkorp3)

AIC(mod0, mod1a, mod1b, mod2, mod3, mod4, mod5)

summary(mod2)
```

Ka tÃ¤iskasvanutel kÃ¤ituvad soravuse mÃµÃµdikud vÃ¤ga sarnaselt, aga seosed seletavate tunnustega on ajaÃ¼hiku kohta arvestades tugevamad.

### Soravuse joonis artiklisse (Joonis 4)

```{r}
joonis4 <- koond2 %>% 
  ggplot(aes(x = vanus, y = soravus, color = sugu, pch = sugu)) +
  geom_point(alpha = 0.6, size = 2) +
  geom_smooth(method = "lm") +
  facet_grid(cols=vars(subkorp), scales = "free_x") + #space="free"
  labs(y = "KÃµneleja soravus (takerdumisi/sek)", x="Vanus (aastad)") +
  teema +
  scale_color_manual(values = c("#CB8F0D", "#198D81"))+
  NULL
joonis4


koond2 %>% 
  group_by(subkorp) %>% 
  summarise(mean(soravus2))
```


```{r, eval=FALSE}
pdf(file = "konetempo_RLY2024_joonis4.pdf", width = 4.7, height = 2.6)
joonis4
dev.off()
```

### Soravuse seos kÃµnetempoga teismelistel EI OLE OLULINE

```{r, echo=F, message=F, fig.align = "center"}
teke2 %>%
  ggplot(aes(x = silpide_arv/kestus, y = disf_arv/kestus)) +
    #geom_boxplot(aes(x=(vanus), y = disf_arv/kestus), inherit.aes = F, alpha = 0.3) +
  geom_point(alpha = 0.3, size = 3, color = "#7F5C82") +
  geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 8), color = "#7F5C82") +
  #facet_wrap("sugu") +
  labs(y = "Takerdumisi sekundis") +
  ylim(0,0.6)+
  teema
```

### Soravuse seos kÃµnetempoga tÃ¤iskasvanutel EI OLE OLULINE


```{r, echo=F, message=F, fig.align = "center"}
fonkorp2 %>%
  ggplot(aes(x = silpide_arv/kestus, y = disf_arv/kestus)) +
    #geom_boxplot(aes(x=(vanus), y = disf_arv/kestus), inherit.aes = F, alpha = 0.3) +
  geom_point(alpha = 0.3, size = 3, color = "#7F5C82") +
  geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs", k = 8), color = "#7F5C82") +
  #facet_wrap("sugu") +
  labs(y = "Takerdumisi sekundis") +
  ylim(0,0.6)+
  teema
```


## NÃ¤ited foneetikakorpuse mÃ¤rgendusest (Joonis 1)

```{r}
# heli ja spektrogrammi nÃ¤ite plottimiseks
library(rPraat)
library(phonTools)

naited <- data.frame(file=c("SKK004-003_M", "SKK004-003_M", "SKK007-003_M", "SKK007-003_M", "SKK007-003_M"),
                     alg = c(114.24961977135679, 1534.32751409178, 1075.2475339625817, 1528.4117838178388, 2258.1593359601507),
                     lop = c(115.89897865844941, 1537.1660475406088, 1079.2431638835158, 1530.756380617994, 2263.914321834238))
naited <- naited[4,] # vÃµtame ainult 4. nÃ¤ite

for(f in unique(naited$file)) {
  snd <- snd.read(paste0("/Users/partel/ownCloud/EKSKFK/SKK0_WAV/", f, ".wav"))
  tg <- tg.read(paste0("/Users/partel/ownCloud/EKSKFK/SKK0_TG/", f, ".TextGrid"))
  for(nd in which(naited$file==f)){
    #lÃµika jupp
    start = naited$alg[nd]
    stop = naited$lop[nd]
    snd2 <- snd.cut0(snd, Start = start, End = stop)
    tg2 <- tg.cut0(tg, start, stop)
    tg2 <- tg2[c("sÃµnad", "hÃ¤Ã¤likud", "silbid")]
    # skaleerime heli 0-1 vahemikku
    snd3 <- (snd2$sig+max(abs(snd2$sig))) / (2*max(abs(snd2$sig)))
    # spektrogramm; # spec objektis on maatriks read = aeg, tulbad = sagedus, vÃ¤Ã¤rtus=intensiivsus
    spec <- spectrogram(as.vector(snd2$sig), fs = snd2$fs, colors = F,show = F)$spectrogram
    spec2 <- spec[,which(as.numeric(colnames(spec))<=5000)]
    # pÃµhitoon
#    f0 <- pitchtrack(as.vector(snd2$sig), f0range = c(60,600), fs = snd2$fs, show = F)
#    f0 <- pitchtrack(as.vector(snd2$sig), f0range = quantile(f0$f0, probs = c(0.25,0.75)) * c(0.75,2), fs = snd2$fs, show = F,minacf = 0.85)
    
    # joonistab ploti, kus esimesel real on skaleeritud helilaine, siis on spektrogramm ning selle all textgridi kihid
    #pdf(file = paste0("naited_",f, nd, ".pdf"), width = 10, height = 5)
    #png(filename = paste0("naited_",f, nd, ".png"), width = 1400, height = 800)
    par(mar=c(0.1,4.5,0.1,0.1))
    plot(1, type="n", xaxs="i", ylim=c(-length(names(tg2)),4), xlim=c(0, max(snd2$t)), axes=F, ylab="", xlab="")
    lines((snd3+3)~snd2$t)
    # plotib spektrogrammi
    for (i in 1:ncol(spec2)){
      tmp <- spec2[,i]; tmp[tmp<(-60)] <- -60
      vÃ¤rv = gray(level = (tmp/-60), alpha = 0.6)
      points(x= as.numeric(rownames(spec2))/1000, y = rep(i/100+0.03, nrow(spec2)), col=vÃ¤rv, pch=20, cex=0.1)
    }
    # joonistab f0 spektrogrammi peale sinisega
#    points(y=(f0$f0/100), x=(f0$time/1000), pch=20, cex=0.2, col="blue")
    # plotib textgridi
    for(k in names(tg2)){
      kiht <- tg2[[k]]
      jrk <- which(names(tg2) == k)
      mtext(side = 2, at = -jrk+0.5, text = k, las=1, line=0.5)
      for(i in 1:length(kiht$t1)){
        #segm_col = if(kiht$label[i]=="" | substr(kiht$label[i],1,1) %in% c(".","#")) {"white"} else  {"light blue"}
        xt = c(kiht$t1[i], kiht$t2[i], kiht$t2[i], kiht$t1[i], kiht$t1[i])
        polygon(x=xt, y= -c(jrk-1,jrk-1,jrk,jrk,jrk-1), border =1)
        text(x= (kiht$t1[i]+(kiht$t2[i]-kiht$t1[i])/2), y=-jrk+0.5, labels = gsub("//_","\n//_",kiht$label[i]), cex=1)
      }}
    #dev.off()
    
  }
}




```



## Viited

