Existen varias razones por las que los diseños no balanceados requieren una estrategia diferente de suma de cuadrados:
Es último fenómeno se conoce como “confounding”, y la solución en ANOVA es \(SS-II\), la cual permite simplemente medir la varianza “faltante” producto de la falta de balance.
Hay muchas razones por las cuales los estudios pueden quedar fuera de balance, desde fallas de diseño, errores o accidentes experimentales u observacionales y hasta dificultades logísticas.
Existe otro tipo de diseños no balanceados con efectos fijos cuando por ejemplo faltan algunas combinaciones de los niveles de los dos factores experimentales (Figura 1.1). Este tipo de diseños también se pueden analizar con \(SS-II\).
La \(SS-II\) difiere principalmente de \(SS-I\) en que no está basada de la adición secuencial de factores para su comparación. En cambio, \(SS-I\) utiliza como base de comparación de efectos la suma de cuadrados más compleja que omita los efectos de ese factor, de modo que el efecto del factor \(A\), \(SS(A)\), se mide en relación a \(SS(B)\), y viceversa:
\(SS-II\) no está disponible en R por default. Se encuentra implementada en el paquete car
preinstalado en cualquier distribución de R y funciona de la siguiente manera:
m1 <- aov(x ~ A * B, datos); car::Anova(m1, type = "II")
Para este tutorial utilizaremos la misma base de datos ToothGrowth
pero eliminaremos selectivamente observaciones o combinaciones de niveles de alguno de los factores. Comenzaremos con la pérdida de unidades experimentales haciendo la comparativa entre \(SS-I\) y \(SS-II\).
Comenzaremos por cargar la base de datos y eliminar 20 datos aleatoriamente y ver cómo queda el balance después de la eliminación
set.seed(213)
datos <- ToothGrowth
datos$dose <- as.factor(paste0("D", datos$dose))
datos <- datos[sample(1:60, 40), ]
table(datos$supp)
##
## OJ VC
## 21 19
table(datos$dose)
##
## D0.5 D1 D2
## 15 17 8
Como podemos apreciar el diseño quedó fuera de balance en varios de los niveles de los factores. Haremos primero ANOVA con suma de cuadrados tipo I:
modelo.1 <- lm(len ~ supp * dose, data = datos)
anova(modelo.1)
## Analysis of Variance Table
##
## Response: len
## Df Sum Sq Mean Sq F value Pr(>F)
## supp 1 196.45 196.45 15.8233 0.000345 ***
## dose 2 1332.58 666.29 53.6665 3.027e-11 ***
## supp:dose 2 53.28 26.64 2.1457 0.132568
## Residuals 34 422.12 12.42
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Podemos ver que los resultados son muy parecidos a los del análisis balanceado, pero en este caso ya no podemos demostrar si la interacción es significativa.
Comparemos entonces los resultados con los que se obtienen utilizando suma de cuadrados tipo II:
library(car)
## Loading required package: carData
Anova(modelo.1, type = "II")
## Anova Table (Type II tests)
##
## Response: len
## Sum Sq Df F value Pr(>F)
## supp 219.10 1 17.6478 0.0001814 ***
## dose 1332.58 2 53.6665 3.027e-11 ***
## supp:dose 53.28 2 2.1457 0.1325679
## Residuals 422.12 34
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Aquí cambiaron un poco los niveles de significancia, pero lo que sí cambió mucho fueron las sumas de cuadrados de supp
, pues estas ya no son las que se usan como referencia, ahora estas están calculadas en relación a dose
. Veamos entonces cómo \(SS-II\) es más conservador que \(SS-I\) para estimar la suma de cuadrados.
Tenemos que la varianza total según \(SS-I\) es:
# supp dose supp:dose residuales
196.45 + 1332.58 + 53.28 + 422.12
## [1] 2004.43
y que la varianza explicada por el modelo con \(SS-II\) es:
# supp dose supp:dose residuales
219.10 + 1332.58 + 53.28 + 422.12
## [1] 2027.08
Con lo que podemos ver que la varianza total según \(SS-II\) es mayor que \(SS-I\), lo que altera los valores de \(P\) para los diferentes factores, en especial supp
que explicó una mayor varianza en comparación con dose
en \(SS-II\) que en \(SS-I\).
Volvamos a cargar la base de datos para eliminar los datos de las combinaciones OJ-D1
:
datos.2 <- ToothGrowth
datos.2$dose <- as.factor(paste0("D", datos.2$dose))
datos.2$len[datos.2$supp == "OJ" & datos.2$dose == "D1"] <- NA
datos.2 <- na.omit(datos.2)
Y hagamos un gráfico de cajas para verificar que falten esas combinaciones de tratamientos:
boxplot(len ~ supp + dose, data = datos.2)
Entonces haremos el análisis de este diseño desbalanceado, viendo las diferencias entre \(SS\) I y \(SS\) II:
modelo.2 <- lm(len ~ supp * dose, data = datos.2)
anova(modelo.2)
## Analysis of Variance Table
##
## Response: len
## Df Sum Sq Mean Sq F value Pr(>F)
## supp 1 86.30 86.30 6.7601 0.01257 *
## dose 2 2401.51 1200.76 94.0628 < 2e-16 ***
## supp:dose 1 71.02 71.02 5.5636 0.02274 *
## Residuals 45 574.45 12.77
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Anova(modelo.2, type = "II")
## Note: model has aliased coefficients
## sums of squares computed by model comparison
## Anova Table (Type II tests)
##
## Response: len
## Sum Sq Df F value Pr(>F)
## supp 66.82 1 5.2346 0.02689 *
## dose 2401.51 2 94.0628 < 2e-16 ***
## supp:dose 71.02 1 5.5636 0.02274 *
## Residuals 574.45 45
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Eliminando los datos aleatoriamente:
datos.3 <- datos.2[sample(1:nrow(datos.2), 40), ]
table(datos.3$supp)
##
## OJ VC
## 16 24
table(datos.3$dose)
##
## D0.5 D1 D2
## 16 8 16
El análisis con \(SS-I\):
modelo.3 <- lm(len ~ supp * dose, data = datos.3)
anova(modelo.3)
## Analysis of Variance Table
##
## Response: len
## Df Sum Sq Mean Sq F value Pr(>F)
## supp 1 37.76 37.76 3.0742 0.0883 .
## dose 2 1863.60 931.80 75.8554 1.887e-13 ***
## supp:dose 1 27.01 27.01 2.1989 0.1471
## Residuals 35 429.94 12.28
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El análisis con \(SS-II\):
Anova(modelo.3, type = "II")
## Note: model has aliased coefficients
## sums of squares computed by model comparison
## Anova Table (Type II tests)
##
## Response: len
## Sum Sq Df F value Pr(>F)
## supp 30.42 1 2.4764 0.1246
## dose 1863.60 2 75.8554 1.887e-13 ***
## supp:dose 27.01 1 2.1989 0.1471
## Residuals 429.94 35
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Podemos ver entonces que al haber perdido grados de libertad perdimos la capacidad de rechazar la hipótesis nula del tratamiento supp
y la interacción supp : dose
en ambos tipos de suma de cuadrados, pero el valor de \(P\) para supp
fue mayor en \(SS-I\).
Ahora, finalmente veamos qué pasa si especificamos el modelo invirtiendo el orden de los factores:
modelo.4 <- lm(len ~ dose * supp, data = datos.3)
Anova(modelo.4, type = "II")
## Note: model has aliased coefficients
## sums of squares computed by model comparison
## Anova Table (Type II tests)
##
## Response: len
## Sum Sq Df F value Pr(>F)
## dose 1863.60 2 75.8554 1.887e-13 ***
## supp 30.42 1 2.4764 0.1246
## dose:supp 27.01 1 2.1989 0.1471
## Residuals 429.94 35
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pudimos ver que \(SS\) \(I\) y \(II\) sí producen diferentes resultados y que la pérdida de unidades experimentales y/o combinaciones de tratamientos sí afecta las conclusiones biológicas a las que llegamos independientemente de la estategia de \(SS\) que tengamos. Debido a que \(SS-II\) es menos sensible a la falta de balance y al orden en que se especifican los términos en los modelos, se recomienda ampliamente el uso de \(SS-II\) en comparación con \(SS-I\), incluso si los diseños factoriales están balanceados.
Dirígete al classroom del curso para completar la actividad correspondiente a las secciones de diseños balanceados y no balanceados de la tercera unidad.