[R-es] Comparaciones múltiples en ANOVA anidadp
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