[R-es] Comparaciones múltiples en ANOVA anidadp

José Trujillo Carmona trujillo en unex.es
Sab Feb 4 20:05:32 CET 2012


Dispongo de un experimento en el que cinco tratamientos ha sido 
aplicados a cinco grupos de voluntarios.

En cada grupo había tres personas y a cada persona se le tomaron 3 medidas,

En total dispongo de 45 medidas, pero evidentemente no son 
independientes entre sí. Si no tomo en cuenta que las medidas de la 
misma persona son más parecidas entre sí (bloques anidados) estaría 
incurriendo en pseudoreplicación.

Los datos y el análisis se podrían hacer de la siguiente forma:

Generación de datos para ejemplo:
 > Medidas <- as.data.frame(matrix(rnorm(45*1, mean=10, sd=1), ncol=1))
 > colnames(Medidas) <- "VR"
 > Medidas$Tratamiento <- as.factor(rep(1:5,rep(9,5)))
 > Medidas$Individuo <- as.factor(rep(1:15,rep(3,15)))

El análisis de la varianza sugerido podría ser:

 > AnovaModel.1 <-aov(VR ~ Tratamiento + Tratamiento/Individuo, 
data=Medidas)
 > summary(AnovaModel.1)
                       Df Sum Sq Mean Sq F value Pr(>F)
Tratamiento            4   1.15  0.2871    0.25  0.907
Tratamiento:Individuo 10  12.39  1.2395    1.08  0.407
Residuals             30  34.44  1.1479


Pero este análisis incurre en evidente pseudoreplicación: El valor F es 
el cociente entre el Cuadrado Medio del Tratamiento y los Residuos como 
si las 45 mediciones fuesen independientes entre sí.

Para tener en cuenta que la variabilidad inducida en la respuesta por 
los Tratamientos debe ser medida entre individuos y no entre mediciones 
el análisis procedente podría ser:

 > AnovaModel.2 <- aov(VR ~ Tratamiento + Error(Individuo),data=Medidas)
 > summary(AnovaModel.2)

Error: Individuo
             Df Sum Sq Mean Sq F value Pr(>F)
Tratamiento  4  1.148  0.2871   0.232  0.914
Residuals   10 12.395  1.2395

Error: Within
           Df Sum Sq Mean Sq F value Pr(>F)
Residuals 30  34.44   1.148

Pero el objeto AnovaModel.2 no es un objeto aov sino aovlist:
 > attr(AnovaModel.2,"class")
[1] "aovlist" "listof"

Como consecuencia no puedo utilizarlo ni para la función glht ni para la 
función TukeyHSD.

Puedo "extraer" un aov:

 > ls.str(pat="AnovaModel.2")
AnovaModel.2 : List of 3
  $ (Intercept):List of 9
  $ Individuo  :List of 9
  $ Within     :List of 6
 > AnovaModel.3<-AnovaModel.2$Individuo
 > attr(AnovaModel.3,"class")
[1] "aov" "lm"

A este modelo ya puedo pedirle límites de confianza adecuados para los 
parámetros del modelo (diferencias entre Tratamientos):

 > confint(AnovaModel.3)
                      2.5 %    97.5 %
Tratamiento[T.2] -1.485182 0.8535804
Tratamiento[T.3] -1.072891 1.2658714
Tratamiento[T.4] -1.258890 1.0798723
Tratamiento[T.5] -1.453857 0.8849054

Pero el nuevo modelo sigue siendo inválido para glht o para TuleyHSD:

 > Pares <- glht(AnovaModel.3, linfct = mcp(Tratamiento = "Tukey"))
[1] ERROR:   no 'model.matrix' method for 'model' found!

 > TukeyHSD(AnovaModel.3, "Tratamiento")
[2] ERROR:  this fit does not inherit from "lm"

Para no alargarme en mis indagaciones. Para los análisis de la varianza 
podría haber utilizado las funciones lme del paquete nlme o lmer del 
paquete lme4, pero tampoco proporcionan objetos válidos para glht o 
TukeyHSD.

¿Alguien sabe como abordar las comparaciones múltiples con medidas 
repetidas o anova anidado?

Gracias de antemano.

-- 
_____---^---_____

Univ. de Extremadura
Dept. Matemáticas.
Despacho B29
Tf: + 34 924 289 300
Ext. 86823



Más información sobre la lista de distribución R-help-es