Estoy tratando de pasar de usar el ez
paquete a lme
ANOVA para medidas repetidas (ya que espero poder usar contrastes personalizados con lme
).
Siguiendo el consejo de esta publicación de blog , pude configurar el mismo modelo usando ambos aov
(como lo hace ez
, cuando se solicitó) y lme
. Sin embargo, mientras que en el ejemplo dado en esa publicación los valores F coinciden perfectamente entre ( aov
y lme
lo comprobé, y lo hacen), este no es el caso para mis datos. Aunque los valores F son similares, no son lo mismo.
aov
devuelve un valor f de 1.3399, lme
devuelve 1.36264. Estoy dispuesto a aceptar el aov
resultado como el "correcto", ya que esto también es lo que SPSS devuelve (y esto es lo que cuenta para mi campo / supervisor).
Preguntas:
Sería genial si alguien pudiera explicar por qué existe esta diferencia y cómo puedo usarla
lme
para proporcionar resultados creíbles. (También estaría dispuesto a usar enlmer
lugar delme
para este tipo de cosas, si da el resultado "correcto". Sin embargo, no lo he usado hasta ahora).Después de resolver este problema, me gustaría ejecutar un análisis de contraste. Especialmente me interesaría el contraste de agrupar los dos primeros niveles de factor (es decir,
c("MP", "MT")
) y comparar esto con el tercer nivel de factor (es decir,"AC"
). Además, probar el tercer nivel versus el cuarto nivel de factor (es decir,"AC"
versus"DA"
).
Datos:
tau.base <- structure(list(id = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L,
22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L,
19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L), .Label = c("A18K",
"D21C", "F25E", "G25D", "H05M", "H07A", "H08H", "H25C", "H28E",
"H30D", "J10G", "J22J", "K20U", "M09M", "P20E", "P26G", "P28G",
"R03C", "U21S", "W08A", "W15V", "W18R"), class = "factor"), factor = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("MP", "MT", "AC", "DA"
), class = "factor"), value = c(0.9648092876, 0.2128662077, 1,
0.0607615485, 0.9912814024, 3.22e-08, 0.8073856412, 0.1465590332,
0.9981672618, 1, 1, 1, 0.9794401938, 0.6102546108, 0.428651501,
1, 0.1710644881, 1, 0.7639763913, 1, 0.5298989196, 1, 1, 0.7162733447,
0.7871177434, 1, 1, 1, 0.8560509327, 0.3096989662, 1, 8.51e-08,
0.3278862311, 0.0953598576, 1, 1.38e-08, 1.07e-08, 0.545290432,
0.1305621416, 2.61e-08, 1, 0.9834051136, 0.8044114935, 0.7938839461,
0.9910112678, 2.58e-08, 0.5762677121, 0.4750002288, 1e-08, 0.8584252623,
1, 1, 0.6020385797, 8.51e-08, 0.7964935271, 0.2238374288, 0.263377904,
1, 1.07e-08, 0.3160751898, 5.8e-08, 0.3460325565, 0.6842217296,
1.01e-08, 0.9438301877, 0.5578367224, 2.18e-08, 1, 0.9161424562,
0.2924856039, 1e-08, 0.8672987992, 0.9266688748, 0.8356425464,
0.9988463913, 0.2960361777, 0.0285680426, 0.0969063841, 0.6947998266,
0.0138254805, 1, 0.3494775301, 1, 2.61e-08, 1.52e-08, 0.5393467752,
1, 0.9069223275)), .Names = c("id", "factor", "value"), class = "data.frame", row.names = c(1L,
6L, 10L, 13L, 16L, 17L, 18L, 22L, 23L, 24L, 27L, 29L, 31L, 33L,
42L, 43L, 44L, 45L, 54L, 56L, 58L, 61L, 64L, 69L, 73L, 76L, 79L,
80L, 81L, 85L, 86L, 87L, 90L, 92L, 94L, 96L, 105L, 106L, 107L,
108L, 117L, 119L, 121L, 124L, 127L, 132L, 136L, 139L, 142L, 143L,
144L, 148L, 149L, 150L, 153L, 155L, 157L, 159L, 168L, 169L, 170L,
171L, 180L, 182L, 184L, 187L, 190L, 195L, 199L, 202L, 205L, 206L,
207L, 211L, 212L, 213L, 216L, 218L, 220L, 222L, 231L, 232L, 233L,
234L, 243L, 245L, 247L, 250L))
Y el codigo:
require(nlme)
summary(aov(value ~ factor+Error(id/factor), data = tau.base))
anova(lme(value ~ factor, data = tau.base, random = ~1|id))
lme
resultados del libro de texto estándar ANOVA (dado poraov
, y que es lo que necesito), esta no es una opción para mí. En mi artículo quiero informar un ANOVA, no algo así como un ANOVA. Curiosamente, Venables y Ripley (2002, p. 285) muestran que ambos enfoques conducen a estimaciones idénticas. Pero las diferencias en los valores de F me dejan con un mal presentimiento. Además,Anova()
(desdecar
) devuelve solo valores de Chi² para loslme
objetos. Por lo tanto, para mí, mi primera pregunta aún no ha sido respondida.lme
; pero para contrastes,glht
funciona también en loslm
ajustes, no solo en loslme
ajustes. (Además, loslme
resultados son los resultados de los libros de texto estándar también.)lm
un análisis de medidas repetidas. Soloaov
puede manejar medidas repetidas pero devolverá un objeto de claseaovlist
que desafortunadamente no es manejado porglht
.lm
usa el error residual como el término de error para todos los efectos; cuando hay efectos que deberían usar un término de error diferente,aov
es necesario (o en su lugar, usar los resultados delm
para calcular las estadísticas F manualmente). En su ejemplo, el término de error parafactor
es laid:factor
interacción, que es el término de error residual en un modelo aditivo. Compara tus resultados conanova(lm(value~factor+id))
.Respuestas:
Son diferentes porque el modelo lme está obligando a que el componente de varianza
id
sea mayor que cero. Al observar la tabla de anova en bruto para todos los términos, vemos que el error cuadrático medio para id es menor que el de los residuos.Cuando calculamos los componentes de la varianza, esto significa que la varianza debida a id será negativa. Mi memoria de memoria de cuadrados medios esperados es inestable, pero el cálculo es algo así como
Esto suena extraño pero puede suceder. Lo que significa es que los promedios para cada id están más cerca uno del otro de lo que cabría esperar entre sí dada la cantidad de variación residual en el modelo.
En contraste, el uso de lme obliga a que esta varianza sea mayor que cero.
Esto informa desviaciones estándar, cuadrando para obtener los rendimientos de varianza
9.553e-10
para la varianza id y0.1586164
para la varianza residual.Ahora, debe saber que usar
aov
para medidas repetidas solo es apropiado si cree que la correlación entre todos los pares de medidas repetidas es idéntica; Esto se llama simetría compuesta. (Técnicamente, es necesaria la esfericidad pero esto es suficiente por ahora.) Una de las razones para usarlme
sobreaov
es que puede manejar diferentes tipos de estructuras de correlación.En este conjunto de datos en particular, la estimación de esta correlación es negativa; Esto ayuda a explicar cómo el error cuadrático medio para id fue menor que el error cuadrático residual. Una correlación negativa significa que si la primera medición de un individuo estaba por debajo del promedio, en promedio, la segunda estaría por encima del promedio, haciendo que los promedios totales para los individuos fueran menos variables de lo que esperaríamos si hubiera una correlación cero o una correlación positiva.
Usar
lme
con un efecto aleatorio es equivalente a ajustar un modelo de simetría compuesta donde esa correlación se obliga a ser no negativa; Podemos ajustar un modelo donde la correlación puede ser negativa usandogls
:Esta tabla ANOVA concuerda con la tabla del
aov
ajuste y dellm
ajuste.¿OK y eso qué? Bueno, si crees que la varianza
id
y la correlación entre las observaciones no deberían ser negativas, ellme
ajuste es en realidad más apropiado que el ajuste usandoaov
olm
como su estimación de la varianza residual es ligeramente mejor. Sin embargo, si usted cree que la correlación entre las observaciones podría ser negativo,aov
olm
, ogls
es mejor.También puede interesarle explorar más la estructura de correlación; para ver una estructura de correlación general, harías algo como
Aquí solo limito la salida a la estructura de correlación. Los valores 1 a 4 representan los cuatro niveles de
factor
; vemos que el factor 1 y el factor 4 tienen una correlación negativa bastante fuerte:Una forma de elegir entre estos modelos es con una prueba de razón de probabilidad; esto muestra que el modelo de efectos aleatorios y el modelo de estructura de correlación general no son estadísticamente significativamente diferentes; cuando eso sucede, generalmente se prefiere el modelo más simple.
fuente
lme
para obtener los mismos resultados que conaov
(y por lo tanto habilitarlme
para todos los ANOVA), es decir, usar el argumento de correlación en la llamada alme
:anova(lme(value ~ factor, data = tau.base, random = ~1|id, correlation = corCompSymm(form = ~1|id)))
aov
,lme
sin simetría compuesta, ylme
con simetría compuesta) tienen exactamente el mismo número de DFS.anova.lme()
. De su respuesta deduje que la relación entre el ANOVA y los modelos mixtos radica en su estructura de correlación. Luego leí que imponer una estructura de correlación simétrica compuesta conduce a la igualdad entre los dos enfoques. Por eso lo impuse. No tengo idea si esto consume otro df. Sin embargo, el resultado no está de acuerdo con esta interpretación.aov()
se ajusta al modelo mediantelm()
mínimos cuadrados, selme
ajusta mediante la máxima probabilidad. Esa diferencia en cómo se estiman los parámetros del modelo lineal probablemente explica la diferencia (muy pequeña) en sus valores f.En la práctica, (por ejemplo, para la prueba de hipótesis) estas estimaciones son las mismas, por lo que no veo cómo una podría considerarse 'más creíble' que la otra. Provienen de diferentes paradigmas de ajuste de modelos.
Para los contrastes, debe configurar una matriz de contraste para sus factores. Venebles y Ripley muestran cómo hacer esto en la p. 143, p.146 y p.293-294 de la 4ta edición.
fuente
lme
olmer
para calcular un ANOVA (estrictamente hablando) ya que usa un método que es similar pero no idéntico. Entonces, ¿no hay forma de calcular los contrastes para ANOVAs de medida repetida en R?