¿Cuál es el equivalente lme4 :: lmer de un ANOVA de medidas repetidas de tres vías?

11

Mi pregunta se basa en esta respuesta que mostró qué lme4::lmermodelo corresponde a un ANOVA de medidas repetidas bidireccionales:

require(lme4)
set.seed(1234)
d <- data.frame(
    y = rnorm(96),
    subject = factor(rep(1:12, 4)),
    a = factor(rep(1:2, each=24)),
    b = factor(rep(rep(1:2, each=12))),
    c = factor(rep(rep(1:2, each=48))))

# standard two-way repeated measures ANOVA:
summary(aov(y~a*b+Error(subject/(a*b)), d[d$c == "1",]))

# corresponding lmer call:
anova(lmer(y ~ a*b+(1|subject) + (1|a:subject) + (1|b:subject), d[d$c == "1",]))

Mi pregunta ahora es cómo extender esto al caso de un ANOVA de tres vías:

summary(aov(y~a*b*c+Error(subject/(a*b*c)), d))
## [...]
## Error: subject:a:b:c
##           Df Sum Sq Mean Sq F value Pr(>F)
## a:b:c      1  0.101  0.1014   0.115  0.741
## Residuals 11  9.705  0.8822 

La extensión natural, así como sus versiones, no coinciden con los resultados de ANOVA:

anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject), d))
## [...]
## a:b:c  1 0.1014  0.1014  0.1500

anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject) + 
               (1|a:b:subject) + (1|a:c:subject) + (1|b:c:subject), d))
## [...]
## a:b:c  1 0.1014  0.1014  0.1539

Tenga en cuenta que se ha hecho una pregunta muy similar antes . Sin embargo, faltaban datos de ejemplo (que se proporcionan aquí).

Henrik
fuente
¿Estás seguro de que no quieres que sea tu modelo de dos niveles y ~ a*b + (1 + a*b|subject), d[d$c == "1",]? ¿O tal vez me estoy perdiendo algo?
Rasmus Bååth
@ RasmusBååth Adelante e intenta ajustarlo, lmerse quejará ya que los efectos aleatorios ya no se identifican. Inicialmente, también pensé que este es el modelo que quiero, pero no lo es. Si compara el modelo lmer que propongo para el caso de 2 vías con el ANOVA estándar, verá que los valores F coinciden exactamente . Como se dijo en la respuesta que vinculé.
Henrik
3
Para el problema de tres vías, no se espera que el primer lmermodelo que escribió (que excluye las interacciones aleatorias de dos vías) sea ​​equivalente a un ANOVA de 3 vías, sino el segundo que escribió (que incluye el aleatorio interacciones de dos vías) debe ser. En cuanto a por qué hay una discrepancia incluso con ese modelo, tengo el presentimiento de cuál es el problema, iré a cenar y luego veré el conjunto de datos de juguetes un poco más.
Jake Westfall

Respuestas:

18

La respuesta directa a su pregunta es que el último modelo que escribió,

anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject) + 
           (1|a:b:subject) + (1|a:c:subject) + (1|b:c:subject), d))

Creo que es "en principio" correcto, aunque es una parametrización extraña que no siempre parece funcionar bien en la práctica real.

En cuanto a por qué la salida que obtienes de este modelo es discrepante con la aov()salida, creo que hay dos razones.

  1. Su conjunto de datos simulado simple es patológico porque el modelo que mejor se ajusta es uno que implica componentes de varianza negativa, que los modelos mixtos que se ajustan lmer()(y la mayoría de los otros programas de modelos mixtos) no permitirán.
  2. Incluso con un conjunto de datos no patológico, la forma en que configura el modelo, como se mencionó anteriormente, no siempre parece funcionar bien en la práctica, aunque debo admitir que realmente no entiendo por qué. También es generalmente extraño en mi opinión, pero esa es otra historia.

Permítanme demostrar primero la parametrización que prefiero en su ejemplo ANOVA bidireccional inicial. Suponga que su conjunto de datos destá cargado. Su modelo (tenga en cuenta que cambié de códigos ficticios a códigos de contraste) fue:

options(contrasts=c("contr.sum","contr.poly"))
mod1 <- lmer(y ~ a*b+(1|subject) + (1|a:subject) + (1|b:subject),
         data = d[d$c == "1",])
anova(mod1)
# Analysis of Variance Table
#     Df  Sum Sq Mean Sq F value
# a    1 2.20496 2.20496  3.9592
# b    1 0.13979 0.13979  0.2510
# a:b  1 1.23501 1.23501  2.2176

que funcionó bien aquí en que coincidía con la aov()salida. El modelo que prefiero implica dos cambios: codificar manualmente los factores de contraste para que no trabajemos con objetos de factor R (lo que recomiendo hacer en el 100% de los casos) y especificar los efectos aleatorios de manera diferente:

d <- within(d, {
  A <- 2*as.numeric(paste(a)) - 3
  B <- 2*as.numeric(paste(b)) - 3
  C <- 2*as.numeric(paste(c)) - 3
})
mod2 <- lmer(y ~ A*B + (1|subject)+(0+A|subject)+(0+B|subject),
             data = d[d$c == "1",])
anova(mod2)
# Analysis of Variance Table
# Df  Sum Sq Mean Sq F value
# A    1 2.20496 2.20496  3.9592
# B    1 0.13979 0.13979  0.2510
# A:B  1 1.23501 1.23501  2.2176

logLik(mod1)
# 'log Lik.' -63.53034 (df=8)
logLik(mod2)
# 'log Lik.' -63.53034 (df=8)

Los dos enfoques son totalmente equivalentes en el simple problema de 2 vías. Ahora pasaremos a un problema de 3 vías. Mencioné anteriormente que el conjunto de datos de ejemplo que proporcionó fue patológico. Entonces, lo que quiero hacer antes de abordar su conjunto de datos de ejemplo es generar primero un conjunto de datos a partir de un modelo de componentes de varianza real (es decir, donde los componentes de varianza distintos de cero se integran en el modelo verdadero). Primero, mostraré cómo mi parametrización preferida parece funcionar mejor que la que usted propuso. Luego demostraré otra forma de estimar los componentes de la varianza que no impone que no sean negativos. Entonces estaremos en condiciones de ver el problema con el conjunto de datos de ejemplo original.

El nuevo conjunto de datos tendrá una estructura idéntica, excepto que tendremos 50 temas:

set.seed(9852903)
d2 <- expand.grid(A=c(-1,1), B=c(-1,1), C=c(-1,1), sub=seq(50))
d2 <- merge(d2, data.frame(sub=seq(50), int=rnorm(50), Ab=rnorm(50),
  Bb=rnorm(50), Cb=rnorm(50), ABb=rnorm(50), ACb=rnorm(50), BCb=rnorm(50)))
d2 <- within(d2, {
  y <- int + (1+Ab)*A + (1+Bb)*B + (1+Cb)*C + (1+ABb)*A*B +
    (1+ACb)*A*C + (1+BCb)*B*C + A*B*C + rnorm(50*2^3)
  a <- factor(A)
  b <- factor(B)
  c <- factor(C)
})

Las relaciones F que queremos igualar son:

aovMod1 <- aov(y ~ a*b*c + Error(factor(sub)/(a*b*c)), data = d2)
tab <- lapply(summary(aovMod1), function(x) x[[1]][1,2:4])
do.call(rbind, tab)
#                          Sum Sq Mean Sq F value
# Error: factor(sub)       439.48    8.97        
# Error: factor(sub):a     429.64  429.64  32.975
# Error: factor(sub):b     329.48  329.48  27.653
# Error: factor(sub):c     165.44  165.44  17.924
# Error: factor(sub):a:b   491.33  491.33  49.694
# Error: factor(sub):a:c   305.46  305.46  41.703
# Error: factor(sub):b:c   466.09  466.09  40.655
# Error: factor(sub):a:b:c 392.76  392.76 448.101

Aquí están nuestros dos modelos:

mod3 <- lmer(y ~ a*b*c + (1|sub)+(1|a:sub)+(1|b:sub)+(1|c:sub)+
  (1|a:b:sub)+(1|a:c:sub)+(1|b:c:sub), data = d2)
anova(mod3)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# a      1  32.73   32.73  34.278
# b      1  21.68   21.68  22.704
# c      1  12.53   12.53  13.128
# a:b    1  60.93   60.93  63.814
# a:c    1  50.38   50.38  52.762
# b:c    1  57.30   57.30  60.009
# a:b:c  1 392.76  392.76 411.365

mod4 <- lmer(y ~ A*B*C + (1|sub)+(0+A|sub)+(0+B|sub)+(0+C|sub)+
  (0+A:B|sub)+(0+A:C|sub)+(0+B:C|sub), data = d2)
anova(mod4)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# A      1  28.90   28.90  32.975
# B      1  24.24   24.24  27.653
# C      1  15.71   15.71  17.924
# A:B    1  43.56   43.56  49.694
# A:C    1  36.55   36.55  41.703
# B:C    1  35.63   35.63  40.655
# A:B:C  1 392.76  392.76 448.101

logLik(mod3)
# 'log Lik.' -984.4531 (df=16)
logLik(mod4)
# 'log Lik.' -973.4428 (df=16)

Como podemos ver, solo el segundo método coincide con la salida de aov(), aunque el primer método está al menos en el estadio. El segundo método también logra una mayor probabilidad de registro. No estoy seguro de por qué estos dos métodos dan resultados diferentes, ya que nuevamente creo que son equivalentes "en principio", pero tal vez sea por algunas razones numéricas / computacionales. O tal vez estoy equivocado y no son equivalentes, incluso en principio.

Ahora mostraré otra forma de estimar los componentes de varianza basados ​​en ideas ANOVA tradicionales. Básicamente tomaremos las ecuaciones cuadráticas medias esperadas para su diseño, sustituiremos los valores observados de los cuadrados medios y resolveremos los componentes de la varianza. Para obtener los cuadrados medios esperados, utilizaremos una función R que escribí hace unos años, llamada EMS(), que se documenta AQUÍ . A continuación, supongo que la función ya está cargada.

# prepare coefficient matrix
r <- 1 # number of replicates
s <- 50 # number of subjects
a <- 2 # number of levels of A
b <- 2 # number of levels of B
c <- 2 # number of levels of C
CT <- EMS(r ~ a*b*c*s, random="s")
expr <- strsplit(CT[CT != ""], split="")
expr <- unlist(lapply(expr, paste, collapse="*"))
expr <- sapply(expr, function(x) eval(parse(text=x)))
CT[CT != ""] <- expr
CT[CT == ""] <- 0
mode(CT) <- "numeric"
# residual variance and A*B*C*S variance are confounded in
# this design, so remove the A*B*C*S variance component
CT <- CT[-15,-2]
CT
#        VarianceComponent
# Effect  e b:c:s a:c:s a:b:s a:b:c c:s b:s a:s b:c a:c a:b s   c   b   a
#   a     1     0     0     0     0   0   0   4   0   0   0 0   0   0 200
#   b     1     0     0     0     0   0   4   0   0   0   0 0   0 200   0
#   c     1     0     0     0     0   4   0   0   0   0   0 0 200   0   0
#   s     1     0     0     0     0   0   0   0   0   0   0 8   0   0   0
#   a:b   1     0     0     2     0   0   0   0   0   0 100 0   0   0   0
#   a:c   1     0     2     0     0   0   0   0   0 100   0 0   0   0   0
#   b:c   1     2     0     0     0   0   0   0 100   0   0 0   0   0   0
#   a:s   1     0     0     0     0   0   0   4   0   0   0 0   0   0   0
#   b:s   1     0     0     0     0   0   4   0   0   0   0 0   0   0   0
#   c:s   1     0     0     0     0   4   0   0   0   0   0 0   0   0   0
#   a:b:c 1     0     0     0    50   0   0   0   0   0   0 0   0   0   0
#   a:b:s 1     0     0     2     0   0   0   0   0   0   0 0   0   0   0
#   a:c:s 1     0     2     0     0   0   0   0   0   0   0 0   0   0   0
#   b:c:s 1     2     0     0     0   0   0   0   0   0   0 0   0   0   0
#   e     1     0     0     0     0   0   0   0   0   0   0 0   0   0   0

# get mean squares
(MSmod <- summary(aov(y ~ a*b*c*factor(sub), data=d2)))
#                   Df Sum Sq Mean Sq
# a                  1  429.6   429.6
# b                  1  329.5   329.5
# c                  1  165.4   165.4
# factor(sub)       49  439.5     9.0
# a:b                1  491.3   491.3
# a:c                1  305.5   305.5
# b:c                1  466.1   466.1
# a:factor(sub)     49  638.4    13.0
# b:factor(sub)     49  583.8    11.9
# c:factor(sub)     49  452.2     9.2
# a:b:c              1  392.8   392.8
# a:b:factor(sub)   49  484.5     9.9
# a:c:factor(sub)   49  358.9     7.3
# b:c:factor(sub)   49  561.8    11.5
# a:b:c:factor(sub) 49   42.9     0.9
MS <- MSmod[[1]][,"Mean Sq"]

# solve
ans <- solve(CT, MS)
cbind(rev(ans[c(grep("e",names(ans)),grep("s",names(ans)))])/
        c(1,2,2,2,4,4,4,1))
# s     1.0115549
# a:s   1.5191114
# b:s   1.3797937
# c:s   1.0441351
# a:b:s 1.1263331
# a:c:s 0.8060402
# b:c:s 1.3235126
# e     0.8765093
summary(mod4)
# Random effects:
#  Groups   Name        Variance Std.Dev.
#  sub      (Intercept) 1.0116   1.0058  
#  sub.1    A           1.5191   1.2325  
#  sub.2    B           1.3798   1.1746  
#  sub.3    C           1.0441   1.0218  
#  sub.4    A:B         1.1263   1.0613  
#  sub.5    A:C         0.8060   0.8978  
#  sub.6    B:C         1.3235   1.1504  
#  Residual             0.8765   0.9362  
# Number of obs: 400, groups:  sub, 50

Bien, ahora volveremos al ejemplo original. Las relaciones F que estamos tratando de igualar son:

aovMod2 <- aov(y~a*b*c+Error(subject/(a*b*c)), data = d)
tab <- lapply(summary(aovMod2), function(x) x[[1]][1,2:4])
do.call(rbind, tab)
#                       Sum Sq Mean Sq F value
# Error: subject       13.4747  1.2250        
# Error: subject:a      1.4085  1.4085  1.2218
# Error: subject:b      3.1180  3.1180  5.5487
# Error: subject:c      6.3809  6.3809  5.2430
# Error: subject:a:b    1.5706  1.5706  2.6638
# Error: subject:a:c    1.0907  1.0907  1.5687
# Error: subject:b:c    1.4128  1.4128  2.3504
# Error: subject:a:b:c  0.1014  0.1014  0.1149

Aquí están nuestros dos modelos:

mod5 <- lmer(y ~ a*b*c + (1|subject)+(1|a:subject)+(1|b:subject)+
  (1|c:subject)+(1|a:b:subject)+(1|a:c:subject)+(1|b:c:subject),
  data = d)
anova(mod5)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# a      1 0.8830  0.8830  1.3405
# b      1 3.1180  3.1180  4.7334
# c      1 3.8062  3.8062  5.7781
# a:b    1 1.5706  1.5706  2.3844
# a:c    1 0.9620  0.9620  1.4604
# b:c    1 1.4128  1.4128  2.1447
# a:b:c  1 0.1014  0.1014  0.1539

mod6 <- lmer(y ~ A*B*C + (1|subject)+(0+A|subject)+(0+B|subject)+
  (0+C|subject)+(0+A:B|subject)+(0+A:C|subject)+
  (0+B:C|subject), data = d)
anova(mod6)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# a      1 0.8830  0.8830  1.3405
# b      1 3.1180  3.1180  4.7334
# c      1 3.8062  3.8062  5.7781
# a:b    1 1.5706  1.5706  2.3844
# a:c    1 0.9620  0.9620  1.4604
# b:c    1 1.4128  1.4128  2.1447
# a:b:c  1 0.1014  0.1014  0.1539

logLik(mod5)
# 'log Lik.' -135.0351 (df=16)
logLik(mod6)
# 'log Lik.' -134.9191 (df=16)

En este caso, los dos modelos arrojan básicamente los mismos resultados, aunque el segundo método tiene una probabilidad logarítmica muy ligeramente superior. Ninguno de los dos métodos coincide aov(). Pero echemos un vistazo a lo que obtenemos cuando resolvemos los componentes de varianza como lo hicimos anteriormente, utilizando el procedimiento ANOVA que no restringe los componentes de varianza para que no sean negativos (pero que solo pueden usarse en diseños balanceados sin predictores continuos y sin datos faltantes; los supuestos clásicos de ANOVA).

# prepare coefficient matrix
r <- 1 # number of replicates
s <- 12 # number of subjects
a <- 2 # number of levels of A
b <- 2 # number of levels of B
c <- 2 # number of levels of C
CT <- EMS(r ~ a*b*c*s, random="s")
expr <- strsplit(CT[CT != ""], split="")
expr <- unlist(lapply(expr, paste, collapse="*"))
expr <- sapply(expr, function(x) eval(parse(text=x)))
CT[CT != ""] <- expr
CT[CT == ""] <- 0
mode(CT) <- "numeric"
# residual variance and A*B*C*S variance are confounded in
# this design, so remove the A*B*C*S variance component
CT <- CT[-15,-2]

# get mean squares
MSmod <- summary(aov(y ~ a*b*c*subject, data=d))
MS <- MSmod[[1]][,"Mean Sq"]

# solve
ans <- solve(CT, MS)
cbind(rev(ans[c(grep("e",names(ans)),grep("s",names(ans)))])/
        c(1,2,2,2,4,4,4,1))
# s      0.04284033
# a:s    0.03381648
# b:s   -0.04004005
# c:s    0.04184887
# a:b:s -0.03657940
# a:c:s -0.02337501
# b:c:s -0.03514457
# e      0.88224787
summary(mod6)
# Random effects:
#  Groups    Name        Variance  Std.Dev. 
#  subject   (Intercept) 7.078e-02 2.660e-01
#  subject.1 A           6.176e-02 2.485e-01
#  subject.2 B           0.000e+00 0.000e+00
#  subject.3 C           6.979e-02 2.642e-01
#  subject.4 A:B         1.549e-16 1.245e-08
#  subject.5 A:C         4.566e-03 6.757e-02
#  subject.6 B:C         0.000e+00 0.000e+00
#  Residual              6.587e-01 8.116e-01
# Number of obs: 96, groups:  subject, 12

Ahora podemos ver qué tiene de patológico el ejemplo original. El modelo que mejor se ajusta es aquel que implica que varios de los componentes de varianza aleatoria son negativos. Pero lmer()(y la mayoría de los otros programas de modelos mixtos) restringe las estimaciones de los componentes de varianza para que no sean negativas. Esto generalmente se considera una restricción sensata, ya que las variaciones, por supuesto, nunca pueden ser realmente negativas. Sin embargo, una consecuencia de esta restricción es que los modelos mixtos no pueden representar con precisión conjuntos de datos que presentan correlaciones intraclase negativas, es decir, conjuntos de datos donde las observaciones del mismo grupo son menores(en lugar de más) similar en promedio a las observaciones extraídas al azar del conjunto de datos y, en consecuencia, donde la varianza dentro del grupo excede sustancialmente la varianza entre grupos. Dichos conjuntos de datos son conjuntos de datos perfectamente razonables que ocasionalmente se encontrarán en el mundo real (¡o simularán accidentalmente!), Pero no pueden ser descritos de manera sensata por un modelo de componentes de varianza, porque implican componentes de varianza negativos. Sin embargo, estos modelos pueden describirlos "de manera no sensata", si el software lo permite. aov()lo permite lmer()no.

Jake Westfall
fuente
+1. Re I am not sure why these two methods give different results, as again I think they are "in principle" equivalent, but maybe it is for some numerical/computational reasons- ¿tal vez entiendes esto mejor ahora (dos años después)? Traté de averiguar cuál es la diferencia, pero tampoco lo entiendo ...
dice ameba Reinstate Monica
@amoeba Mi pensamiento actual sigue siendo bastante similar al de entonces: AFAIK, los dos modelos son estadísticamente equivalentes (en el sentido de que hacen las mismas predicciones sobre los datos e implican los mismos errores estándar), aunque los efectos aleatorios están parametrizados diferentemente. Creo que las diferencias observadas, que parecen ocurrir solo a veces, se deben solo a problemas computacionales. En particular, sospecho que podría jugar con la configuración del optimizador (como variar los puntos de partida o usar criterios de convergencia más estrictos) hasta que los dos modelos devuelvan exactamente la misma respuesta.
Jake Westfall
Gracias por su respuesta. No estoy muy convencido: intenté jugar con la configuración del optimizador y no pude cambiar nada en los resultados; Mi impresión es que ambos modelos están bien convergentes. Podría hacer esta pregunta por separado en algún momento.
ameba dice Reinstate Monica
Sigo investigando este problema y me di cuenta de lo siguiente: tan pronto como los factores de medidas repetidas tienen más de dos niveles, ¡estos dos métodos se vuelven completamente diferentes! Si Atiene niveles continuación, estima un solo parámetro de varianza, mientras que las estimaciones parámetros de varianza y correlaciones entre ellos. Según tengo entendido, el ANOVA clásico estima solo un parámetro de varianza y, por lo tanto, debería ser equivalente al primer método, no al segundo. ¿Derecho? Pero para ambos métodos estiman un parámetro, y todavía no estoy muy seguro de por qué no están de acuerdo. k - 1 k ( k - 1 ) / 2 k = 2k(1|A:sub)(0+A|sub)k1k(k1)/2k=2
ameba dice Reinstate Monica
Volviendo a este problema ... Noté que para el caso de dos factores donde dos lmerllamadas producen una anova()salida idéntica , las variaciones de efectos aleatorios son, sin embargo, bastante diferentes: ver VarCorr(mod1)y VarCorr(mod2). No entiendo bien por qué sucede esto; ¿Vos si? Para mod3y mod4, uno puede ver que cuatro de las siete variaciones para mod3son en realidad iguales a cero (para mod4las siete no son cero); esta "singularidad" mod3probablemente es la razón por la cual las tablas anova difieren. Aparte de eso, ¿cómo utilizar la "mejor forma" si ay btenía más de dos niveles?
ameba dice Reinstate Monica
1

Son a, b, cfijos o de efectos aleatorios? Si se arreglan, su sintaxis simplemente será

summary(aov(y~a*b*c+Error(subject), d))
Error: subject
          Df Sum Sq Mean Sq F value Pr(>F)
Residuals 11  13.47   1.225               

Error: Within
          Df Sum Sq Mean Sq F value  Pr(>F)   
a          1   1.41   1.408   1.730 0.19235   
b          1   3.12   3.118   3.829 0.05399 . 
c          1   6.38   6.381   7.836 0.00647 **
a:b        1   1.57   1.571   1.929 0.16889   
a:c        1   1.09   1.091   1.339 0.25072   
b:c        1   1.41   1.413   1.735 0.19168   
a:b:c      1   0.10   0.101   0.124 0.72518   
Residuals 77  62.70   0.814  

library(lmerTest)
anova(lmer(y ~ a*b*c+(1|subject), data=d))
Analysis of Variance Table of type 3  with  Satterthwaite 
approximation for degrees of freedom
      Sum Sq Mean Sq NumDF  DenDF F.value   Pr(>F)   
a     1.4085  1.4085     1 76.991  1.7297 0.192349   
b     3.1180  3.1180     1 76.991  3.8291 0.053995 . 
c     6.3809  6.3809     1 76.991  7.8363 0.006469 **
a:b   1.5706  1.5706     1 76.991  1.9289 0.168888   
a:c   1.0907  1.0907     1 76.991  1.3394 0.250716   
b:c   1.4128  1.4128     1 76.991  1.7350 0.191680   
a:b:c 0.1014  0.1014     1 76.991  0.1245 0.725183  
Masato Nakazawa
fuente
Son efectos fijos. Sin embargo, el modelo ANOVA que usted ajusta no es el modelo que parece ser el modelo ANOVA clásico de medidas repetidas, consulte, por ejemplo, aquí . Vea los estratos de error en su caso y el mío.
Henrik
1
En realidad, cómo lo hacen es incorrecto. Si tiene un diseño de medidas repetidas factoriales completamente cruzado (o diseño factorial de bloques al azar), debe obtener solo 1 término de error, aparte de subject, para todos los efectos (es decir, Within). Ver Diseño Experimental: Procedimientos para las Ciencias del Comportamiento (2013) de Kirk, capítulo 10 (p. 458) o mi publicación aquí
Masato Nakazawa
Dejemos de lado esta pregunta por el momento y supongamos que el modelo que ajusté sería el modelo correcto. ¿Cómo encajarías esto usando lmer? Sin embargo, obtendré mi copia de Kirk (solo en la segunda edición) y veré qué dice.
Henrik
Tengo curiosidad por saber qué piensas del capítulo de Kirk. Creo que el número del capítulo en la 2ª ed. es diferente. Mientras tanto, intentaré adaptarme a diferentes lmermodelos. La mejor manera de verificar el ajuste del modelo es verificar sus dfs usando lmerTestporque se supone que la aproximación KR le dará exactdfs y, por lo tanto, valores p.
Masato Nakazawa
1
Tengo la segunda edición de Kirk, donde creo que la discusión relevante está en las páginas 443-449, que discute un ejemplo de dos vías (no de tres vías). Los cuadrados medios esperados, ya sea suponiendo la aditividad de A y B o no, se dan en la p. 447. Suponiendo que A y B son fijos y los sujetos / bloques son aleatorios, podemos ver en los cuadrados medios esperados enumerados por Kirk bajo "modelo no aditivo" que las pruebas de A, B y AB implican diferentes términos de error, a saber, Las interacciones relevantes con el bloque / sujeto. El mismo principio se extiende al presente ejemplo de tres vías.
Jake Westfall, el