27 votos

¿Tiene sentido que un efecto fijo se anide dentro de uno aleatorio, o cómo codificar medidas repetidas en R (aov y lmer)?

He estado buscando a través de esta visión general de las fórmulas de lm/lmer R por @conjugateprior y se confundió con la siguiente entrada:

Ahora supongamos que A es aleatorio, pero B es fijo y B está anidado dentro de A.

aov(Y ~ B + Error(A/B), data=d)

Por debajo de la fórmula análoga de modelo mixto lmer(Y ~ B + (1 | A:B), data=d) está previsto para el mismo caso.

No entiendo muy bien lo que significa. En un experimento en el que los sujetos se dividen en varios grupos, tendríamos un factor aleatorio (sujetos) anidado dentro de un factor fijo (grupos). ¿Pero cómo puede anidarse un factor fijo dentro de un factor aleatorio? ¿Algo fijo anidado dentro de sujetos al azar? ¿Es siquiera posible? Si no es posible, ¿tienen sentido estas fórmulas R?


Se menciona que esta visión general se basa parcialmente en la páginas del proyecto de personalidad sobre cómo hacer ANOVA en R se basó en esto tutorial sobre medidas repetidas en R . Allí se da el siguiente ejemplo para las medidas repetidas ANOVA:

aov(Recall ~ Valence + Error(Subject/Valence), data.ex3)

Aquí se presentan los sujetos con palabras de valencia variable (factor con tres niveles) y se mide su tiempo de recuerdo. Cada sujeto se presenta con palabras de los tres niveles de valencia. No veo nada anidado en este diseño (aparece cruzado, según la gran respuesta aquí ), así que ingenuamente pensaría que Error(Subject) o (1 | Subject) debería ser un término aleatorio apropiado en este caso. El Subject/Valence "anidar" (?) es confuso.

Tenga en cuenta que entiendo que Valence es un Dentro del tema factor. Pero creo que es no un factor "anidado" dentro de los sujetos (porque todos los sujetos experimentan los tres niveles de Valence ).


Actualizar. Estoy explorando preguntas en CV sobre la codificación de medidas repetidas de ANOVA en R.

  • Aquí se utiliza lo siguiente para las medidas A fijas dentro del sujeto o repetidas y para las medidas aleatorias subject :

    summary(aov(Y ~ A + Error(subject/A), data = d))
    anova(lme(Y ~ A, random = ~1|subject, data = d))
  • Aquí para dos medidas fijas dentro del sujeto/medidas repetidas de los efectos A y B:

    summary(aov(Y ~ A*B + Error(subject/(A*B)), data=d))
    lmer(Y ~ A*B + (1|subject) + (1|A:subject) + (1|B:subject), data=d) 
  • Aquí para tres efectos dentro del sujeto A, B y C:

    summary(aov(Y ~ A*B*C + Error(subject/(A*B*C)), data=d))
    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)

Mis preguntas:

  1. Por qué Error(subject/A) y no Error(subject) ?
  2. ¿Es (1|subject) o (1|subject)+(1|A:subject) o simplemente (1|A:subject) ?
  3. ¿Es (1|subject) + (1|A:subject) o (1|subject) + (0+A|subject) y por qué no simplemente (A|subject) ?

A estas alturas he visto algunos hilos que afirman que algunas de estas cosas son equivalentes (por ejemplo, la primera: una afirmación de que son los mismos pero una afirmación opuesta sobre el SO el tercero: una especie de una afirmación de que son los mismos ). ¿Lo son?

14voto

Bruce ONeel Puntos 391

En los modelos mixtos, el tratamiento de los factores como fijos o aleatorios, particularmente en conjunción con el hecho de que estén cruzados, parcialmente cruzados o anidados, puede dar lugar a mucha confusión. Además, parece haber diferencias de terminología entre lo que se entiende por anidar en el mundo de los experimentos anova/diseñados y el mundo de los modelos mixtos/multinivel.

No pretendo saber todas las respuestas, y mi respuesta no será completa (y puede producir más preguntas) pero trataré de abordar algunas de las cuestiones aquí:

¿Tiene sentido que un efecto fijo se anide dentro de uno aleatorio, o cómo codificar medidas repetidas en R (aov y lmer)?

(el título de la pregunta)

No, no creo que esto tenga sentido. Cuando estamos tratando con medidas repetidas, entonces normalmente lo que sea que las medidas se repitan será al azar, llamémoslo Subject y en lme4 querremos incluir Subject en el lado derecho de uno o más | en la parte aleatoria de la fórmula. Si tenemos otros efectos aleatorios, entonces estos son cruzados, parcialmente cruzados o anidados - y mi respuesta a este La pregunta se refiere a eso.

La cuestión de estos experimentos diseñados del tipo anova parece ser cómo tratar los factores que normalmente se considerarían fijos, en una situación de medidas repetidas, y las preguntas en el cuerpo del PO hablan de esto:

¿Por qué error (sujeto/A) y no error (sujeto)?

No suelo utilizar aov() así que podría estar perdiéndome algo pero, para mí el Error(subject/A) es muy engañoso en el caso de la pregunta relacionada . Error(subject) de hecho lleva exactamente a los mismos resultados.

¿Es (1|sujeto) o (1|sujeto)+(1|A:sujeto) o simplemente (1|A:sujeto)?

Esto se relaciona con este pregunta. En este caso, todas las siguientes formulaciones de efectos aleatorios conducen exactamente al mismo resultado:

(1|subject)
(1|A:subject)
(1|subject) + (1|A:subject)
(1|subject) + (1|A:subject) + (1|B:subject)

Sin embargo, esto se debe a que el conjunto de datos simulados en la pregunta no tiene ninguna variación dentro de nada, sólo se crea con Y = rnorm(48) . Si tomamos un conjunto de datos reales como el cake en el conjunto de datos de la lme4 encontramos que esto no será generalmente el caso. De la documentación, aquí está el montaje experimental:

Datos sobre el ángulo de rotura de los pasteles de chocolate hechos con tres recetas diferentes y horneados a seis temperaturas diferentes. Se trata de un diseño de parcela dividida en el que las recetas son unidades enteras y las diferentes temperaturas se aplican a las subunidades (dentro de las réplicas). Las notas experimentales sugieren que la numeración de la réplica representa el orden temporal.

Un marco de datos con 270 observaciones sobre las siguientes 5 variables.

replicate un factor con niveles de 1 a 15

recipe un factor con niveles A, B y C

temperature un factor ordenado con niveles 175 < 185 < 195 < 205 < 215 < 225

temp valor numérico de la temperatura de cocción (grados F).

angle un vector numérico que da el ángulo en el que se rompió el pastel.

Por lo tanto, hemos repetido medidas dentro de replicate y también estamos interesados en los factores fijos recipe y temperature (podemos ignorar temp ya que esto es sólo una codificación diferente de temperature ), y podemos visualizar la situación usando xtabs :

> xtabs(~recipe+replicate,data=cake)

     replicate
recipe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
     A 6 6 6 6 6 6 6 6 6  6  6  6  6  6  6
     B 6 6 6 6 6 6 6 6 6  6  6  6  6  6  6
     C 6 6 6 6 6 6 6 6 6  6  6  6  6  6  6

Si recipe eran un efecto aleatorio, diríamos que se trata de efectos aleatorios cruzados. De ninguna manera recipe A pertenecen a replicate 1 o cualquier otra réplica.

> xtabs(~temp+replicate,data=cake)

     replicate
temp  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  175 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  185 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  195 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  205 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  215 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3
  225 3 3 3 3 3 3 3 3 3  3  3  3  3  3  3

De manera similar para temp .

Así que el primer modelo que podríamos encajar es:

> lmm1 <-  lmer(angle ~ recipe * temperature + (1|replicate), cake, REML= FALSE)

Esto tratará a cada uno replicate como la única fuente de variación aleatoria (aparte del residual, por supuesto). Pero podría haber diferencias aleatorias entre las recetas. Así que podríamos estar tentados a incluir recipe como otro efecto aleatorio (cruzado) pero eso sería desacertado porque sólo tenemos 3 niveles de recipe así que no podemos esperar que el modelo estime bien los componentes de la varianza. Así que en lugar de eso podemos usar replicate:recipe como la variable de agrupación que nos permitirá tratar cada combinación de la réplica y la receta como un factor de agrupación separado. Así que mientras que con el modelo anterior tendríamos 15 intercepciones aleatorias para los niveles de replicate ahora tendremos 45 intercepciones aleatorias para cada una de las combinaciones separadas:

lmm3 <-  lmer(angle ~ recipe * temperature + (1|replicate:recipe) , cake, REML= FALSE)

Obsérvese que ahora tenemos (muy ligeramente) resultados diferentes que indican que hay cierta variabilidad aleatoria debido a la receta, pero no mucha.

Podríamos hacer lo mismo con temperature .

Ahora, volviendo a tu pregunta, también preguntaste

Por qué (1|subject) + (1|A:subject) y no (1|subject) + (0+A|subject) o incluso simplemente (A|subject) ?

No estoy del todo seguro de dónde viene esto (usando pendientes aleatorias) - no parece surgir en las 2 preguntas vinculadas - pero mi problema con (1|subject) + (1|A:subject) es que esto es exactamente lo mismo que (1|subject/A) lo que significa que A está anidado dentro de subject lo que a su vez significa (para mí) que cada nivel de A se produce en 1 y sólo 1 nivel de subject lo cual claramente no es el caso aquí.

Probablemente añadiré y/o editaré esta respuesta después de pensarlo un poco más, pero quería anotar mis pensamientos iniciales.

5voto

Awais Tariq Puntos 116

Ooooops. Los comentaristas de la alerta han descubierto que mi post estaba lleno de tonterías. Estaba confundiendo diseños anidados y diseños de medidas repetidas.

Este sitio da un útil desglose de la diferencia entre los diseños de medidas anidadas y repetidas. Curiosamente, el autor muestra los cuadrados medios esperados para fijo dentro de fijo, aleatorio dentro de fijo y aleatorio dentro de aleatorio - pero no fijo dentro de aleatorio. Es difícil imaginar lo que esto significaría - si los factores del nivel A se escogen al azar, entonces el azar gobierna ahora la selección de los factores del nivel B. Si se escogen 5 escuelas al azar de un consejo escolar, y luego se escogen 3 profesores de cada escuela (profesores anidados en las escuelas), los niveles del factor "profesor" son ahora una selección aleatoria de profesores del consejo escolar en virtud de la selección aleatoria de escuelas. No puedo "arreglar" los profesores que tendré en el experimento.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X