Mi pregunta se basa en esta respuesta que mostró qué lme4::lmer
modelo 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í).
y ~ a*b + (1 + a*b|subject), d[d$c == "1",]
? ¿O tal vez me estoy perdiendo algo?lmer
se 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é.lmer
modelo 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.Respuestas:
La respuesta directa a su pregunta es que el último modelo que escribió,
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.lmer()
(y la mayoría de los otros programas de modelos mixtos) no permitirán.Permítanme demostrar primero la parametrización que prefiero en su ejemplo ANOVA bidireccional inicial. Suponga que su conjunto de datos
d
está cargado. Su modelo (tenga en cuenta que cambié de códigos ficticios a códigos de contraste) fue: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: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:
Las relaciones F que queremos igualar son:
Aquí están nuestros dos modelos:
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.Bien, ahora volveremos al ejemplo original. Las relaciones F que estamos tratando de igualar son:
Aquí están nuestros dos modelos:
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).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 permitelmer()
no.fuente
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 ...A
tiene 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 = 2(1|A:sub)
(0+A|sub)
lmer
llamadas producen unaanova()
salida idéntica , las variaciones de efectos aleatorios son, sin embargo, bastante diferentes: verVarCorr(mod1)
yVarCorr(mod2)
. No entiendo bien por qué sucede esto; ¿Vos si? Paramod3
ymod4
, uno puede ver que cuatro de las siete variaciones paramod3
son en realidad iguales a cero (paramod4
las siete no son cero); esta "singularidad"mod3
probablemente es la razón por la cual las tablas anova difieren. Aparte de eso, ¿cómo utilizar la "mejor forma" sia
yb
tenía más de dos niveles?Son
a
,b
,c
fijos o de efectos aleatorios? Si se arreglan, su sintaxis simplemente seráfuente
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ílmer
? Sin embargo, obtendré mi copia de Kirk (solo en la segunda edición) y veré qué dice.lmer
modelos. La mejor manera de verificar el ajuste del modelo es verificar sus dfs usandolmerTest
porque se supone que la aproximación KR le daráexact
dfs y, por lo tanto, valores p.