library(tidyverse)
── Attaching core tidyverse packages ──────────────────────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.4 ✔ tidyr 1.3.1
✔ purrr 1.0.2 ── Conflicts ────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(car)
Loading required package: carData
Attaching package: ‘car’
The following object is masked from ‘package:dplyr’:
recode
The following object is masked from ‘package:purrr’:
some
library(tictoc)
library(lmerTest)
Loading required package: lme4
Loading required package: Matrix
Attaching package: ‘Matrix’
The following objects are masked from ‘package:tidyr’:
expand, pack, unpack
Attaching package: ‘lmerTest’
The following object is masked from ‘package:lme4’:
lmer
The following object is masked from ‘package:stats’:
step
library(phonR)
Arabic <- read.csv("SpeakingRate24.csv")
Vratio <- read.csv("Vratio.csv")
Arabic <- subset(Arabic, select = -Arabic_phrase) ### Supprimer la colonne des phrases en arabe pour éviter les problèmes avec PdfLaTex lors de la compilation LaTex R. Sinon, utiliser XeLaTex pour l'écriture arabe.
Arabic$CVC <- gsub(' ', '', Arabic$CVC)#supprimer les espaces
Arabic$V <- gsub(' ', '', Arabic$V)#supprimer les espaces
Arabic$Length <- gsub(' ', '', Arabic$Length)#supprimer les espaces
Arabic$f0ons <- as.integer(gsub('--undefined--', NA, Arabic$f0ons))
Arabic$f0mid <- as.integer(gsub('--undefined--', NA, Arabic$f0mid))
Arabic$f0off <- as.integer(gsub('--undefined--', NA, Arabic$f0off))
Arabic <- dplyr::mutate_if(Arabic, is.character, as.factor) ## Transformer tous les variables de type "character" Ã des facteurs.
#Arabic <- filter(Arabic, V!="e:" & V!="o:")
Arabic$V = factor(Arabic$V, levels = c('i','a','u','i:','a:','u:','e:','o:')) ## ordonner l'ordre de l'apparition V
Arabic$C <- factor(Arabic$C, levels=c("b","d","g","t","k")) ## ordonner l'ordre de l'apparition C
Arabic$VOTi <- as.integer(Arabic$VOTi)
#Arabic$Word_V_ratio <- as.numeric(gsub(',', '.', Arabic$Word_V_ratio)) #remplacer les virgules en points dans les nombres décimaux pour pouvoir faire des calculs.
levels(Arabic$Rate) <- list("rapide" = "fast", # Change factor levels
"moyen" = "normal",
"lent" = "slow")
levels(Arabic$Length) <- list("longue" = "long", # Change factor levels
"courte" = "short")
Arabic <- dplyr::rename(Arabic, Debit = Rate, Longueur = Length)
Arabic$F1midnor <- with(Arabic, normLobanov(F1mid)) #normalisation de F1mid et F2mid
Arabic$F2midnor <- with(Arabic, normLobanov(F2mid)) #normalisation de F1mid et F2mid
Vratio <- dplyr::rename(Vratio, Debit = Rate)
### sous-ensemble 1
ArabicSub1 <- Arabic
ArabicSub1 <- ArabicSub1 %>%
filter(Timbre %in% c("i", "a", "u")) %>% droplevels()
### sous-ensemble 2
ArabicSub2 <- Arabic
ArabicSub2 <- ArabicSub2 %>%
filter(V %in% c("i", "a", "u", "e:", "u:", "a:")) %>% droplevels()
ArabicSub2$Timbre=gsub('i','e', ArabicSub2$Timbre)
ArabicSub2$Timbre=gsub('u','o', ArabicSub2$Timbre)
ArabicSub2$Timbre= as.factor(ArabicSub2$Timbre)
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(Duration ~ Debit + V + Sex + (1 | Speaker) + (1 | Word), Arabic, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
2.55 sec elapsed
tic()
lm.mod.2 <- lmer(Duration ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.56 sec elapsed
tic()
lm.mod.3 <- lmer(Duration ~ Debit + V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 3 negative eigenvalues: -7.6e-05 -3.0e-04 -4.4e+00
toc() #
259.36 sec elapsed
tic()
lm.mod.4 <- lmer(Duration ~ Debit + V + Sex + (Debit | Speaker) + (V| Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
toc() #
236.84 sec elapsed
tic()
lm.mod.5 <- lmer(Duration ~ Debit * V + Sex + (1 | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.88 sec elapsed
tic()
lm.mod.6 <- lmer(Duration ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
4.87 sec elapsed
tic()
lm.mod.7 <- lmer(Duration ~ Debit * V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 3 negative eigenvalues: -1.8e-04 -4.7e-04 -1.2e+01
toc() #
637.36 sec elapsed
tic()
lm.mod.8 <- lmer(Duration ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -5.0e+02
toc() #
368.7 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8)
Data: Arabic
Models:
lm.mod.1: Duration ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: Duration ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: Duration ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: Duration ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.3: Duration ~ Debit + V + Sex + (V | Speaker) + (1 | Word)
lm.mod.4: Duration ~ Debit + V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
lm.mod.7: Duration ~ Debit * V + Sex + (V | Speaker) + (1 | Word)
lm.mod.8: Duration ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 83110 83210 -41541 83082
lm.mod.2 19 82084 82220 -41023 82046 1035.97 5 <2e-16 ***
lm.mod.5 28 81737 81938 -40841 81681 364.38 9 <2e-16 ***
lm.mod.6 33 80526 80762 -40230 80460 1221.52 5 <2e-16 ***
lm.mod.3 49 81868 82220 -40885 81770 0.00 16 1
lm.mod.4 55 80653 81048 -40272 80543 1226.92 6 <2e-16 ***
lm.mod.7 63 80253 80704 -40063 80127 416.83 8 <2e-16 ***
lm.mod.8 69 78773 79267 -39317 78635 1491.97 6 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Model comparison results suggest that model 8 is the best model. However, the results from the modelling indicated that Models 3, 4, 7 and 8 had singularity and/or convergence issues.
We rerun our model comparison retaining only the models that converged and which did not have any issues.
anova(lm.mod.1, lm.mod.2, lm.mod.5, lm.mod.6)
Data: Arabic
Models:
lm.mod.1: Duration ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: Duration ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: Duration ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: Duration ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 83110 83210 -41541 83082
lm.mod.2 19 82084 82220 -41023 82046 1035.97 5 < 2.2e-16 ***
lm.mod.5 28 81737 81938 -40841 81681 364.38 9 < 2.2e-16 ***
lm.mod.6 33 80526 80762 -40230 80460 1221.52 5 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
The results suggest that model 6 is the optimal model and we use its specifications as our optimal model. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.6, REML = TRUE)
toc()
2.48 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.Dur.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.Dur.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(Vratio ~ Debit + Timbre + Sex + (1 | Speaker), Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.17 sec elapsed
tic()
lm.mod.2 <- lmer(Vratio ~ Debit + Timbre + Sex + (Debit | Speaker) , Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.33 sec elapsed
tic()
lm.mod.3 <- lmer(Vratio ~ Debit + Timbre + Sex + (Timbre | Speaker) , Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.47 sec elapsed
tic()
lm.mod.4 <- lmer(Vratio ~ Debit + Timbre + Sex + (Debit | Speaker) + (Timbre | Speaker), Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model is nearly unidentifiable: large eigenvalue ratio
- Rescale variables?
toc() #
1.27 sec elapsed
tic()
lm.mod.5 <- lmer(Vratio ~ Debit * Timbre + Sex + (1 | Speaker), Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.17 sec elapsed
tic()
lm.mod.6 <- lmer(Vratio ~ Debit * Timbre + Sex + (Debit | Speaker), Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.41 sec elapsed
tic()
lm.mod.7 <- lmer(Vratio ~ Debit * Timbre + Sex + (Timbre | Speaker), Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.53 sec elapsed
tic()
lm.mod.8 <- lmer(Vratio ~ Debit * Timbre + Sex + (Debit | Speaker) + (Timbre | Speaker), Vratio,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -1.5e-04
toc() #
1.41 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8)
Data: Vratio
Models:
lm.mod.1: Vratio ~ Debit + Timbre + Sex + (1 | Speaker)
lm.mod.5: Vratio ~ Debit * Timbre + Sex + (1 | Speaker)
lm.mod.2: Vratio ~ Debit + Timbre + Sex + (Debit | Speaker)
lm.mod.3: Vratio ~ Debit + Timbre + Sex + (Timbre | Speaker)
lm.mod.6: Vratio ~ Debit * Timbre + Sex + (Debit | Speaker)
lm.mod.7: Vratio ~ Debit * Timbre + Sex + (Timbre | Speaker)
lm.mod.4: Vratio ~ Debit + Timbre + Sex + (Debit | Speaker) + (Timbre | Speaker)
lm.mod.8: Vratio ~ Debit * Timbre + Sex + (Debit | Speaker) + (Timbre | Speaker)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 8 2912.2 2961.7 -1448.1 2896.2
lm.mod.5 12 2913.4 2987.7 -1444.7 2889.4 6.8039 4 0.1466
lm.mod.2 13 2823.5 2903.9 -1398.7 2797.5 91.9534 1 <2e-16 ***
lm.mod.3 13 2770.3 2850.7 -1372.1 2744.3 53.1965 0
lm.mod.6 17 2824.4 2929.6 -1395.2 2790.4 0.0000 4 1.0000
lm.mod.7 17 2771.1 2876.3 -1368.6 2737.1 53.2841 0
lm.mod.4 19 2676.8 2794.3 -1319.4 2638.8 98.3736 2 <2e-16 ***
lm.mod.8 23 2677.3 2819.7 -1315.7 2631.3 7.4293 4 0.1149
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Results showed that model 4 is the best model, with a warning. Model 8 has convergence issues. We rerun our model comparison retaining only the models that converged and which did not have any issues.
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.5, lm.mod.6, lm.mod.7)
Data: Vratio
Models:
lm.mod.1: Vratio ~ Debit + Timbre + Sex + (1 | Speaker)
lm.mod.5: Vratio ~ Debit * Timbre + Sex + (1 | Speaker)
lm.mod.2: Vratio ~ Debit + Timbre + Sex + (Debit | Speaker)
lm.mod.3: Vratio ~ Debit + Timbre + Sex + (Timbre | Speaker)
lm.mod.6: Vratio ~ Debit * Timbre + Sex + (Debit | Speaker)
lm.mod.7: Vratio ~ Debit * Timbre + Sex + (Timbre | Speaker)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 8 2912.2 2961.7 -1448.1 2896.2
lm.mod.5 12 2913.4 2987.7 -1444.7 2889.4 6.8039 4 0.1466
lm.mod.2 13 2823.5 2903.9 -1398.7 2797.5 91.9534 1 <2e-16 ***
lm.mod.3 13 2770.3 2850.7 -1372.1 2744.3 53.1965 0
lm.mod.6 17 2824.4 2929.6 -1395.2 2790.4 0.0000 4 1.0000
lm.mod.7 17 2771.1 2876.3 -1368.6 2737.1 53.2841 0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Hence, we use model 2’s specifications as our optimal model. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.2, REML = TRUE)
toc() #
0.31 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.Vratio.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.Vratio.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(Word_V_ratio ~ Debit + V + Sex + (1 | Speaker) + (1 | Word), Arabic, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.41 sec elapsed
tic()
lm.mod.2 <- lmer(Word_V_ratio ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.7 sec elapsed
tic()
lm.mod.3 <- lmer(Word_V_ratio ~ Debit + V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -5.9e-01
toc() #
167.06 sec elapsed
tic()
lm.mod.4 <- lmer(Word_V_ratio ~ Debit + V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
toc() #
263.18 sec elapsed
tic()
lm.mod.5 <- lmer(Word_V_ratio ~ Debit * V + Sex + (1 | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.83 sec elapsed
tic()
lm.mod.6 <- lmer(Word_V_ratio ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
4.23 sec elapsed
tic()
lm.mod.7 <- lmer(Word_V_ratio ~ Debit * V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -6.3e-02
toc() #
254 sec elapsed
tic()
lm.mod.8 <- lmer(Word_V_ratio ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -1.7e+00
toc() #
367.64 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8)
Data: Arabic
Models:
lm.mod.1: Word_V_ratio ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: Word_V_ratio ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: Word_V_ratio ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: Word_V_ratio ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.3: Word_V_ratio ~ Debit + V + Sex + (V | Speaker) + (1 | Word)
lm.mod.4: Word_V_ratio ~ Debit + V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
lm.mod.7: Word_V_ratio ~ Debit * V + Sex + (V | Speaker) + (1 | Word)
lm.mod.8: Word_V_ratio ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 8704.9 8805.3 -4338.5 8676.9
lm.mod.2 19 8330.9 8467.1 -4146.4 8292.9 384.06 5 <2e-16 ***
lm.mod.5 28 8538.7 8739.5 -4241.4 8482.7 0.00 9 1
lm.mod.6 33 8155.5 8392.0 -4044.7 8089.5 393.29 5 <2e-16 ***
lm.mod.3 49 7870.8 8222.1 -3886.4 7772.8 316.69 16 <2e-16 ***
lm.mod.4 55 7447.8 7842.1 -3668.9 7337.8 434.93 6 <2e-16 ***
lm.mod.7 63 7683.1 8134.8 -3778.6 7557.1 0.00 8 1
lm.mod.8 69 7248.7 7743.4 -3555.3 7110.7 446.43 6 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
According to model comparison, model 8 improved the model fit. However, when evaluating the results, models 3, 4, 7 and 8 suffered from singularity and convergence issues. Hence, we rerun our model comparison retaining only the models that converged and which did not have any issues.
anova(lm.mod.1, lm.mod.2, lm.mod.5, lm.mod.6)
Data: Arabic
Models:
lm.mod.1: Word_V_ratio ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: Word_V_ratio ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: Word_V_ratio ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: Word_V_ratio ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 8704.9 8805.3 -4338.5 8676.9
lm.mod.2 19 8330.9 8467.1 -4146.4 8292.9 384.06 5 <2e-16 ***
lm.mod.5 28 8538.7 8739.5 -4241.4 8482.7 0.00 9 1
lm.mod.6 33 8155.5 8392.0 -4044.7 8089.5 393.29 5 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
The results show that model 6 improved the model fit and its specification is used as our optimal model. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.6, REML = TRUE)
toc() #
2.03 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.Word_V_ratio.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.Word_V_ratio.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(F1midnor ~ Debit + V + Sex + (1 | Speaker) + (1 | Word), Arabic, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
2.25 sec elapsed
tic()
lm.mod.2 <- lmer(F1midnor ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.91 sec elapsed
tic()
lm.mod.3 <- lmer(F1midnor ~ Debit + V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
64.88 sec elapsed
tic()
lm.mod.4 <- lmer(F1midnor ~ Debit + V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -7.2e+00
toc() #
179.08 sec elapsed
tic()
lm.mod.5 <- lmer(F1midnor ~ Debit * V + Sex + (1 | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.67 sec elapsed
tic()
lm.mod.6 <- lmer(F1midnor ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
2.23 sec elapsed
tic()
lm.mod.7 <- lmer(F1midnor ~ Debit * V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
453.41 sec elapsed
tic()
lm.mod.8 <- lmer(F1midnor ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 2 negative eigenvalues: -3.7e-04 -6.7e+00
toc() #
242.94 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8)
Data: Arabic
Models:
lm.mod.1: F1midnor ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F1midnor ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F1midnor ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: F1midnor ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.3: F1midnor ~ Debit + V + Sex + (V | Speaker) + (1 | Word)
lm.mod.4: F1midnor ~ Debit + V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
lm.mod.7: F1midnor ~ Debit * V + Sex + (V | Speaker) + (1 | Word)
lm.mod.8: F1midnor ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 8926.7 9027.0 -4449.3 8898.7
lm.mod.2 19 8385.1 8521.3 -4173.5 8347.1 551.60 5 <2e-16 ***
lm.mod.5 28 8699.3 8900.1 -4321.7 8643.3 0.00 9 1
lm.mod.6 33 8140.4 8377.0 -4037.2 8074.4 568.91 5 <2e-16 ***
lm.mod.3 49 5642.3 5993.6 -2772.1 5544.3 2530.13 16 <2e-16 ***
lm.mod.4 55 4803.3 5197.7 -2346.7 4693.3 850.94 6 <2e-16 ***
lm.mod.7 63 5299.1 5750.8 -2586.5 5173.1 0.00 8 1
lm.mod.8 69 4421.4 4916.1 -2141.7 4283.4 889.66 6 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
According to model comparison using all models, model 8 improved the model fit. However, models 4 and 8 showed singularity and convergence issues. Hence, we rerun model comparison removing any ill-formed model.
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.5, lm.mod.6, lm.mod.7)
Data: Arabic
Models:
lm.mod.1: F1midnor ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F1midnor ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F1midnor ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: F1midnor ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.3: F1midnor ~ Debit + V + Sex + (V | Speaker) + (1 | Word)
lm.mod.7: F1midnor ~ Debit * V + Sex + (V | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 8926.7 9027.0 -4449.3 8898.7
lm.mod.2 19 8385.1 8521.3 -4173.5 8347.1 551.60 5 <2e-16 ***
lm.mod.5 28 8699.3 8900.1 -4321.7 8643.3 0.00 9 1
lm.mod.6 33 8140.4 8377.0 -4037.2 8074.4 568.91 5 <2e-16 ***
lm.mod.3 49 5642.3 5993.6 -2772.1 5544.3 2530.13 16 <2e-16 ***
lm.mod.7 63 5299.1 5750.8 -2586.5 5173.1 371.20 14 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
The results show that model 7 improved the model fit. Hence, we use model 7’s specifications as our optimal model given that this is the best model with no singularity or convergence issues. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.7, REML = TRUE)
toc() #
87.71 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.F1midnor.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.F1midnor.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(F2midnor ~ Debit + V + Sex + (1 | Speaker) + (1 | Word), Arabic, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.56 sec elapsed
tic()
lm.mod.2 <- lmer(F2midnor ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.59 sec elapsed
tic()
lm.mod.3 <- lmer(F2midnor ~ Debit + V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -4.1e+00
toc() #
70 sec elapsed
tic()
lm.mod.4 <- lmer(F2midnor ~ Debit + V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 2 negative eigenvalues: -7.0e-04 -5.2e+00
toc() #
180.67 sec elapsed
tic()
lm.mod.5 <- lmer(F2midnor ~ Debit * V + Sex + (1 | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.14 sec elapsed
tic()
lm.mod.6 <- lmer(F2midnor ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
3.9 sec elapsed
tic()
lm.mod.7 <- lmer(F2midnor ~ Debit * V + Sex + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -2.5e-02
toc() #
163.7 sec elapsed
tic()
lm.mod.8 <- lmer(F2midnor ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word), Arabic,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -5.2e-03
toc() #
514.31 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8)
Data: Arabic
Models:
lm.mod.1: F2midnor ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F2midnor ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F2midnor ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: F2midnor ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.3: F2midnor ~ Debit + V + Sex + (V | Speaker) + (1 | Word)
lm.mod.4: F2midnor ~ Debit + V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
lm.mod.7: F2midnor ~ Debit * V + Sex + (V | Speaker) + (1 | Word)
lm.mod.8: F2midnor ~ Debit * V + Sex + (Debit | Speaker) + (V | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 865.5 965.9 -418.75 837.5
lm.mod.2 19 749.3 885.5 -355.66 711.3 126.19 5 < 2.2e-16 ***
lm.mod.5 28 -220.7 -20.0 138.35 -276.7 988.02 9 < 2.2e-16 ***
lm.mod.6 33 -356.7 -120.1 211.33 -422.7 145.96 5 < 2.2e-16 ***
lm.mod.3 49 -2497.9 -2146.6 1297.97 -2595.9 2173.28 16 < 2.2e-16 ***
lm.mod.4 55 -2683.7 -2289.4 1396.84 -2793.7 197.74 6 < 2.2e-16 ***
lm.mod.7 63 -4138.9 -3687.2 2132.43 -4264.9 1471.18 8 < 2.2e-16 ***
lm.mod.8 69 -4372.4 -3877.7 2255.18 -4510.4 245.50 6 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
According to model comparison, model 8 improved the model fit. However, when evaluating the results, models 3, 4, 7 and 8 showed singularity and convergence issues. We rerun our model comparison retaining only the models that converged and which did not have any issues. #### Models with no issues
anova(lm.mod.1, lm.mod.2, lm.mod.5, lm.mod.6)
Data: Arabic
Models:
lm.mod.1: F2midnor ~ Debit + V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F2midnor ~ Debit + V + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F2midnor ~ Debit * V + Sex + (1 | Speaker) + (1 | Word)
lm.mod.6: F2midnor ~ Debit * V + Sex + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 14 865.51 965.88 -418.75 837.51
lm.mod.2 19 749.31 885.54 -355.66 711.31 126.19 5 < 2.2e-16 ***
lm.mod.5 28 -220.71 -19.96 138.35 -276.71 988.02 9 < 2.2e-16 ***
lm.mod.6 33 -356.67 -120.07 211.33 -422.67 145.96 5 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
The results suggest that model 6 is improving the model fit. Hence, we use model 6’s specifications as our optimal model. We rerun the model with a Restricted Maximum Likelihood (REML).
tic()
lm.mod.Optimal <- update(lm.mod.6, REML = TRUE)
toc() #
5 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.F2midnor.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.F2midnor.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub1, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.3 sec elapsed
tic()
lm.mod.2 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.65 sec elapsed
tic()
lm.mod.3 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.83 sec elapsed
tic()
lm.mod.4 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.87 sec elapsed
tic()
lm.mod.5 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -1.2e-04
toc() #
3.35 sec elapsed
tic()
lm.mod.6 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -2.5e-04
toc() #
5.31 sec elapsed
tic()
lm.mod.7 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -2.0e+01
toc() #
6.45 sec elapsed
tic()
lm.mod.8 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -9.6e-03
toc() #
11.83 sec elapsed
tic()
lm.mod.9 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.44 sec elapsed
tic()
lm.mod.10 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1 sec elapsed
tic()
lm.mod.11 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
2.01 sec elapsed
tic()
lm.mod.12 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.29 sec elapsed
tic()
lm.mod.13 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -1.3e-04
toc() #
4.65 sec elapsed
tic()
lm.mod.14 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
4.07 sec elapsed
tic()
lm.mod.15 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -2.4e-04
toc() #
8.68 sec elapsed
tic()
lm.mod.16 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -2.6e+01
toc() #
13.03 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.13, lm.mod.14, lm.mod.15, lm.mod.16)
Data: ArabicSub1
Models:
lm.mod.1: F1midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.3: F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.4: F1midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.6: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.7: F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.9: F1midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.8: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.10: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.11: F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.12: F1midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.13: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.14: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.15: F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.16: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 10 7010.8 7079.7 -3495.4 6990.8
lm.mod.2 12 6558.5 6641.1 -3267.3 6534.5 456.33 2 <2e-16 ***
lm.mod.3 15 5725.2 5828.5 -2847.6 5695.2 839.27 3 <2e-16 ***
lm.mod.4 15 6709.9 6813.1 -3340.0 6679.9 0.00 0
lm.mod.5 18 5171.3 5295.1 -2567.6 5135.3 1544.66 3 <2e-16 ***
lm.mod.6 18 6233.5 6357.4 -3098.7 6197.5 0.00 0
lm.mod.7 21 5347.6 5492.1 -2652.8 5305.6 891.91 3 <2e-16 ***
lm.mod.9 22 6784.4 6935.8 -3370.2 6740.4 0.00 1 1
lm.mod.8 24 4749.3 4914.5 -2350.6 4701.3 2039.11 2 <2e-16 ***
lm.mod.10 24 6318.0 6483.1 -3135.0 6270.0 0.00 0
lm.mod.11 27 5456.7 5642.5 -2701.3 5402.7 867.29 3 <2e-16 ***
lm.mod.12 27 6472.6 6658.4 -3209.3 6418.6 0.00 0
lm.mod.13 30 4881.5 5088.0 -2410.8 4821.5 1597.07 3 <2e-16 ***
lm.mod.14 30 5980.4 6186.9 -2960.2 5920.4 0.00 0
lm.mod.15 33 5058.3 5285.4 -2496.2 4992.3 928.10 3 <2e-16 ***
lm.mod.16 36 4445.4 4693.1 -2186.7 4373.4 618.90 3 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
According to model comparison, model 16 improved the model fit. Out of all models, models 5, 6, 7, 8, 13, 15 and 16 had singularity and/or convergence issues. Hence we rerun our model comparison retaining only the models that converged and which did not have any issues.
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.14)
Data: ArabicSub1
Models:
lm.mod.1: F1midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.3: F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.4: F1midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.9: F1midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.10: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.11: F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.12: F1midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.14: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 10 7010.8 7079.7 -3495.4 6990.8
lm.mod.2 12 6558.5 6641.1 -3267.3 6534.5 456.33 2 <2e-16 ***
lm.mod.3 15 5725.2 5828.5 -2847.6 5695.2 839.27 3 <2e-16 ***
lm.mod.4 15 6709.9 6813.1 -3340.0 6679.9 0.00 0
lm.mod.9 22 6784.4 6935.8 -3370.2 6740.4 0.00 7 1
lm.mod.10 24 6318.0 6483.1 -3135.0 6270.0 470.42 2 <2e-16 ***
lm.mod.11 27 5456.7 5642.5 -2701.3 5402.7 867.29 3 <2e-16 ***
lm.mod.12 27 6472.6 6658.4 -3209.3 6418.6 0.00 0
lm.mod.14 30 5980.4 6186.9 -2960.2 5920.4 498.20 3 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Hence, we use model 14’s specifications as our optimal model given that this is the best model with no singularity or convergence issues. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.14, REML = TRUE)
Warning: Model failed to converge with 1 negative eigenvalue: -1.0e-05
toc() #
4.84 sec elapsed
After running our model 14, there is a convergence issue. Hence we rerun the analysis with model 11th specifications as our optimal model.
tic()
lm.mod.Optimal <- update(lm.mod.11, REML = TRUE)
toc() #
2.28 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.F1midnorTimbreSub.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.F1midnorTimbreSub.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub1, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.39 sec elapsed
tic()
lm.mod.2 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.75 sec elapsed
tic()
lm.mod.3 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.74 sec elapsed
tic()
lm.mod.4 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.01 sec elapsed
tic()
lm.mod.5 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
3.91 sec elapsed
tic()
lm.mod.6 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 1 negative eigenvalue: -4.7e-02
toc() #
4.09 sec elapsed
tic()
lm.mod.7 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
toc() #
8.18 sec elapsed
tic()
lm.mod.8 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
toc() #
14.26 sec elapsed
tic()
lm.mod.9 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.64 sec elapsed
tic()
lm.mod.10 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.03 sec elapsed
tic()
lm.mod.11 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.81 sec elapsed
tic()
lm.mod.12 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.47 sec elapsed
tic()
lm.mod.13 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: unable to evaluate scaled gradientWarning: Model failed to converge: degenerate Hessian with 1 negative eigenvalues
toc() #
4.9 sec elapsed
tic()
lm.mod.14 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
5.52 sec elapsed
tic()
lm.mod.15 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
toc() #
17.71 sec elapsed
tic()
lm.mod.16 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub1,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
toc() #
29.13 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.13, lm.mod.14, lm.mod.15, lm.mod.16)
Data: ArabicSub1
Models:
lm.mod.1: F2midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.3: F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.4: F2midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.6: F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.7: F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.9: F2midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.8: F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.10: F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.11: F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.12: F2midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.13: F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.14: F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.15: F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.16: F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 10 781.57 850.39 -380.79 761.57
lm.mod.2 12 765.34 847.92 -370.67 741.34 20.236 2 4.034e-05 ***
lm.mod.3 15 -1444.02 -1340.79 737.01 -1474.02 2215.352 3 < 2.2e-16 ***
lm.mod.4 15 706.63 809.85 -338.31 676.63 0.000 0
lm.mod.5 18 -1475.19 -1351.31 755.59 -1511.19 2187.813 3 < 2.2e-16 ***
lm.mod.6 18 691.13 815.01 -327.57 655.13 0.000 0
lm.mod.7 21 -1561.67 -1417.16 801.84 -1603.67 2258.809 3 < 2.2e-16 ***
lm.mod.9 22 108.22 259.62 -32.11 64.22 0.000 1 1
lm.mod.8 24 -1591.03 -1425.86 819.51 -1639.03 1703.246 2 < 2.2e-16 ***
lm.mod.10 24 88.62 253.78 -20.31 40.62 0.000 0
lm.mod.11 27 -2386.19 -2200.38 1220.09 -2440.19 2480.805 3 < 2.2e-16 ***
lm.mod.12 27 22.26 208.07 15.87 -31.74 0.000 0
lm.mod.13 30 -2424.50 -2218.04 1242.25 -2484.50 2452.756 3 < 2.2e-16 ***
lm.mod.14 30 3.27 209.72 28.37 -56.73 0.000 0
lm.mod.15 33 -2526.90 -2299.80 1296.45 -2592.90 2536.166 3 < 2.2e-16 ***
lm.mod.16 36 -2563.74 -2315.99 1317.87 -2635.74 42.844 3 2.656e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
According to model comparison, model 16 improved the model fit. Out of all models, models 6, 7, 8, 13, 15 and 16 had singularity and/or convergence issues. Hence we rerun our model comparison retaining only the models that converged and which did not have any issues.
However, both showed singularity and convergence issues.
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.14)
Data: ArabicSub1
Models:
lm.mod.1: F2midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.3: F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.4: F2midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.9: F2midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.10: F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.11: F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.12: F2midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.14: F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 10 781.57 850.39 -380.79 761.57
lm.mod.2 12 765.34 847.92 -370.67 741.34 20.236 2 4.034e-05 ***
lm.mod.3 15 -1444.02 -1340.79 737.01 -1474.02 2215.352 3 < 2.2e-16 ***
lm.mod.4 15 706.63 809.85 -338.31 676.63 0.000 0
lm.mod.5 18 -1475.19 -1351.31 755.59 -1511.19 2187.813 3 < 2.2e-16 ***
lm.mod.9 22 108.22 259.62 -32.11 64.22 0.000 4 1
lm.mod.10 24 88.62 253.78 -20.31 40.62 23.602 2 7.499e-06 ***
lm.mod.11 27 -2386.19 -2200.38 1220.09 -2440.19 2480.805 3 < 2.2e-16 ***
lm.mod.12 27 22.26 208.07 15.87 -31.74 0.000 0
lm.mod.14 30 3.27 209.72 28.37 -56.73 24.986 3 1.554e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Hence, we use model 14’s specifications as our optimal model given that this is the best model with no singularity or convergence issues. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.14, REML = TRUE)
Warning: unable to evaluate scaled gradientWarning: Model failed to converge: degenerate Hessian with 1 negative eigenvalues
toc() #
4.5 sec elapsed
Model 14 received convergence issues. Hence we rerun the analysis with model 11th specifications as our optimal model.
tic()
lm.mod.Optimal <- update(lm.mod.11, REML = TRUE)
toc() #
1.98 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.F2midnorTimbreSub.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.F2midnorTimbreSub.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub2, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.36 sec elapsed
tic()
lm.mod.2 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.16 sec elapsed
tic()
lm.mod.3 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.36 sec elapsed
tic()
lm.mod.4 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.06 sec elapsed
tic()
lm.mod.5 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
3.27 sec elapsed
tic()
lm.mod.6 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -5.3e-04
toc() #
2.67 sec elapsed
tic()
lm.mod.7 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 2 negative eigenvalues: -6.5e-05 -7.9e+00
toc() #
5.22 sec elapsed
tic()
lm.mod.8 <- lmer(F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 2 negative eigenvalues: -3.1e-04 -4.3e+01
toc() #
10.82 sec elapsed
tic()
lm.mod.9 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.44 sec elapsed
tic()
lm.mod.10 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.99 sec elapsed
tic()
lm.mod.11 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.91 sec elapsed
tic()
lm.mod.12 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.38 sec elapsed
tic()
lm.mod.13 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model failed to converge with 1 negative eigenvalue: -3.9e-04
toc() #
4.67 sec elapsed
tic()
lm.mod.14 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
4.17 sec elapsed
tic()
lm.mod.15 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
7.39 sec elapsed
tic()
lm.mod.16 <- lmer(F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 2 negative eigenvalues: -1.5e-04 -2.5e+01
toc() #
11.77 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.13, lm.mod.14, lm.mod.15, lm.mod.16)
Data: ArabicSub2
Models:
lm.mod.1: F1midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.3: F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.4: F1midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.6: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.7: F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.9: F1midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.8: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.10: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.11: F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.12: F1midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.13: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.14: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.15: F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.16: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 10 6870.3 6939.1 -3425.1 6850.3
lm.mod.2 12 6701.1 6783.7 -3338.6 6677.1 173.13 2 <2e-16 ***
lm.mod.3 15 5908.3 6011.5 -2939.1 5878.3 798.89 3 <2e-16 ***
lm.mod.4 15 6452.6 6555.9 -3211.3 6422.6 0.00 0
lm.mod.5 18 5697.2 5821.1 -2830.6 5661.2 761.43 3 <2e-16 ***
lm.mod.6 18 6265.7 6389.6 -3114.9 6229.7 0.00 0
lm.mod.7 21 5418.4 5562.9 -2688.2 5376.4 853.34 3 <2e-16 ***
lm.mod.9 22 6652.5 6803.9 -3304.3 6608.5 0.00 1 1
lm.mod.8 24 5193.8 5358.9 -2572.9 5145.8 1462.75 2 <2e-16 ***
lm.mod.10 24 6477.8 6642.9 -3214.9 6429.8 0.00 0
lm.mod.11 27 5659.0 5844.8 -2802.5 5605.0 824.74 3 <2e-16 ***
lm.mod.12 27 6220.3 6406.1 -3083.1 6166.3 0.00 0
lm.mod.13 30 5440.2 5646.6 -2690.1 5380.2 786.08 3 <2e-16 ***
lm.mod.14 30 6026.7 6233.2 -2983.4 5966.7 0.00 0
lm.mod.15 33 5146.3 5373.4 -2540.2 5080.3 886.40 3 <2e-16 ***
lm.mod.16 36 4907.9 5155.6 -2417.9 4835.9 244.46 3 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
According to model comparison, models 16 improved the model fit. Out of all models, models 6, 7, 8, 13 and 16 had singularity and/or convergence issues. Hence we rerun our model comparison retaining only the models that converged and which did not have any issues. #### Models with no issues
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.14, lm.mod.15)
Data: ArabicSub2
Models:
lm.mod.1: F1midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.3: F1midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.4: F1midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.5: F1midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word)
lm.mod.9: F1midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.10: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.11: F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.12: F1midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.14: F1midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.15: F1midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 10 6870.3 6939.1 -3425.1 6850.3
lm.mod.2 12 6701.1 6783.7 -3338.6 6677.1 173.13 2 <2e-16 ***
lm.mod.3 15 5908.3 6011.5 -2939.1 5878.3 798.89 3 <2e-16 ***
lm.mod.4 15 6452.6 6555.9 -3211.3 6422.6 0.00 0
lm.mod.5 18 5697.2 5821.1 -2830.6 5661.2 761.43 3 <2e-16 ***
lm.mod.9 22 6652.5 6803.9 -3304.3 6608.5 0.00 4 1
lm.mod.10 24 6477.8 6642.9 -3214.9 6429.8 178.77 2 <2e-16 ***
lm.mod.11 27 5659.0 5844.8 -2802.5 5605.0 824.74 3 <2e-16 ***
lm.mod.12 27 6220.3 6406.1 -3083.1 6166.3 0.00 0
lm.mod.14 30 6026.7 6233.2 -2983.4 5966.7 199.54 3 <2e-16 ***
lm.mod.15 33 5146.3 5373.4 -2540.2 5080.3 886.40 3 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Hence, we use model 15’s specifications as our optimal model given that this is the best model with no singularity or convergence issues. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.15, REML = TRUE)
Warning: unable to evaluate scaled gradientWarning: Model failed to converge: degenerate Hessian with 1 negative eigenvalues
toc() #
7.53 sec elapsed
However, model 15 received a convergence issue. Hence we rerun the analysis with model 14th specifications as our optimal model.
tic()
lm.mod.Optimal <- update(lm.mod.14, REML = TRUE)
toc() #
3.94 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.F1midnorTimbreSub2.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.F1midnorTimbreSub2.Rds")
Our aim here is to model the data using various model specification to obtain our optimal model. We start with easy to more complex modelling strategies
We start by using a Maximum Likelihood model to allow for model comparison
tic()
lm.mod.1 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub2, control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.36 sec elapsed
tic()
lm.mod.2 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.64 sec elapsed
tic()
lm.mod.3 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.39 sec elapsed
tic()
lm.mod.4 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.95 sec elapsed
tic()
lm.mod.5 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: unable to evaluate scaled gradientWarning: Model failed to converge: degenerate Hessian with 1 negative eigenvaluesWarning: Model failed to converge with 1 negative eigenvalue: -9.5e-05
toc() #
3.67 sec elapsed
tic()
lm.mod.6 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: unable to evaluate scaled gradientWarning: Model failed to converge: degenerate Hessian with 1 negative eigenvaluesWarning: Model failed to converge with 1 negative eigenvalue: -3.1e-04
toc() #
2.83 sec elapsed
tic()
lm.mod.7 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
6.89 sec elapsed
tic()
lm.mod.8 <- lmer(F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
Warning: Model failed to converge with 3 negative eigenvalues: -7.0e-04 -3.4e-01 -3.6e+01
toc() #
11.77 sec elapsed
tic()
lm.mod.9 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.41 sec elapsed
tic()
lm.mod.10 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
0.89 sec elapsed
tic()
lm.mod.11 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.98 sec elapsed
tic()
lm.mod.12 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
1.58 sec elapsed
tic()
lm.mod.13 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: unable to evaluate scaled gradientWarning: Model failed to converge: degenerate Hessian with 1 negative eigenvalues
toc() #
4.57 sec elapsed
tic()
lm.mod.14 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
Warning: Model is nearly unidentifiable: large eigenvalue ratio
- Rescale variables?
toc() #
4.47 sec elapsed
tic()
lm.mod.15 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
toc() #
9.11 sec elapsed
tic()
lm.mod.16 <- lmer(F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word), ArabicSub2,
control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5)), REML = FALSE)
boundary (singular) fit: see help('isSingular')
toc() #
18.17 sec elapsed
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.5, lm.mod.6, lm.mod.7, lm.mod.8, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.13, lm.mod.14, lm.mod.15, lm.mod.16)
According to model comparison, models 16 improved the model fit. Out of all models, models 5, 6, 8, 13, 14 and 16 had singularity and/or convergence issues. Hence we rerun our model comparison retaining only the models that converged and which did not have any issues.
anova(lm.mod.1, lm.mod.2, lm.mod.3, lm.mod.4, lm.mod.7, lm.mod.9, lm.mod.10, lm.mod.11, lm.mod.12, lm.mod.15)
Data: ArabicSub2
Models:
lm.mod.1: F2midnor ~ Longueur + Timbre + Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.2: F2midnor ~ Longueur + Timbre + Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.3: F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.4: F2midnor ~ Longueur + Timbre + Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.7: F2midnor ~ Longueur + Timbre + Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
lm.mod.9: F2midnor ~ Longueur * Timbre * Debit + Sex + (1 | Speaker) + (1 | Word)
lm.mod.10: F2midnor ~ Longueur * Timbre * Debit + Sex + (Longueur | Speaker) + (1 | Word)
lm.mod.11: F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (1 | Word)
lm.mod.12: F2midnor ~ Longueur * Timbre * Debit + Sex + (Debit | Speaker) + (1 | Word)
lm.mod.15: F2midnor ~ Longueur * Timbre * Debit + Sex + (Timbre | Speaker) + (Debit | Speaker) + (1 | Word)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lm.mod.1 10 129.58 198.40 -54.79 109.58
lm.mod.2 12 60.18 142.76 -18.09 36.18 73.408 2 <2e-16 ***
lm.mod.3 15 -1678.89 -1575.67 854.45 -1708.89 1745.068 3 <2e-16 ***
lm.mod.4 15 56.70 159.92 -13.35 26.70 0.000 0
lm.mod.7 21 -1783.61 -1639.09 912.80 -1825.61 1852.301 6 <2e-16 ***
lm.mod.9 22 -607.29 -455.89 325.65 -651.29 0.000 1 1
lm.mod.10 24 -687.26 -522.10 367.63 -735.26 83.968 2 <2e-16 ***
lm.mod.11 27 -2657.15 -2471.34 1355.58 -2711.15 1975.893 3 <2e-16 ***
lm.mod.12 27 -692.71 -506.91 373.36 -746.71 0.000 0
lm.mod.15 33 -2784.89 -2557.79 1425.44 -2850.89 2104.173 6 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Hence, we use model 15’s specifications as our optimal model given that this is the best model with no singularity or convergence issues. We rerun the model with a Restricted Maximum Likelihood (REML)
tic()
lm.mod.Optimal <- update(lm.mod.15, REML = TRUE)
Warning: Model is nearly unidentifiable: large eigenvalue ratio
- Rescale variables?
toc() #
9.01 sec elapsed
This model received a convergence issue. Hence we rerun the analysis with model 11th specifications as our optimal model given that model 12 did not improve the model fit.
tic()
lm.mod.Optimal <- update(lm.mod.11, REML = TRUE)
toc() #
2.19 sec elapsed
saveRDS(lm.mod.Optimal, "lm.mod.Optimal.F2midnorTimbreSub2.Rds")
lm.mod.Optimal <- readRDS("lm.mod.Optimal.F2midnorTimbreSub2.Rds")
sessionInfo()
R version 4.4.2 (2024-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 10 x64 (build 19045)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.utf8 LC_CTYPE=English_United Kingdom.utf8
[3] LC_MONETARY=English_United Kingdom.utf8 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.utf8
time zone: Europe/Paris
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] phonR_1.0-7 lmerTest_3.1-3 lme4_1.1-35.5 Matrix_1.7-1 tictoc_1.2.1
[6] car_3.1-3 carData_3.0-5 lubridate_1.9.4 forcats_1.0.0 stringr_1.5.1
[11] dplyr_1.1.4 purrr_1.0.2 readr_2.1.5 tidyr_1.3.1 tibble_3.2.1
[16] ggplot2_3.5.1 tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] utf8_1.2.4 generics_0.1.3 stringi_1.8.4 lattice_0.22-6
[5] hms_1.1.3 digest_0.6.37 magrittr_2.0.3 evaluate_1.0.1
[9] grid_4.4.2 timechange_0.3.0 fastmap_1.2.0 Formula_1.2-5
[13] fansi_1.0.6 scales_1.3.0 numDeriv_2016.8-1.1 abind_1.4-8
[17] cli_3.6.3 rlang_1.1.4 munsell_0.5.1 splines_4.4.2
[21] withr_3.0.2 yaml_2.3.10 tools_4.4.2 tzdb_0.4.0
[25] nloptr_2.1.1 minqa_1.2.8 colorspace_2.1-1 boot_1.3-31
[29] vctrs_0.6.5 R6_2.5.1 lifecycle_1.0.4 MASS_7.3-61
[33] pkgconfig_2.0.3 pillar_1.9.0 gtable_0.3.6 Rcpp_1.0.13-1
[37] rsconnect_1.3.3 glue_1.8.0 xfun_0.49 tidyselect_1.2.1
[41] rstudioapi_0.17.1 knitr_1.49 nlme_3.1-166 htmltools_0.5.8.1
[45] rmarkdown_2.29 compiler_4.4.2