Continuamos con ejemplos de análisis de la varianza con R. En este caso trabajaremos con diseño de experimentos anidados. Definimos que un factor B está anidado a un factor A si para cada nivel de B tenemos un único nivel de A asociado; es decir, A dos niveles, B tres niveles: $A_1 (B_1, B_2, B_3)$; $A_2 (B_4, B_5, B_6)$. En este caso se dice que el nivel B está anidado a A. El modelo matemático viene expresado como:
$$ Y_{ijk} = \mu + \alpha_i + \beta_{j(i)} + \epsilon_{ijk} $$
Donde $\beta_{j(i)}$ es el efecto anidado del nivel $j$-ésimo anidado sobre $i$. La tabla ANOVA será:
Trabajemos con un ejemplo las sentencias adecuadas para el análisis con R:
Ejemplo 13.1:
Se disponen de las mediciones realizadas por un geólogo del nivel de calcio en cinco tipos de terreno. Se recogen muestras del contenido en calcio en cuatro localidades distintas, de forma que hay cuatro localidades por cada tipo de terreno. Introducimos los datos en R:
options(prompt = "") # modificamos el prompt
terreno <- as.factor(rep(1:5, each = 16, len = 80))
localidad <- as.factor(rep(1:4, each = 4, len = 80))
Para los factores hemos empleado la función rep, que nos repite valores un determinado número de veces, muy práctico para crear vectores de factores. Introducimos las mediciones tomadas por el geólogo y unimos los 3 vectores de datos:
calcio <- c(6, 2, 0, 8, 13, 3, 9, 8, 1, 10, 0, 6, 7, 4, 7, 9, 10, 9, 7, 12, 2, 1, 1, 10, 4, 1, 7, 9, 0, 3, 4,
1, 0, 0, 5, 5, 10, 11, 6, 7, 8, 5, 0, 7, 7, 2, 5, 4, 11, 0, 6, 4, 5, 10, 8, 3, 0, 8, 6, 5, 1, 8, 9,
4, 1, 4, 7, 9, 6, 7, 0, 3, 3, 0, 2, 2, 3, 7, 4, 0)
estudio <- data.frame(cbind(terreno, localidad, calcio))
boxplot(calcio ~ terreno * localidad)
Ya disponemos de un data.frame de trabajo que nos permite realizar el estudio. Además, hemos realizado un gráfico para estudiar la medición de calcio en los 16 factores que forman parte del estudio. El factor localidad está anidado con el factor terreno, ya que cada nivel del factor localidad se combina con un único nivel del factor terreno; en este caso, el número de niveles de localidad anidados en cada nivel de terreno es el mismo ($b=4$). El modelo matemático viene expresado por $Y_{ijk} = \mu + \alpha_i + \beta_{j(i)} + \epsilon_{ijk}$, donde $\beta_{j(i)}$ significa que para cada nivel $i$ de terreno tenemos $j$ niveles de localidad (expresión del anidamiento).
La programación del modelo con R será:
ejemplo.13.1 <- aov(calcio ~ terreno + localidad %in% terreno) # %in% expresa el anidamiento
summary(ejemplo.13.1)
A la vista de los resultados, no obtenemos diferencias significativas para los niveles de terreno; el estadístico $F$ toma un valor muy alto, por lo que no se puede rechazar la hipótesis nula de igualdad de medias por cada tipo de terreno. Por otro lado, para un valor de 0,1 no podemos rechazar la igualdad de medias del anidamiento; es necesario realizar el test para cada terreno. Veamos las medias:
print(model.tables(ejemplo.13.1, "means"), digits = 3)
Hacemos para cada terreno el análisis del factor anidado localidad:
estudio1 <- subset(estudio, terreno == 1)
estudio2 <- subset(estudio, terreno == 2)
estudio3 <- subset(estudio, terreno == 3)
estudio4 <- subset(estudio, terreno == 4)
estudio5 <- subset(estudio, terreno == 5)
summary(aov(calcio ~ localidad, data = estudio1))
summary(aov(calcio ~ localidad, data = estudio2))
summary(aov(calcio ~ localidad, data = estudio3))
summary(aov(calcio ~ localidad, data = estudio4))
summary(aov(calcio ~ localidad, data = estudio5))
La función subset nos crea un subconjunto de datos en función de una condición. Hacemos 5 subconjuntos y analizamos el factor localidad. Vemos que para el terreno 2 se rechaza la igualdad de medias de la localidad.