En la clase anterior se estudió ANOVA como una técnica para comparar medias. Esa descripción es correcta, pero incompleta. En esta sesión se dará un paso conceptual más importante: ANOVA será reinterpretado como un modelo lineal.
Esta reinterpretación permitirá comprender que:
Idea central del modelo
\[ \text{Datos}=\text{Modelo}+\text{Error} \]
ANOVA, regresión y ANCOVA se distinguen principalmente por la forma en que se construye el componente denominado modelo.
Al finalizar la sesión, debemos ser capaces de:
El documento utiliza paquetes disponibles en CRAN.
ANOVA suele presentarse como una prueba para determinar si varias medias son iguales. Sin embargo, desde la perspectiva del modelamiento, la pregunta es más general:
¿La incorporación de un factor permite explicar una parte relevante de la variabilidad observada en la respuesta?
Supóngase una variable respuesta \(Y\) y un factor con tres niveles. El modelo de ANOVA de un factor puede escribirse como:
\[ Y_{ij}=\mu+\tau_i+\varepsilon_{ij} \]
donde:
La expresión anterior ya tiene la estructura:
\[ \text{Dato}=\text{Modelo}+\text{Error} \]
El modelo no contiene únicamente una prueba. Contiene una representación de cómo se supone que se originan los datos.
El modelo reducido sostiene que todos los individuos comparten la misma media:
\[ Y_{ij}=\mu+\varepsilon_{ij} \]
El modelo completo incorpora diferencias entre grupos:
\[ Y_{ij}=\mu+\tau_i+\varepsilon_{ij} \]
La prueba F del ANOVA evalúa si la reducción del error lograda por el modelo completo es suficientemente grande en relación con el error que todavía permanece.
\[ F= \frac{ \text{variabilidad explicada por el factor}/gl_{\text{factor}} }{ \text{variabilidad residual}/gl_{\text{error}} } \]
Distinción de efectos
En esta primera formulación se asumirá que el factor es fijo: los métodos A, B y C son exactamente los niveles que interesa comparar. La inferencia se dirige a esos niveles específicos.
Si los niveles hubieran sido seleccionados aleatoriamente de una población más amplia de niveles, el factor sería aleatorio y la pregunta ya no sería cuál nivel tiene mayor media, sino cuánta variabilidad existe entre niveles.
Se estudiará el desempeño final de estudiantes asignados a tres métodos de enseñanza. También se registró su calificación inicial y la escuela a la que pertenecen.
El diseño permitirá ilustrar tres componentes:
set.seed(2026)
n_escuelas <- 12
n_por_metodo_escuela <- 7
escuelas <- factor(
paste0("E", sprintf("%02d", 1:n_escuelas))
)
datos <- expand.grid(
escuela = escuelas,
metodo = factor(
c("A", "B", "C"),
levels = c("A", "B", "C")
),
estudiante = 1:n_por_metodo_escuela
)
efecto_escuela <- rnorm(
n_escuelas,
mean = 0,
sd = 3.5
)
names(efecto_escuela) <- escuelas
media_pretest <- c(
A = 60,
B = 67,
C = 74
)
efecto_metodo <- c(
A = 0,
B = 4,
C = 7
)
datos$pretest <- rnorm(
nrow(datos),
mean = media_pretest[datos$metodo],
sd = 8
)
datos$postest <- 20 +
0.65 * datos$pretest +
efecto_metodo[datos$metodo] +
efecto_escuela[datos$escuela] +
rnorm(
nrow(datos),
mean = 0,
sd = 5
)
datos$pretest_c <- datos$pretest - mean(datos$pretest)
head(datos)El conjunto de datos representa un estudio educativo hipotético en el que se desea comparar el desempeño de estudiantes que reciben tres métodos de enseñanza diferentes: A, B y C. Los estudiantes pertenecen a distintas escuelas y cuentan con una medición académica antes y después de la aplicación del método de enseñanza.
La simulación considera que el resultado final de un estudiante puede estar relacionado con tres componentes principales:
El objetivo será determinar si existen diferencias entre los métodos de enseñanza después de controlar estadísticamente el nivel inicial de los estudiantes. Además, se considerará que los estudiantes pertenecientes a una misma escuela pueden presentar resultados similares debido a que comparten docentes, instalaciones, recursos, contexto social y otras condiciones institucionales.
Por estas razones, el conjunto de datos permitirá desarrollar un análisis de covarianza con efectos mixtos, en el que el método de enseñanza y el pretest serán tratados como efectos fijos, mientras que la escuela será incorporada como un efecto aleatorio.
Se simulan datos correspondientes a:
Por lo tanto, el número total de observaciones es:
[ 12 = 252]
Cada fila del conjunto de datos representa a un estudiante perteneciente a una escuela y asignado a uno de los tres métodos de enseñanza.
La variable escuela identifica la institución educativa
a la que pertenece cada estudiante. Las escuelas se representan mediante
los códigos E01, E02, …, E12.
Esta variable es categórica y se almacena como un factor en R.
La escuela se utilizará como un efecto aleatorio, debido a que las doce escuelas pueden considerarse una muestra de una población más amplia de instituciones educativas. No se pretende comparar individualmente una escuela contra otra, sino reconocer que existen diferencias institucionales que pueden influir en el desempeño de los estudiantes.
Cada escuela recibe un efecto aleatorio generado mediante una distribución normal:
[ u_j N(0,3.5^2)]
donde (u_j) representa el efecto particular de la escuela (j).
Un valor positivo indica que la escuela tiende a presentar resultados superiores al promedio, mientras que un valor negativo indica resultados inferiores, manteniendo constantes el método y el nivel inicial de los estudiantes.
La inclusión de esta variable permite reconocer que las observaciones no son completamente independientes, ya que los estudiantes de una misma escuela comparten características institucionales.
La variable metodo identifica el método educativo
recibido por cada estudiante. Esta variable tiene tres categorías:
El método A se utiliza como categoría de referencia.
En la simulación se establecen los siguientes efectos:
[ _A = 0]
[ _B = 4]
[ _C = 7]
Esto significa que, después de controlar el pretest y el efecto de la escuela, se espera que:
El método se utilizará como un efecto fijo, debido a que el interés principal del análisis es comparar específicamente estos tres métodos de enseñanza.
La pregunta que se buscará responder es:
¿Existen diferencias estadísticamente significativas en el postest entre los métodos A, B y C, después de controlar el nivel inicial de los estudiantes?
La variable estudiante contiene los números del 1 al 7
para identificar a los estudiantes dentro de cada combinación de escuela
y método.
Este número no constituye un identificador único para todo el conjunto de datos, debido a que se repite entre escuelas y métodos. La identificación completa de cada observación está determinada por la combinación de:
Esta variable se utiliza principalmente para organizar la estructura del conjunto de datos. En el análisis propuesto no será incorporada directamente como predictor, debido a que cada estudiante cuenta con una única observación de pretest y postest.
La variable pretest representa la calificación obtenida
por cada estudiante antes de recibir el método de enseñanza.
Esta variable se utiliza como una medida del nivel académico inicial. En la simulación, los grupos presentan diferentes medias iniciales:
[ _{,A}=60]
[ _{,B}=67]
[ _{,C}=74]
Las puntuaciones individuales se generan alrededor de estas medias con una desviación estándar de 8 puntos.
Esto significa que los grupos no comienzan en condiciones equivalentes. Los estudiantes asignados al método C presentan, en promedio, un nivel inicial mayor que los estudiantes de los métodos A y B.
Este desequilibrio se introduce deliberadamente para mostrar una situación en la que un ANOVA aplicado únicamente al postest podría producir conclusiones engañosas. Una diferencia observada en el postest podría deberse parcialmente al método de enseñanza, pero también podría deberse a diferencias que ya existían antes de aplicar los métodos.
El pretest será utilizado como una covariable cuantitativa. Su función será ajustar la comparación entre los métodos de enseñanza según el nivel inicial de cada estudiante.
La pregunta asociada a esta variable es:
¿Cómo cambia el postest cuando aumenta la calificación inicial del estudiante?
En la simulación se establece una pendiente de 0.65, lo que significa que por cada punto adicional en el pretest se espera un aumento promedio de 0.65 puntos en el postest, manteniendo constantes el método y la escuela.
La variable postest representa la calificación obtenida
por cada estudiante después de recibir el método de enseñanza.
Esta será la variable dependiente o variable respuesta del análisis.
El postest se genera mediante el siguiente modelo:
[ Y_{ijk} =======
20+ 0.65X_{ijk}+ k+ u_j+ {ijk} ]
donde:
El término residual se genera mediante:
[ _{ijk}N(0,5^2)]
Este componente representa la variabilidad individual que no puede explicarse mediante el pretest, el método de enseñanza o la escuela.
Puede incluir diferencias relacionadas con la motivación, asistencia, hábitos de estudio, condiciones familiares, errores de medición y otras características no observadas.
El propósito principal será explicar la variación del postest mediante el nivel inicial, el método de enseñanza y la escuela.
La variable pretest_c corresponde al pretest centrado
alrededor de su media general. Se calcula mediante:
[ _i = _i-]
Cuando pretest_c es igual a cero, el estudiante tiene
una puntuación inicial igual a la media general del conjunto de
datos.
Los valores negativos indican que el estudiante se encuentra por debajo de la media inicial, mientras que los valores positivos indican que se encuentra por encima.
El centrado del pretest no modifica la relación entre el pretest y el postest, tampoco cambia las diferencias estimadas entre los métodos. Su principal beneficio consiste en mejorar la interpretación del intercepto.
Cuando se utiliza el pretest sin centrar, el intercepto representa el postest esperado para un estudiante con un pretest igual a cero. Esta situación puede carecer de sentido práctico si una puntuación de cero no se encuentra dentro del rango observado.
Al utilizar pretest_c, el intercepto representa el
postest esperado para un estudiante con un nivel inicial promedio,
perteneciente al método de referencia y a una escuela cuyo efecto
aleatorio es igual a cero.
Con este conjunto de datos se pretende mostrar la transición entre el ANOVA, el ANCOVA y los modelos mixtos.
En primer lugar, podría realizarse un ANOVA simple para comparar las medias del postest entre los métodos:
## Df Sum Sq Mean Sq F value Pr(>F)
## metodo 2 9934 4967 76.6 <0.0000000000000002 ***
## Residuals 249 16141 65
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Sin embargo, este modelo no considera que los estudiantes comienzan con diferentes niveles de desempeño. Debido a que el método C contiene estudiantes con un pretest promedio mayor, una parte de su ventaja en el postest podría deberse a esa diferencia inicial y no exclusivamente al método utilizado.
Posteriormente, se ajustará un modelo ANCOVA:
##
## Call:
## lm(formula = postest ~ pretest_c + metodo, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.666 -3.901 0.414 3.941 17.799
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 63.0092 0.7568 83.26 < 0.0000000000000002 ***
## pretest_c 0.6758 0.0498 13.57 < 0.0000000000000002 ***
## metodoB 2.6199 1.0105 2.59 0.01 *
## metodoC 5.7351 1.1808 4.86 0.0000021 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.11 on 248 degrees of freedom
## Multiple R-squared: 0.645, Adjusted R-squared: 0.64
## F-statistic: 150 on 3 and 248 DF, p-value: <0.0000000000000002
Este modelo permitirá comparar los métodos después de controlar estadísticamente el pretest.
Finalmente, se incorporará la estructura jerárquica de los datos mediante un modelo mixto:
modelo_mixto <- lmer(
postest ~ pretest_c + metodo + (1 | escuela),
data = datos
)
summary(modelo_mixto)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: postest ~ pretest_c + metodo + (1 | escuela)
## Data: datos
##
## REML criterion at convergence: 1571
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.221 -0.650 -0.015 0.660 3.587
##
## Random effects:
## Groups Name Variance Std.Dev.
## escuela (Intercept) 10.8 3.29
## Residual 27.3 5.22
## Number of obs: 252, groups: escuela, 12
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 63.0307 1.1514 18.8258 54.74 < 0.0000000000000002 ***
## pretest_c 0.6787 0.0437 240.0435 15.51 < 0.0000000000000002 ***
## metodoB 2.5981 0.8666 237.4488 3.00 0.003 **
## metodoC 5.6924 1.0194 238.2003 5.58 0.000000064 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) prtst_ metodB
## pretest_c 0.273
## metodoB -0.426 -0.368
## metodoC -0.444 -0.612 0.593
En este modelo:
pretest_c representa el efecto fijo del nivel
inicial;metodo representa el efecto fijo del tratamiento
educativo;(1 | escuela) representa un intercepto aleatorio para
cada escuela;postest representa la variable dependiente.El análisis permitirá responder las siguientes preguntas:
¿Existe una relación significativa entre el pretest y el postest?
¿Existen diferencias entre los métodos de enseñanza después de controlar el nivel inicial de los estudiantes?
¿Cuál método presenta el mayor postest ajustado?
¿Cuánta variabilidad del postest se debe a diferencias entre escuelas?
¿Los estudiantes pertenecientes a una misma escuela presentan resultados más similares entre sí que los estudiantes de escuelas diferentes?
¿Cambian las conclusiones sobre los métodos cuando se incorpora el pretest como covariable?
¿Cambian los errores estándar y las pruebas de significancia cuando se reconoce la agrupación de estudiantes dentro de las escuelas?
El conjunto de datos combina variables de diferentes niveles.
En el nivel individual se encuentran:
En el nivel institucional se encuentra:
Esta estructura puede representarse como:
[ ]
Por ello, el modelo mixto resulta más apropiado que un modelo lineal tradicional cuando se desea reconocer que los estudiantes de una misma institución comparten condiciones comunes.
El análisis no se limitará a preguntar cuál grupo presenta la media de postest más alta. Se buscará estimar cuál método produce mejores resultados cuando los estudiantes son comparados bajo un nivel inicial equivalente y cuando se controla la variabilidad atribuible a las escuelas.
datos |>
group_by(metodo) |>
summarise(
n = n(),
media_pretest = mean(pretest),
sd_pretest = sd(pretest),
media_postest = mean(postest),
sd_postest = sd(postest),
.groups = "drop"
)En los datos simulados, los grupos no inician con el mismo nivel promedio. El grupo C presenta un pretest mayor. Por tanto, una comparación exclusiva de las medias finales mezclará dos fuentes de explicación:
El siguiente gráfico muestra:
media_general <- mean(datos$postest)
ggplot(
datos,
aes(
x = metodo,
y = postest
)
) +
geom_jitter(
width = 0.12,
alpha = 0.35,
size = 1.7
) +
stat_summary(
fun = mean,
geom = "point",
size = 4,
shape = 18
) +
geom_hline(
yintercept = media_general,
linetype = 2,
linewidth = 0.9
) +
labs(
title = "ANOVA: variación entre grupos y dentro de los grupos",
subtitle = "Los rombos representan medias de grupo y la línea discontinua la media general",
x = "Método de enseñanza",
y = "Calificación final"
) +
theme_minimal(base_size = 13)La variabilidad total puede descomponerse como:
\[ SS_{\text{total}} = SS_{\text{entre grupos}} + SS_{\text{dentro de grupos}} \]
En lenguaje de modelos:
\[ SS_{\text{total}} = SS_{\text{modelo}} + SS_{\text{error}} \]
## Df Sum Sq Mean Sq F value Pr(>F)
## metodo 2 9934 4967 76.6 <0.0000000000000002 ***
## Residuals 249 16141 65
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
lm()##
## Call:
## lm(formula = postest ~ metodo, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -27.948 -5.624 0.524 5.806 18.271
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 58.153 0.878 66.20 < 0.0000000000000002 ***
## metodoB 7.546 1.242 6.07 0.0000000046 ***
## metodoC 15.378 1.242 12.38 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.05 on 249 degrees of freedom
## Multiple R-squared: 0.381, Adjusted R-squared: 0.376
## F-statistic: 76.6 on 2 and 249 DF, p-value: <0.0000000000000002
Las funciones aov() y lm() producen el
mismo ajuste porque el ANOVA de efectos fijos es un modelo lineal con un
predictor categórico.
## RSS_aov RSS_lm
## 16141 16141
## [1] TRUE
## [1] TRUE
Conclusión
ANOVA no es matemáticamente ajeno a la regresión. Es una regresión en la que los predictores representan categorías.
Una computadora no interpreta directamente etiquetas como A, B y C. El factor se representa mediante columnas numéricas en una matriz de diseño.
## (Intercept) metodoB metodoC
## 1 1 0 0
## 2 1 0 0
## 3 1 0 0
## 4 1 0 0
## 5 1 0 0
## 6 1 0 0
## 7 1 0 0
## 8 1 0 0
## 9 1 0 0
## 10 1 0 0
Con codificación de tratamiento, A funciona como categoría de referencia. El modelo es:
\[ Y_i = \beta_0 + \beta_1D_{Bi} + \beta_2D_{Ci} + \varepsilon_i \]
donde:
\[ D_{Bi}= \begin{cases} 1,& \text{si el individuo pertenece a B}\\ 0,& \text{en otro caso} \end{cases} \]
y análogamente para \(D_C\).
## (Intercept) metodoB metodoC
## 58.153 7.546 15.378
La interpretación es:
Se puede comprobar con las medias observadas.
## A B C
## 58.15 65.70 73.53
c(
media_A = coef(modelo_anova)[1],
diferencia_B_A = medias_metodo["B"] - medias_metodo["A"],
diferencia_C_A = medias_metodo["C"] - medias_metodo["A"]
)## media_A.(Intercept) diferencia_B_A.B diferencia_C_A.C
## 58.153 7.546 15.378
Regresión, ANOVA y ANCOVA pueden representarse mediante:
\[ \mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \]
donde:
Para el Modelo Lineal General clásico se supone:
\[ \boldsymbol{\varepsilon} \sim N(\mathbf{0},\sigma^2\mathbf{I}) \]
La estimación por mínimos cuadrados es:
\[ \widehat{\boldsymbol{\beta}} = (\mathbf{X}^{\top}\mathbf{X})^{-1} \mathbf{X}^{\top}\mathbf{Y} \]
No es necesario realizar manualmente toda la operación para utilizar el modelo, pero sí comprender que las diferencias entre ANOVA, regresión y ANCOVA se encuentran principalmente en las columnas incluidas en \(\mathbf{X}\).
La covariable puede no ser ortogonal al factor. Esto ocurre, por ejemplo, cuando las medias del pretest son distintas entre métodos.
metodo_h <- datos$metodo
contrasts(metodo_h) <- contr.helmert(3)
X_ancova <- model.matrix(
~ metodo_h + pretest_c,
data = datos
)
round(
crossprod(X_ancova),
2
)## (Intercept) metodo_h1 metodo_h2 pretest_c
## (Intercept) 252 0.0 0 0.0
## metodo_h1 0 168.0 0 612.4
## metodo_h2 0 0.0 504 1785.0
## pretest_c 0 612.4 1785 23615.9
Los productos cruzados entre las columnas del factor y la covariable ya no son necesariamente cero.
Puente conceptual
En un ANOVA balanceado y ortogonal, cada efecto puede recibir una porción claramente separable de la variación.
En ANCOVA, el factor y la covariable pueden compartir información. Por eso se habla de un efecto del método ajustado por el pretest y se vuelve importante especificar qué modelo se está comparando.
La regresión simple sustituye el predictor categórico por una variable cuantitativa:
\[ Y_i = \beta_0 + \beta_1X_i + \varepsilon_i \]
##
## Call:
## lm(formula = postest ~ pretest_c, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -16.892 -3.691 -0.229 3.988 18.392
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 65.7942 0.4013 163.9 <0.0000000000000002 ***
## pretest_c 0.8212 0.0415 19.8 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.37 on 250 degrees of freedom
## Multiple R-squared: 0.611, Adjusted R-squared: 0.609
## F-statistic: 392 on 1 and 250 DF, p-value: <0.0000000000000002
ggplot(
datos,
aes(
x = pretest,
y = postest
)
) +
geom_point(
alpha = 0.4
) +
geom_smooth(
method = "lm",
se = TRUE
) +
labs(
title = "Regresión lineal: un predictor cuantitativo",
x = "Calificación inicial",
y = "Calificación final"
) +
theme_minimal(base_size = 13)La pendiente indica cuánto cambia, en promedio, el postest por cada punto adicional en el pretest.
Una precisión importante
Que el pretest varíe entre estudiantes no lo convierte en un “efecto aleatorio” en el sentido de los modelos mixtos.
En esta ANCOVA, la pendiente del pretest es un efecto fijo: se estima un único coeficiente común para la población de interés.
Un efecto aleatorio implica que el coeficiente correspondiente se modela como una realización de una distribución, por ejemplo, una variación aleatoria entre escuelas.
ANCOVA incorpora ambos tipos de predictores:
\[ Y_{ij} = \beta_0 + \tau_i + \beta_1X_{ij} + \varepsilon_{ij} \]
En este ejemplo:
metodo es categórico;pretest_c es cuantitativo;postest es la respuesta.##
## Call:
## lm(formula = postest ~ metodo + pretest_c, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.666 -3.901 0.414 3.941 17.799
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 63.0092 0.7568 83.26 < 0.0000000000000002 ***
## metodoB 2.6199 1.0105 2.59 0.01 *
## metodoC 5.7351 1.1808 4.86 0.0000021 ***
## pretest_c 0.6758 0.0498 13.57 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.11 on 248 degrees of freedom
## Multiple R-squared: 0.645, Adjusted R-squared: 0.64
## F-statistic: 150 on 3 and 248 DF, p-value: <0.0000000000000002
La matriz de diseño contiene simultáneamente:
## (Intercept) metodoB metodoC pretest_c
## 1 1 0 0 -9.270
## 2 1 0 0 -9.305
## 3 1 0 0 -27.873
## 4 1 0 0 3.278
## 5 1 0 0 -2.567
## 6 1 0 0 -5.758
## 7 1 0 0 -13.936
## 8 1 0 0 -1.980
## 9 1 0 0 -10.128
## 10 1 0 0 -8.816
Con la covariable centrada:
metodoB representa la diferencia ajustada entre B y
A;metodoC representa la diferencia ajustada entre C y
A;pretest_c representa el cambio esperado en el postest
por cada punto adicional de pretest, manteniendo constante el
método.Modelo reducido:
\[ Y=\beta_0+\beta_1X+\varepsilon \]
Modelo completo:
\[ Y=\beta_0+\tau+\beta_1X+\varepsilon \]
Las medias observadas resumen lo ocurrido en cada grupo sin igualar el pretest.
Las medias ajustadas responden:
¿Qué postest se esperaría en cada método si los grupos se compararan en el mismo valor de pretest?
## metodo emmean SE df lower.CL upper.CL
## A 63.0 0.757 248 61.5 64.5
## B 65.6 0.667 248 64.3 66.9
## C 68.7 0.754 248 67.3 70.2
##
## Confidence level used: 0.95
medias_crudas <- datos |>
group_by(metodo) |>
summarise(
media = mean(postest),
.groups = "drop"
) |>
mutate(
tipo = "Media observada"
)
medias_ajustadas <- as.data.frame(
emm_metodo
) |>
transmute(
metodo,
media = emmean,
tipo = "Media ajustada"
)
bind_rows(
medias_crudas,
medias_ajustadas
) |>
ggplot(
aes(
x = metodo,
y = media,
group = tipo,
linetype = tipo,
shape = tipo
)
) +
geom_point(
size = 3
) +
geom_line() +
labs(
title = "Medias observadas y medias ajustadas",
subtitle = "El ajuste controla las diferencias iniciales en el pretest",
x = "Método",
y = "Calificación final estimada",
linetype = NULL,
shape = NULL
) +
theme_minimal(base_size = 13) +
theme(
legend.position = "bottom"
)## contrast estimate SE df t.ratio p.value
## A - B -2.62 1.01 248 -2.593 0.0272
## A - C -5.74 1.18 248 -4.857 <0.0001
## B - C -3.12 1.00 248 -3.100 0.0061
##
## P value adjustment: tukey method for comparing a family of 3 estimates
Las comparaciones deben interpretarse sobre las medias ajustadas, no únicamente sobre las medias crudas.
ggplot(
datos,
aes(
x = pretest,
y = postest,
linetype = metodo,
shape = metodo
)
) +
geom_point(
alpha = 0.45
) +
geom_smooth(
method = "lm",
formula = y ~ x,
se = FALSE
) +
labs(
title = "ANCOVA con pendientes aproximadamente paralelas",
subtitle = "El modelo aditivo supone una pendiente común para la covariable",
x = "Calificación inicial",
y = "Calificación final",
linetype = "Método",
shape = "Método"
) +
theme_minimal(base_size = 13)En un ANCOVA tradicional, las diferencias verticales entre las rectas representan diferencias ajustadas entre métodos.
El ANCOVA aditivo supone que el efecto del pretest es el mismo en todos los métodos.
Para evaluarlo se incorpora una interacción:
\[ Y = \beta_0 + \tau + \beta_1X + \tau X + \varepsilon \]
modelo_pendientes <- lm(
postest ~ metodo * pretest_c,
data = datos
)
anova(
modelo_ancova,
modelo_pendientes
)Si la interacción no resulta significativa, el modelo con pendiente común suele ser una representación parsimoniosa.
Si la interacción es significativa, el efecto del método cambia con el nivel de la covariable.
No debe tratarse una interacción significativa como una simple molestia.
La heterogeneidad de pendientes es un resultado sustantivo: indica que las diferencias entre métodos dependen del nivel inicial del estudiante.
Se simulará un segundo conjunto de datos en el que cada método presenta una pendiente diferente.
set.seed(2035)
datos_heterogeneos <- data.frame(
metodo = factor(
rep(
c("A", "B", "C"),
each = 45
),
levels = c("A", "B", "C")
)
)
datos_heterogeneos$pretest_c <- rnorm(
nrow(datos_heterogeneos),
mean = 0,
sd = 10
)
interceptos <- c(
A = 64,
B = 67,
C = 70
)
pendientes <- c(
A = 0.30,
B = 0.65,
C = 1.00
)
datos_heterogeneos$postest <- interceptos[datos_heterogeneos$metodo] +
pendientes[datos_heterogeneos$metodo] *
datos_heterogeneos$pretest_c +
rnorm(
nrow(datos_heterogeneos),
mean = 0,
sd = 4.5
)ggplot(
datos_heterogeneos,
aes(
x = pretest_c,
y = postest,
linetype = metodo,
shape = metodo
)
) +
geom_point(
alpha = 0.45
) +
geom_smooth(
method = "lm",
se = FALSE
) +
labs(
title = "Interacción entre método y covariable",
subtitle = "Las diferencias entre métodos cambian según el pretest",
x = "Pretest centrado",
y = "Postest",
linetype = "Método",
shape = "Método"
) +
theme_minimal(base_size = 13)modelo_heterogeneo_aditivo <- lm(
postest ~ metodo + pretest_c,
data = datos_heterogeneos
)
modelo_heterogeneo_interaccion <- lm(
postest ~ metodo * pretest_c,
data = datos_heterogeneos
)
anova(
modelo_heterogeneo_aditivo,
modelo_heterogeneo_interaccion
)##
## Call:
## lm(formula = postest ~ metodo * pretest_c, data = datos_heterogeneos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.287 -2.407 0.133 3.184 11.278
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 64.5499 0.6833 94.47 < 0.0000000000000002 ***
## metodoB 2.3362 0.9708 2.41 0.0175 *
## metodoC 5.5363 0.9715 5.70 0.00000007798 ***
## pretest_c 0.2218 0.0786 2.82 0.0055 **
## metodoB:pretest_c 0.4761 0.1000 4.76 0.00000508537 ***
## metodoC:pretest_c 0.7593 0.1080 7.03 0.00000000011 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.58 on 129 degrees of freedom
## Multiple R-squared: 0.737, Adjusted R-squared: 0.727
## F-statistic: 72.3 on 5 and 129 DF, p-value: <0.0000000000000002
## metodo pretest_c.trend SE df lower.CL upper.CL
## A 0.222 0.0786 129 0.0662 0.377
## B 0.698 0.0618 129 0.5757 0.820
## C 0.981 0.0740 129 0.8347 1.128
##
## Confidence level used: 0.95
emmeans(
modelo_heterogeneo_interaccion,
~ metodo | pretest_c,
at = list(
pretest_c = c(-10, 0, 10)
)
)## pretest_c = -10:
## metodo emmean SE df lower.CL upper.CL
## A 62.3 1.050 129 60.2 64.4
## B 59.9 0.987 129 58.0 61.9
## C 60.3 1.080 129 58.1 62.4
##
## pretest_c = 0:
## metodo emmean SE df lower.CL upper.CL
## A 64.5 0.683 129 63.2 65.9
## B 66.9 0.690 129 65.5 68.2
## C 70.1 0.691 129 68.7 71.5
##
## pretest_c = 10:
## metodo emmean SE df lower.CL upper.CL
## A 66.8 1.030 129 64.7 68.8
## B 73.9 0.861 129 72.2 75.6
## C 79.9 0.935 129 78.0 81.8
##
## Confidence level used: 0.95
Cuando existe interacción, no tiene sentido afirmar que un método es superior en todos los niveles del pretest sin examinar valores específicos.
En diseños no ortogonales, las sumas de cuadrados secuenciales dependen del orden de los términos.
Para un modelo sin interacción, las sumas de cuadrados tipo II permiten evaluar cada efecto principal después de controlar los demás efectos principales.
La selección del tipo de suma de cuadrados no debe hacerse como una regla mecánica. Debe responder a:
El eta cuadrado parcial para el método puede calcularse como:
\[ \eta_p^2 = \frac{ SS_{\text{método}} }{ SS_{\text{método}}+SS_{\text{error}} } \]
ss_metodo <- tabla_tipo2[
"metodo",
"Sum Sq"
]
ss_error <- sum(
residuals(modelo_ancova)^2
)
eta_parcial_metodo <- ss_metodo /
(ss_metodo + ss_error)
eta_parcial_metodo## [1] 0.08723
El tamaño del efecto debe interpretarse junto con:
La distinción no depende únicamente de si una variable aparece como texto o como número. Depende de la pregunta inferencial y de cómo se conceptualizan sus niveles.
Un factor es fijo cuando interesa comparar específicamente los niveles observados.
Ejemplo:
La pregunta es:
¿Cuáles métodos presentan diferencias?
Los parámetros se estiman directamente:
\[ \tau_A,\tau_B,\tau_C \]
Un factor es aleatorio cuando sus niveles representan una muestra de una población más amplia.
Ejemplo:
La pregunta es:
¿Cuánta variabilidad existe entre escuelas?
El efecto de escuela se modela como:
\[ b_j\sim N(0,\sigma_b^2) \]
No interesa necesariamente ordenar las escuelas. Interesa estimar \(\sigma_b^2\).
El modelo contiene simultáneamente:
Para este ejemplo:
\[ Y_{ijk} = \beta_0 + \tau_i + \beta_1X_{ijk} + b_j + \varepsilon_{ijk} \]
donde:
modelo_mixto <- lmerTest::lmer(
postest ~ metodo + pretest_c + (1 | escuela),
data = datos,
REML = TRUE
)
summary(
modelo_mixto
)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: postest ~ metodo + pretest_c + (1 | escuela)
## Data: datos
##
## REML criterion at convergence: 1571
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.221 -0.650 -0.015 0.660 3.587
##
## Random effects:
## Groups Name Variance Std.Dev.
## escuela (Intercept) 10.8 3.29
## Residual 27.3 5.22
## Number of obs: 252, groups: escuela, 12
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 63.0307 1.1514 18.8258 54.74 < 0.0000000000000002 ***
## metodoB 2.5981 0.8666 237.4488 3.00 0.003 **
## metodoC 5.6924 1.0194 238.2003 5.58 0.000000064 ***
## pretest_c 0.6787 0.0437 240.0435 15.51 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) metodB metodC
## metodoB -0.426
## metodoC -0.444 0.593
## pretest_c 0.273 -0.368 -0.612
var_escuela <- componentes$vcov[
componentes$grp == "escuela"
]
var_residual <- componentes$vcov[
componentes$grp == "Residual"
]
ICC <- var_escuela /
(var_escuela + var_residual)
ICC## [1] 0.2842
El coeficiente de correlación intraclase representa la proporción de la variabilidad total atribuible a diferencias entre escuelas.
Regla práctica
Si se considera que la relación entre pretest y postest cambia entre escuelas, puede ajustarse:
modelo_pendiente_aleatoria <- lmerTest::lmer(
postest ~ metodo + pretest_c +
(1 + pretest_c | escuela),
data = datos,
REML = TRUE
)Este modelo requiere suficiente información dentro de cada escuela. Una estructura aleatoria compleja no debe agregarse sin sustento teórico ni información suficiente.
| Situación | Interés principal | Parámetro relevante | Ejemplo |
|---|---|---|---|
| ANOVA fijo | Comparar niveles específicos | Medias o contrastes | Tres métodos seleccionados |
| ANOVA aleatorio | Generalizar a una población de niveles | Componente de varianza | Escuelas elegidas al azar |
| Modelo mixto | Comparar efectos específicos y modelar agrupación | Coeficientes y varianzas | Métodos dentro de escuelas |
La elección del denominador de una prueba F depende de la estructura del modelo. En modelos aleatorios y mixtos no siempre corresponde utilizar automáticamente el cuadrado medio residual del ANOVA fijo.
Antes de utilizar ANCOVA deben responderse las siguientes preguntas.
Una covariable posterior al tratamiento puede ser un mediador. Ajustarla puede eliminar una parte del efecto que se desea estudiar.
Si la relación es curva, puede requerirse:
ggplot(
datos,
aes(
x = metodo,
y = pretest
)
) +
geom_boxplot(
alpha = 0.35
) +
geom_jitter(
width = 0.12,
alpha = 0.3
) +
labs(
title = "Solapamiento de la covariable entre grupos",
x = "Método",
y = "Pretest"
) +
theme_minimal(base_size = 13)Si los grupos ocupan rangos completamente distintos de la covariable, las medias ajustadas dependerán de extrapolaciones.
ANCOVA puede mejorar precisión y controlar diferencias observadas, pero no convierte automáticamente un estudio observacional en un experimento aleatorizado.
El error de medición puede atenuar la pendiente y dejar confusión residual.
Una conclusión académica debe separar los siguientes elementos.
Manteniendo constante el método, cada punto adicional en el pretest se asoció con un cambio estimado de \(\widehat{\beta}_1\) puntos en el postest.
Después de controlar el pretest, se evaluó si las medias ajustadas de los tres métodos eran iguales.
Se estimó la variabilidad atribuible a diferencias entre escuelas mediante un intercepto aleatorio.
La interacción método por pretest permitió determinar si la pendiente de la covariable era común a los métodos.
En esta sesión se han utilizado varias fórmulas:
\[ Y=\beta_0+\text{factor}+\varepsilon \]
\[ Y=\beta_0+\beta_1X+\varepsilon \]
\[ Y=\beta_0+\text{factor}+\beta_1X+\varepsilon \]
\[ Y=\mathbf{X}\boldsymbol{\beta} + \mathbf{Z}\mathbf{b} + \boldsymbol{\varepsilon} \]
Todos comparten una misma lógica:
Base para la siguiente clase
El Modelo Lineal General no es una técnica adicional que aparece después de ANOVA y ANCOVA. Es el marco matemático que permite entenderlas conjuntamente.
Rutherford, A. (2011). ANOVA and ANCOVA: A GLM Approach (2.ª ed.). John Wiley & Sons.
Pérez López, C. (2007). Econometría básica: técnicas y herramientas. Pearson Educación.
Walpole, R. E., Myers, R. H., Myers, S. L. y Ye, K. (2012). Probabilidad y estadística para ingeniería y ciencias (9.ª ed.). Pearson Educación.
```