Overview
There really is no good reason I can think of to switch reference (base) levels for a contrast in the context of a hierarchical sequence of LMMs or the change the order of factor levels. So, in this sense, The exercise in this RPub is a bit of a silly exercise. Moreover, for the maximum LMM the choice of contrasts and the order of factor levels is irrelevant; they are mathematically equivalent reparameterizations of the same LMM. And, of course, estimates of variance parameters (VPs) and correlation parameters (CPs) in the random-effect structure do depend on type of contrast and the order of levels of the group factor.
However, when we reduce model complexity, mathematical equivalence at different levels of model complexity will be lost, because for reduced models goodness-of-fit depends on the specific VP(s) or CP(s) that are no longer in the LMM. In other words, as soon as we remove one or several VPs or CPs from the model, the mathematical equivalence may no longer hold. Thus, the above model sequences make only sense if the same contrast and the same ordering of factor levels holds for all models in a sequence.
Thus, we cannot change the order of factor levels or the base or reference levels within a specific type of contrast when we move within model sequences such as the ones determined in the previous RPubs and reproduced here.
(1a) RE1: max_LMM -> prsm1_LMM -> zcp_LMM -> prsm2_LMM -> min1_LMM
(1b) RE0: max_LMM_RE0 -> prsm1_LMM_RE0 -> zcp_LMM_RE0 -> prsm2_LMM_RE0 -> min1_LMM
(2a) max_LMM -> int_LMM -> min1_LMM
(2b) -> min2_LMM
(3a) -> fm5 -> min1_LM
(3b) -> min2_LM
This script demonstrates the effects of re-ordering factor levels and different reference (base) levels for treatment, sum, and sliding contrasts for model sequence (1a).
Setup
The demonstration uses the Machines
data which are part of the MEMSS
package [efficiency scores of 6 workers (random factor) tested 3 times on each of 3 machines (fixed factor) ].
knitr::opts_chunk$set(echo = TRUE)
suppressMessages(library("lme4"))
library("RePsychLing")
library(sjPlot)
## Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
suppressMessages(library("tidyverse"))
library(modelr)
Numeric covariates
data("Machines", package = "MEMSS")
Machines <- Machines[do.call(order, Machines), ] # reorder by Worker, then Machine
# Extract numeric covariates for treatment contrasts
## ... with reference A
contrasts(Machines$Machine) <- contr.treatment(3, base=1)
mm1a <- model.matrix(~ 1 + Machine, Machines)
dBA <- mm1a[, 2]
dCA <- mm1a[, 3]
## ... with reference B
contrasts(Machines$Machine) <- contr.treatment(3, base=2)
mm1b <- model.matrix(~ 1 + Machine, Machines)
dAB <- mm1b[, 2]
dCB <- mm1b[, 3]
## ... with reference C
contrasts(Machines$Machine) <- contr.treatment(3, base=3)
mm1c <- model.matrix(~ 1 + Machine, Machines)
dAC <- mm1c[, 2]
dBC <- mm1c[, 3]
# Extract numeric covariates for sum contrasts
## ... leave out C - default order A-B-C
contrasts(Machines$Machine) <- contr.sum(3)
mm1d <- model.matrix(~ 1 + Machine, Machines)
dA_M <- mm1d[, 2]
dB_M <- mm1d[, 3]
## ... leave out B
Machines$Machine <- factor(Machines$Machine, levels=c("A", "C", "B"))
contrasts(Machines$Machine) <- contr.sum(3)
mm1e <- model.matrix(~ 1 + Machine, Machines)
dC_M <- mm1e[, 3]
# Extract numeric covariates for sliding contrasts
## ... order A-B-C - default
Machines$Machine <- factor(Machines$Machine, levels=c("A", "B", "C"))
contrasts(Machines$Machine) <- MASS::contr.sdif(3)
mm1f <- model.matrix(~ 1 + Machine, Machines)
dB_A <- mm1f[, 2]
dC_B <- mm1f[, 3]
## ... order A-C-B
Machines$Machine <- factor(Machines$Machine, levels=c("C", "A", "B"))
contrasts(Machines$Machine) <- MASS::contr.sdif(3)
mm1g <- model.matrix(~ 1 + Machine, Machines)
dA_C <- mm1g[, 2]
# set back to default order of levels and contrast
Machines$Machine <- factor(Machines$Machine, levels=c("A", "B", "C"))
contrasts(Machines$Machine) <- contr.treatment(3)
Treatment contrasts
# max_LMM
# ... base = A
m1a <- lmer(score ~ 1 + Machine + (1 + dBA + dCA | Worker), Machines, REML=FALSE)
# ... base = B
m1b <- lmer(score ~ 1 + Machine + (1 + dAB + dCB | Worker), Machines, REML=FALSE)
# ... base = C
m1c <- lmer(score ~ 1 + Machine + (1 + dAC + dBC | Worker), Machines, REML=FALSE)
# prsm1_LMM
# ... base = A
m2a <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dBA + dCA | Worker), Machines, REML=FALSE)
# ... base = B
m2b <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dAB + dCB | Worker), Machines, REML=FALSE)
# ... base = C
m2c <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dAC + dBC | Worker), Machines, REML=FALSE)
# zcp_LMM
# ... base = A
m3a <- lmer(score ~ 1 + Machine + (1 + dBA + dBA || Worker), Machines, REML=FALSE)
# ... base = B
m3b <- lmer(score ~ 1 + Machine + (1 + dAB + dCB || Worker), Machines, REML=FALSE)
# ... base = C
m3c <- lmer(score ~ 1 + Machine + (1 + dAC + dBC || Worker), Machines, REML=FALSE)
# prsm2_LMM
# ... base = A
m4a <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dBA || Worker), Machines, REML=FALSE)
# ... base = B
m4b <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dCB || Worker), Machines, REML=FALSE)
# ... base = C
m4c <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dAC || Worker), Machines, REML=FALSE)
# min1_LMM
m5 <- lmer(score ~ 1 + Machine + (1 | Worker), Machines, REML=FALSE)
# Deviances for contrasts within models 4 and 3
suppressMessages(tab_model(m5, m4a, m4b, m4c, m3a, m3b, m3c,
dv.labels = c("m5", "m4a", "m4b", "m4c", "m3a", "m3b", "m3c"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4a
|
m4b
|
m4c
|
m3a
|
m3b
|
m3c
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
3.32
|
7.16
|
7.31
|
3.32
|
0.93
|
0.93
|
τ00
|
21.93 Worker
|
12.19 Worker
|
27.22 Worker
|
27.70 Worker
|
12.19 Worker
|
60.32 Worker
|
15.82 Worker
|
|
|
26.05 Worker.1
|
8.91 Worker.1
|
8.26 Worker.1
|
26.05 Worker.1
|
27.80 Worker.1
|
10.86 Worker.1
|
|
|
|
|
|
|
28.42 Worker.2
|
29.31 Worker.2
|
Observations
|
54
|
54
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
256.127
|
288.471
|
289.158
|
256.127
|
235.387
|
222.047
|
# Deviances for contrasts within model 2 and 1
suppressMessages(tab_model(m2a, m2b, m2c, m1a, m1b, m1c,
dv.labels = c("m2a", "m2b", "m2c", "m1a", "m1b", "m1c"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m2a
|
m2b
|
m2c
|
m1a
|
m1b
|
m1c
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
0.93
|
0.93
|
0.93
|
0.92
|
0.92
|
0.92
|
τ00
|
13.72 Worker
|
61.05 Worker
|
15.77 Worker
|
13.82 Worker
|
61.95 Worker
|
16.00 Worker
|
|
29.11 Worker.1
|
28.30 Worker.1
|
10.98 Worker.1
|
|
|
|
τ11
|
11.04 Worker.1.dCA
|
28.93 Worker.1.dCB
|
29.63 Worker.1.dBC
|
28.69 Worker.dBA
|
28.69 Worker.dAB
|
11.24 Worker.dAC
|
|
|
|
|
11.24 Worker.dCA
|
29.31 Worker.dCB
|
29.31 Worker.dBC
|
ρ01
|
0.30 Worker.1
|
0.80 Worker.1
|
0.33 Worker.1
|
0.49 Worker.dBA
|
-0.91 Worker.dAB
|
-0.50 Worker.dAC
|
|
|
|
|
-0.36 Worker.dCA
|
-0.88 Worker.dCB
|
0.38 Worker.dBC
|
Observations
|
54
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
220.576
|
229.434
|
221.398
|
216.418
|
216.418
|
216.418
|
# Deviances for base A
suppressMessages (tab_model(m5, m4a, m3a, m2a, m1a,
dv.labels = c("m5", "m4a", "m3a", "m2a", "m1a"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4a
|
m3a
|
m2a
|
m1a
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
3.32
|
3.32
|
0.93
|
0.92
|
τ00
|
21.93 Worker
|
12.19 Worker
|
12.19 Worker
|
13.72 Worker
|
13.82 Worker
|
|
|
26.05 Worker.1
|
26.05 Worker.1
|
29.11 Worker.1
|
|
τ11
|
|
|
|
11.04 Worker.1.dCA
|
28.69 Worker.dBA
|
|
|
|
|
|
11.24 Worker.dCA
|
ρ01
|
|
|
|
0.30 Worker.1
|
0.49 Worker.dBA
|
|
|
|
|
|
-0.36 Worker.dCA
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
256.127
|
256.127
|
220.576
|
216.418
|
# Deviances for base B
suppressMessages (tab_model(m5, m4b, m3b, m2b, m1b,
dv.labels = c("m5", "m4b", "m3b", "m2b", "m1b"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4b
|
m3b
|
m2b
|
m1b
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
7.16
|
0.93
|
0.93
|
0.92
|
τ00
|
21.93 Worker
|
27.22 Worker
|
60.32 Worker
|
61.05 Worker
|
61.95 Worker
|
|
|
8.91 Worker.1
|
27.80 Worker.1
|
28.30 Worker.1
|
|
|
|
|
28.42 Worker.2
|
|
|
τ11
|
|
|
|
28.93 Worker.1.dCB
|
28.69 Worker.dAB
|
|
|
|
|
|
29.31 Worker.dCB
|
ρ01
|
|
|
|
0.80 Worker.1
|
-0.91 Worker.dAB
|
|
|
|
|
|
-0.88 Worker.dCB
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
288.471
|
235.387
|
229.434
|
216.418
|
# Deviances for base C
suppressMessages (tab_model(m5, m4c, m3c, m2c, m1c,
dv.labels = c("m5", "m4c ", "m3c", "m2c", "m1c"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4c
|
m3c
|
m2c
|
m1c
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
7.31
|
0.93
|
0.93
|
0.92
|
τ00
|
21.93 Worker
|
27.70 Worker
|
15.82 Worker
|
15.77 Worker
|
16.00 Worker
|
|
|
8.26 Worker.1
|
10.86 Worker.1
|
10.98 Worker.1
|
|
|
|
|
29.31 Worker.2
|
|
|
τ11
|
|
|
|
29.63 Worker.1.dBC
|
11.24 Worker.dAC
|
|
|
|
|
|
29.31 Worker.dBC
|
ρ01
|
|
|
|
0.33 Worker.1
|
-0.50 Worker.dAC
|
|
|
|
|
|
0.38 Worker.dBC
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
289.158
|
222.047
|
221.398
|
216.418
|
Sum contrasts
# max_LMM
# ... no A
m1am <- lmer(score ~ 1 + Machine + (1 + dB_M + dC_M | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : unable to evaluate scaled gradient
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : Model failed to converge: degenerate Hessian with 2
## negative eigenvalues
# ... no B
m1bm <- lmer(score ~ 1 + Machine + (1 + dA_M + dC_M | Worker), Machines, REML=FALSE)
# ... no C
m1cm <- lmer(score ~ 1 + Machine + (1 + dA_M + dB_M | Worker), Machines, REML=FALSE)
# prsm1_LMM
# ... no A
m2am <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_M + dC_M | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: large eigenvalue ratio
## - Rescale variables?
# ... no B
m2bm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_M + dC_M | Worker), Machines, REML=FALSE)
# ... no C
m2cm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_M + dB_M | Worker), Machines, REML=FALSE)
# zcp_LMM
# ... no A
m3am <- lmer(score ~ 1 + Machine + (1 + dB_M + dC_M || Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: large eigenvalue ratio
## - Rescale variables?
# ... no B
m3bm <- lmer(score ~ 1 + Machine + (1 + dA_M + dC_M || Worker), Machines, REML=FALSE)
# ... no C
m3cm <- lmer(score ~ 1 + Machine + (1 + dA_M + dB_M || Worker), Machines, REML=FALSE)
# prsm2_LMM
m4am <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_M || Worker), Machines, REML=FALSE)
m4bm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_M || Worker), Machines, REML=FALSE)
m4cm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dC_M || Worker), Machines, REML=FALSE)
# Deviances for contrasts within models 4 and 3
suppressMessages (tab_model(m5, m4am, m4bm, m4cm, m3am, m3bm, m3cm,
dv.labels = c("m5", "m4am", " m4bm", "m4cm", "m3am", " m3bm", "m3cm"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4am
|
m4bm
|
m4cm
|
m3am
|
m3bm
|
m3cm
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
8.41
|
4.54
|
4.54
|
4.54
|
0.93
|
0.93
|
τ00
|
21.93 Worker
|
22.06 Worker
|
22.49 Worker
|
22.49 Worker
|
22.49 Worker
|
22.90 Worker
|
22.90 Worker
|
|
|
1.56 Worker.1
|
6.73 Worker.1
|
6.73 Worker.1
|
5.82 Worker.1
|
5.51 Worker.1
|
5.51 Worker.1
|
|
|
|
|
|
0.90 Worker.2
|
11.43 Worker.2
|
11.43 Worker.2
|
Observations
|
54
|
54
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
291.932
|
271.565
|
271.565
|
271.565
|
227.491
|
227.491
|
# Deviances for contrasts within models 2 and 1
suppressMessages (tab_model(m2am, m2bm, m2cm, m1am, m1bm, m1cm,
dv.labels = c("m2am", " m2bm", "m2cm", "m1am", " m1bm", "m1cm"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m2am
|
m2bm
|
m2cm
|
m1am
|
m1bm
|
m1cm
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
4.54
|
0.92
|
0.92
|
4.54
|
0.92
|
0.92
|
τ00
|
22.49 Worker
|
22.90 Worker
|
22.90 Worker
|
22.49 Worker
|
22.90 Worker
|
22.90 Worker
|
|
8.90 Worker.1
|
5.62 Worker.1
|
5.62 Worker.1
|
|
|
|
τ11
|
11.85 Worker.1.dC_M
|
11.64 Worker.1.dC_M
|
11.64 Worker.1.dB_M
|
17.47 Worker.dB_M
|
5.62 Worker.dA_M
|
5.62 Worker.dA_M
|
|
|
|
|
6.76 Worker.dC_M
|
11.64 Worker.dC_M
|
11.64 Worker.dB_M
|
ρ01
|
0.68 Worker.1
|
0.71 Worker.1
|
-0.71 Worker.1
|
0.34 Worker.dB_M
|
-0.65 Worker.dA_M
|
-0.65 Worker.dA_M
|
|
|
|
|
-0.27 Worker.dC_M
|
-0.84 Worker.dC_M
|
0.84 Worker.dB_M
|
Observations
|
54
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
271.565
|
223.545
|
223.545
|
266.291
|
216.418
|
216.418
|
# Deviances for models am
suppressMessages(tab_model(m5, m4am, m3am, m2am, m1am,
dv.labels = c("m5", "m4am", "m3am", "m2am", "m1am"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4am
|
m3am
|
m2am
|
m1am
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
8.41
|
4.54
|
4.54
|
4.54
|
τ00
|
21.93 Worker
|
22.06 Worker
|
22.49 Worker
|
22.49 Worker
|
22.49 Worker
|
|
|
1.56 Worker.1
|
5.82 Worker.1
|
8.90 Worker.1
|
|
|
|
|
0.90 Worker.2
|
|
|
τ11
|
|
|
|
11.85 Worker.1.dC_M
|
17.47 Worker.dB_M
|
|
|
|
|
|
6.76 Worker.dC_M
|
ρ01
|
|
|
|
0.68 Worker.1
|
0.34 Worker.dB_M
|
|
|
|
|
|
-0.27 Worker.dC_M
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
291.932
|
271.565
|
271.565
|
266.291
|
# Deviances for models bm
suppressMessages(tab_model(m5, m4bm, m3bm, m2bm, m1bm,
dv.labels = c("m5", "m4bm", "m3bm", "m2bm", "m1bm"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4bm
|
m3bm
|
m2bm
|
m1bm
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
4.54
|
0.93
|
0.92
|
0.92
|
τ00
|
21.93 Worker
|
22.49 Worker
|
22.90 Worker
|
22.90 Worker
|
22.90 Worker
|
|
|
6.73 Worker.1
|
5.51 Worker.1
|
5.62 Worker.1
|
|
|
|
|
11.43 Worker.2
|
|
|
τ11
|
|
|
|
11.64 Worker.1.dC_M
|
5.62 Worker.dA_M
|
|
|
|
|
|
11.64 Worker.dC_M
|
ρ01
|
|
|
|
0.71 Worker.1
|
-0.65 Worker.dA_M
|
|
|
|
|
|
-0.84 Worker.dC_M
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
271.565
|
227.491
|
223.545
|
216.418
|
# Deviances for models cm
suppressMessages(tab_model(m5, m4cm, m3cm, m2cm, m1cm,
dv.labels = c("m5", "m4cm", "m3cm", "m2cm", "m1cm"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4cm
|
m3cm
|
m2cm
|
m1cm
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
4.54
|
0.93
|
0.92
|
0.92
|
τ00
|
21.93 Worker
|
22.49 Worker
|
22.90 Worker
|
22.90 Worker
|
22.90 Worker
|
|
|
6.73 Worker.1
|
5.51 Worker.1
|
5.62 Worker.1
|
|
|
|
|
11.43 Worker.2
|
|
|
τ11
|
|
|
|
11.64 Worker.1.dB_M
|
5.62 Worker.dA_M
|
|
|
|
|
|
11.64 Worker.dB_M
|
ρ01
|
|
|
|
-0.71 Worker.1
|
-0.65 Worker.dA_M
|
|
|
|
|
|
0.84 Worker.dB_M
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
271.565
|
227.491
|
223.545
|
216.418
|
Models m1am, m2am, and m3am did not converge properly. Therefore, the mathematical equalivance of m1am with m1bm and m1cm fails. (Other comparisons involving these LMMs are also invalid.)
Sliding contrasts
# max_LMM
# ... no A_C
m1ac <- lmer(score ~ 1 + Machine + (1 + dB_A + dC_B | Worker), Machines, REML=FALSE)
# ... no B_A
m1ba <- lmer(score ~ 1 + Machine + (1 + dA_C + dC_B | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : Hessian is numerically singular: parameters are not
## uniquely determined
# ... no C_B
m1cb <- lmer(score ~ 1 + Machine + (1 + dA_C + dB_A | Worker), Machines, REML=FALSE)
# prsm1_LMM
# ... no A_C
m2ac <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_A + dC_B | Worker), Machines, REML=FALSE)
# ... no B_A
m2ba <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_C + dC_B | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: large eigenvalue ratio
## - Rescale variables?
# ... no C_B
m2cb <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_C + dB_A | Worker), Machines, REML=FALSE)
# zcp_LMM
# ... no A_C
m3ac <- lmer(score ~ 1 + Machine + (1 + dB_A + dC_B || Worker), Machines, REML=FALSE)
# ... no B_A
m3ba <- lmer(score ~ 1 + Machine + (1 + dA_C + dC_B || Worker), Machines, REML=FALSE)
# ... no C_B
m3cb <- lmer(score ~ 1 + Machine + (1 + dA_C + dB_A || Worker), Machines, REML=FALSE)
# prsm2_LMM
m4ac <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_C || Worker), Machines, REML=FALSE)
m4ba <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_A || Worker), Machines, REML=FALSE)
m4cb <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dC_B || Worker), Machines, REML=FALSE)
# Deviances for contrasts within models 4 and 3
suppressMessages(tab_model(m5, m4ba, m4cb, m4ac, m3ba, m3cb, m3ac,
dv.labels = c("m5", "m4ba", " m4cb", "m4ac", "m3ba", " m3cb", "m3ac"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4ba
|
m4cb
|
m4ac
|
m3ba
|
m3cb
|
m3ac
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
7.21
|
7.07
|
7.07
|
7.07
|
0.93
|
0.93
|
τ00
|
21.93 Worker
|
22.20 Worker
|
22.21 Worker
|
22.21 Worker
|
22.21 Worker
|
22.90 Worker
|
22.90 Worker
|
|
|
9.50 Worker.1
|
10.03 Worker.1
|
10.03 Worker.1
|
4.78 Worker.1
|
28.81 Worker.1
|
28.19 Worker.1
|
|
|
|
|
|
5.25 Worker.2
|
28.19 Worker.2
|
28.81 Worker.2
|
Observations
|
54
|
54
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
287.778
|
287.202
|
287.202
|
287.202
|
229.569
|
229.569
|
# Deviances for contrasts within models 2 and 1
suppressMessages(tab_model(m2ba, m2cb, m2ac, m1ba, m1cb, m1ac,
dv.labels = c(" m2ba", "m2cb", "m2ac", "m1ba", "m1cb", "m1ac"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m2ba
|
m2cb
|
m2ac
|
m1ba
|
m1cb
|
m1ac
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
7.07
|
0.92
|
0.92
|
7.07
|
0.92
|
0.92
|
τ00
|
22.21 Worker
|
22.90 Worker
|
22.90 Worker
|
22.21 Worker
|
22.90 Worker
|
22.90 Worker
|
|
21.44 Worker.1
|
29.31 Worker.1
|
28.69 Worker.1
|
|
|
|
τ11
|
8.80 Worker.1.dC_B
|
28.69 Worker.1.dB_A
|
29.31 Worker.1.dC_B
|
2.42 Worker.dA_C
|
29.31 Worker.dA_C
|
28.69 Worker.dB_A
|
|
|
|
|
7.58 Worker.dC_B
|
28.69 Worker.dB_A
|
29.31 Worker.dC_B
|
ρ01
|
0.74 Worker.1
|
0.81 Worker.1
|
-0.81 Worker.1
|
-0.12 Worker.dA_C
|
0.77 Worker.dA_C
|
0.82 Worker.dB_A
|
|
|
|
|
-0.80 Worker.dC_B
|
0.82 Worker.dB_A
|
-0.77 Worker.dC_B
|
Observations
|
54
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
287.202
|
223.545
|
223.545
|
285.135
|
216.418
|
216.418
|
# Deviances for models ba
suppressMessages (tab_model(m5, m4ba, m3ba, m2ba, m1ba,
dv.labels = c("m5", "m4ba", " m3ba", "m2ba", "m1ba"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4ba
|
m3ba
|
m2ba
|
m1ba
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
7.21
|
7.07
|
7.07
|
7.07
|
τ00
|
21.93 Worker
|
22.20 Worker
|
22.21 Worker
|
22.21 Worker
|
22.21 Worker
|
|
|
9.50 Worker.1
|
4.78 Worker.1
|
21.44 Worker.1
|
|
|
|
|
5.25 Worker.2
|
|
|
τ11
|
|
|
|
8.80 Worker.1.dC_B
|
2.42 Worker.dA_C
|
|
|
|
|
|
7.58 Worker.dC_B
|
ρ01
|
|
|
|
0.74 Worker.1
|
-0.12 Worker.dA_C
|
|
|
|
|
|
-0.80 Worker.dC_B
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
287.778
|
287.202
|
287.202
|
285.135
|
# Deviances for models cb
suppressMessages (tab_model(m5, m4cb, m3cb, m2cb, m1cb,
dv.labels = c("m5", "m4cb", " m3cb", "m2cb", "m1cb"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4cb
|
m3cb
|
m2cb
|
m1cb
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
9.58
|
7.07
|
0.93
|
0.92
|
0.92
|
τ00
|
21.93 Worker
|
22.21 Worker
|
22.90 Worker
|
22.90 Worker
|
22.90 Worker
|
|
|
10.03 Worker.1
|
28.81 Worker.1
|
29.31 Worker.1
|
|
|
|
|
28.19 Worker.2
|
|
|
τ11
|
|
|
|
28.69 Worker.1.dB_A
|
29.31 Worker.dA_C
|
|
|
|
|
|
28.69 Worker.dB_A
|
ρ01
|
|
|
|
0.81 Worker.1
|
0.77 Worker.dA_C
|
|
|
|
|
|
0.82 Worker.dB_A
|
Observations
|
54
|
54
|
54
|
54
|
54
|
Deviance
|
293.703
|
287.202
|
229.569
|
223.545
|
216.418
|
# Deviances fir nodels ac
suppressMessages (tab_model(m4ac, m3ac, m2ac, m1ac,
dv.labels = c("m5", "m4ac", " m3ac", "m2ac", "m1ac"),
show.ci = FALSE, show.icc = FALSE, show.p = FALSE, show.r2 = FALSE,
show.dev = TRUE ))
|
m5
|
m4ac
|
m3ac
|
m2ac
|
m1ac
|
Predictors
|
Estimates
|
Estimates
|
Estimates
|
Estimates
|
(Intercept)
|
52.36
|
52.36
|
52.36
|
52.36
|
B
|
7.97
|
7.97
|
7.97
|
7.97
|
C
|
13.92
|
13.92
|
13.92
|
13.92
|
Random Effects
|
σ2
|
7.07
|
0.93
|
0.92
|
0.92
|
τ00
|
22.21 Worker
|
22.90 Worker
|
22.90 Worker
|
22.90 Worker
|
|
10.03 Worker.1
|
28.19 Worker.1
|
28.69 Worker.1
|
|
|
|
28.81 Worker.2
|
|
|
τ11
|
|
|
29.31 Worker.1.dC_B
|
28.69 Worker.dB_A
|
|
|
|
|
29.31 Worker.dC_B
|
ρ01
|
|
|
-0.81 Worker.1
|
0.82 Worker.dB_A
|
|
|
|
|
-0.77 Worker.dC_B
|
Observations
|
54
|
54
|
54
|
54
|
Deviance
|
287.202
|
229.569
|
223.545
|
216.418
|
Models m1ba and m2ba did not converge properly. Therefore, the mathematical equalivance of m1ba with m1cb and m1ac fails. (Other comparisons involving m1ba and m2ba are also invalid.)
Related RPubs:
Appendix
sessionInfo()
## R version 3.5.1 (2018-07-02)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS 10.14
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] bindrcpp_0.2.2 modelr_0.1.2 forcats_0.3.0
## [4] stringr_1.3.1 dplyr_0.7.6 purrr_0.2.5
## [7] readr_1.1.1 tidyr_0.8.1 tibble_1.4.2
## [10] ggplot2_3.0.0 tidyverse_1.2.1 sjPlot_2.6.0
## [13] RePsychLing_0.0.4 lme4_1.1-18.9000 Matrix_1.2-14
##
## loaded via a namespace (and not attached):
## [1] nlme_3.1-137 lubridate_1.7.4 httr_1.3.1
## [4] tools_3.5.1 TMB_1.7.14 backports_1.1.2
## [7] R6_2.2.2 sjlabelled_1.0.14 lazyeval_0.2.1
## [10] colorspace_1.3-2 nnet_7.3-12 withr_2.1.2
## [13] tidyselect_0.2.4 mnormt_1.5-5 emmeans_1.2.4
## [16] compiler_3.5.1 cli_1.0.1 rvest_0.3.2
## [19] xml2_1.2.0 sandwich_2.5-0 effects_4.0-3
## [22] scales_1.0.0 mvtnorm_1.0-8 psych_1.8.4
## [25] ggridges_0.5.1 digest_0.6.17 foreign_0.8-71
## [28] minqa_1.2.4 rmarkdown_1.10.11 stringdist_0.9.5.1
## [31] pkgconfig_2.0.2 htmltools_0.3.6 pwr_1.2-2
## [34] rlang_0.2.2 readxl_1.1.0 htmldeps_0.1.1
## [37] rstudioapi_0.7 bindr_0.1.1 zoo_1.8-4
## [40] jsonlite_1.5 magrittr_1.5 modeltools_0.2-22
## [43] bayesplot_1.6.0 Rcpp_0.12.18 munsell_0.5.0
## [46] prediction_0.3.10 stringi_1.2.4 multcomp_1.4-8
## [49] yaml_2.2.0 snakecase_0.9.2 carData_3.0-1
## [52] MASS_7.3-50 plyr_1.8.4 grid_3.5.1
## [55] parallel_3.5.1 sjmisc_2.7.5 crayon_1.3.4
## [58] lattice_0.20-35 ggeffects_0.5.0 haven_1.1.2
## [61] splines_3.5.1 sjstats_0.17.0 hms_0.4.2
## [64] knitr_1.20 pillar_1.3.0.9000 estimability_1.3
## [67] codetools_0.2-15 stats4_3.5.1 glue_1.3.0
## [70] evaluate_0.11 data.table_1.11.6 nloptr_1.0.4
## [73] cellranger_1.1.0 gtable_0.2.0 assertthat_0.2.0
## [76] coin_1.2-2 xtable_1.8-3 broom_0.5.0
## [79] survey_3.33-2 coda_0.19-1 survival_2.42-6
## [82] glmmTMB_0.2.2.0 TH.data_1.0-9