El Análisis de Covarianza (ANCOVA) es un tema fascinante y muy poderoso. A menudo, en la práctica agrícola o agroindustrial, nos encontramos con variables continuas que afectan nuestra respuesta pero que no podemos controlar físicamente mediante bloques.

Por ejemplo, al evaluar dietas en animales, el peso inicial afecta el peso final; o al probar métodos de secado de granos, la humedad inicial de la semilla afectará el tiempo de secado. El ANCOVA nos permite medir ese efecto y “ajustar” matemáticamente nuestros datos para hacer una comparación más justa de los tratamientos.

Aquí tienes el desarrollo del quinto cuaderno para tus estudiantes.


📘 Cuaderno 5: Análisis de Covarianza (ANCOVA) en DCA

a) Introducción Teórica al ANCOVA en DCA

El Análisis de Covarianza (ANCOVA) combina el Análisis de Varianza (ANOVA) con la Regresión Lineal. Se utiliza para reducir el error experimental ajustando la variable respuesta (\(Y\)) por el efecto de una variable cuantitativa adicional llamada covariable (\(X\)).

El objetivo es eliminar la variabilidad en \(Y\) que es causada por \(X\), permitiendo comparar los tratamientos “como si todas las unidades experimentales hubieran comenzado con el mismo valor exacto de la covariable”. Un supuesto clave del ANCOVA es que las líneas de regresión entre \(X\) e \(Y\) para cada tratamiento deben ser paralelas (homogeneidad de pendientes).

El Modelo Estadístico Lineal: \[y_{ij} = \mu + \tau_i + \beta(x_{ij} - \bar{x}_{..}) + \epsilon_{ij}\]

Donde: * \(y_{ij}\): Respuesta observada en la \(j\)-ésima repetición del \(i\)-ésimo tratamiento. * \(\mu\): Media general de la respuesta. * \(\tau_i\): Efecto del \(i\)-ésimo tratamiento. * \(\beta\): Coeficiente de regresión lineal combinada entre la respuesta y la covariable. * \(x_{ij}\): Valor de la covariable para la unidad experimental. * \(\bar{x}_{..}\): Media general de la covariable. * \(\epsilon_{ij}\): Error experimental.

Tabla ANOVA Ajustada (ANCOVA): A diferencia del ANOVA normal, aquí se calculan Sumas de Cuadrados (SC) y Sumas de Productos Cruzados (SP). Al final, evaluamos las SC de los tratamientos y del error ajustadas por la covariable.

Fuente GL SC (\(Y\)) SP (\(XY\)) SC (\(X\)) GL Ajustados SC Ajustada (\(Y_{adj}\)) CM Ajustado F calc
Tratamientos \(t - 1\) \(SCTr_y\) \(SPTr_{xy}\) \(SCTr_x\) \(t - 1\) \(SCTr_{adj}\) \(\frac{SCTr_{adj}}{t-1}\) \(\frac{CMTr_{adj}}{CME_{adj}}\)
Error \(N - t\) \(SCE_y\) \(SPE_{xy}\) \(SCE_x\) \(N - t - 1\) \(SCE_{adj}\) \(\frac{SCE_{adj}}{N-t-1}\)
Total \(N - 1\) \(SCT_y\) \(SPT_{xy}\) \(SCT_x\) \(N - 2\) \(SCT_{adj}\)

b) Miniguía: Solución Manual (Papel y Lápiz)

Resolver un ANCOVA a mano es un excelente ejercicio de álgebra y estadística:

  1. Cálculos base para X e Y: Calcula el ANOVA tradicional (Suma de Cuadrados) de forma independiente para la variable respuesta (\(Y\)) y para la covariable (\(X\)). Obtendrás \(SCT_y, SCTr_y, SCE_y\) y \(SCT_x, SCTr_x, SCE_x\).
  2. Suma de Productos Cruzados (SP): Calcula cómo varían juntas \(X\) e \(Y\).
    • \(SP(Total) = \sum x_{ij}y_{ij} - \frac{(\sum x_{ij})(\sum y_{ij})}{N}\)
    • \(SP(Tratamientos) = \sum \frac{X_{i.}Y_{i.}}{r} - \frac{(\sum x_{ij})(\sum y_{ij})}{N}\)
    • \(SP(Error) = SP(Total) - SP(Tratamientos)\)
  3. Calcular el Coeficiente de Regresión del Error (\(\beta\)): \[\beta = \frac{SP(Error)}{SC(X\_Error)}\]
  4. Ajustar la Suma de Cuadrados del Error (SCE Ajustada): \[SCE_{adj} = SCE_y - \frac{(SP(Error))^2}{SC(X\_Error)}\]
  5. Ajustar la Suma de Cuadrados Total (SCT Ajustada): \[SCT_{adj} = SCT_y - \frac{(SP(Total))^2}{SC(X\_Total)}\]
  6. Suma de Cuadrados de Tratamientos Ajustada (\(SCTr_{adj}\)): \[SCTr_{adj} = SCT_{adj} - SCE_{adj}\]
  7. Calcular los Cuadrados Medios Ajustados y F: Recuerda que el Error pierde un grado de libertad adicional (\(N - t - 1\)) por haber estimado el parámetro \(\beta\).
  8. Medias Ajustadas: Si hay diferencias, ajusta la media de cada tratamiento: \[\bar{y}_{i(adj)} = \bar{y}_{i.} - \beta(\bar{x}_{i.} - \bar{x}_{..})\]

c) Exploración de Datos (EDA) en R

Para este diseño usaremos el dataset data5 incluido en easyanova, que contiene Tratamiento, Covariable (\(X\)) y Respuesta (\(Y\)).

library(easyanova)

# Cargar el dataset de ejemplo para ANCOVA en DCA
data(data5)

# Inspeccionar los datos: Tratamiento, Covariable (X), Respuesta (Y)
head(data5)
summary(data5)

# EDA: Gráfico de dispersión de Covariable vs Respuesta, coloreado por Tratamiento
# Usaremos ggplot2 para visualizar si existen relaciones lineales y si las pendientes parecen paralelas
# install.packages("ggplot2")
library(ggplot2)

ggplot(data5, aes(x = data5[,2], y = data5[,3], color = factor(data5[,1]))) +
  geom_point(size = 3) +
  geom_smooth(method = "lm", se = FALSE) +
  labs(title = "Relación entre Covariable y Respuesta por Tratamiento",
       x = "Covariable (X)",
       y = "Respuesta Observada (Y)",
       color = "Tratamiento") +
  theme_minimal()

Propósito pedagógico: Pide a tus estudiantes que observen las líneas de regresión trazadas por ggplot. “¿Las líneas apuntan en la misma dirección general (paralelismo)? ¿El comportamiento de la respuesta cambia a medida que aumenta la covariable?” Esto justifica el uso de ANCOVA.


d) Plantilla de Código R: Solución con easyanova

La función ea1 realiza todo el proceso de ajuste matricial e imprime las medias ya corregidas al usar design = 5.

# Ejecutar ANCOVA en DCA (design = 5)
# El orden estricto debe ser: Col 1 = Tratamiento, Col 2 = Covariable (X), Col 3 = Respuesta (Y)
resultado_ancova <- ea1(data5, design = 5)

# Imprimir los resultados, que incluyen la tabla ANCOVA y las medias ajustadas
print(resultado_ancova)

e) Prompts Sugeridos para tus Estudiantes

Invita a los alumnos a analizar la salida del sistema con estas preguntas clave:

  1. “Hola. Viendo la tabla de resultados de easyanova para este ANCOVA, ¿qué me dice el valor p asociado a la ‘Covariable’? ¿Valió la pena medir esta variable adicional en el campo o hubiéramos obtenido el mismo resultado con un DCA normal?”
  2. “En el output se muestran unas ‘Medias Ajustadas’. ¿Por qué los valores de estas medias son diferentes a los promedios simples que calcularíamos sumando y dividiendo los datos en Excel? ¿Qué corrigió exactamente el modelo?”
  3. “Si la prueba del supuesto de homogeneidad de pendientes hubiera fallado (es decir, las líneas se cruzan marcadamente), ¿qué significa eso en la vida real de mi experimento agroindustrial y por qué no podría usar este ANCOVA tradicional?”

f) Plantillas Alternativas: Python y Julia

En Python (Usando statsmodels y pingouin): En Python, el paquete pingouin hace que el ANCOVA sea sumamente intuitivo y amigable para el estudiante.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import pingouin as pg

# Dataset simulado (Ej: Tratamiento de secado, Humedad Inicial (X), Tiempo de Secado (Y))
data = {
    'Tratamiento': ['A','B','C']*4,
    'Humedad_Inicial': [15, 14, 16, 18, 17, 19, 14, 13, 15, 20, 19, 21],
    'Tiempo_Secado': [45, 40, 55, 50, 48, 62, 43, 38, 52, 58, 53, 68]
}
df = pd.DataFrame(data)

# EDA
sns.lmplot(x='Humedad_Inicial', y='Tiempo_Secado', hue='Tratamiento', data=df)
plt.title('EDA: ANCOVA')
plt.show()

# ANCOVA usando Pingouin
ancova_resultado = pg.ancova(data=df, dv='Tiempo_Secado', covar='Humedad_Inicial', between='Tratamiento')
print("\n--- Tabla ANCOVA ---")
print(ancova_resultado)

En Julia (Usando DataFrames y GLM):

using DataFrames, GLM

# DataFrame simulado
df = DataFrame(
    Tratamiento = repeat(["A", "B", "C"], 4),
    Humedad_Inicial = [15, 14, 16, 18, 17, 19, 14, 13, 15, 20, 19, 21],
    Tiempo_Secado = [45, 40, 55, 50, 48, 62, 43, 38, 52, 58, 53, 68]
)

df.Tratamiento = categorical(df.Tratamiento)

# Ajuste del modelo lineal (Respuesta ~ Covariable + Tratamiento)
# La covariable se trata como un regresor continuo normal
modelo_ancova = lm(@formula(Tiempo_Secado ~ Humedad_Inicial + Tratamiento), df)

println("--- Resumen del Modelo ANCOVA ---")
println(modelo_ancova)