El diseño de Varios Cuadrados Latinos (o Cuadrados Latinos Repetidos) es el paso natural cuando el experimento original es demasiado pequeño.
Para tus estudiantes de Ingeniería Agrícola y Agroindustrial, este escenario es muy común: a veces solo tienen 3 o 4 tratamientos para evaluar (por ejemplo, 3 formulaciones de un fertilizante o 3 temperaturas de secado). Un Cuadrado Latino de \(3 \times 3\) solo deja 2 grados de libertad para el error, lo cual es inaceptable estadísticamente porque hace que la prueba pierda poder. La solución en campo o laboratorio es montar varios cuadrados latinos idénticos simultáneamente.
Aquí tienes la estructura para tu cuarto cuaderno.
Cuando el número de tratamientos (\(t\)) es pequeño, el error experimental en un solo Diseño en Cuadrado Latino (DCL) tiene muy pocos grados de libertad. Para solucionar esto y aumentar la precisión (el poder de la prueba), se repite el experimento básico (\(s\) veces), creando varios cuadrados.
Existen diferentes formas de repetir los cuadrados (pueden compartir filas, columnas, o ser totalmente independientes). En la configuración más común (cuadrados independientes), las filas y las columnas están “anidadas” dentro de cada cuadrado, lo que significa que la Fila 1 del Cuadrado 1 no tiene nada que ver física ni ambientalmente con la Fila 1 del Cuadrado 2.
El Modelo Estadístico Lineal (Cuadrados Independientes): \[y_{ijkl} = \mu + S_l + \rho_{j(l)} + \gamma_{k(l)} + \tau_i + \epsilon_{ijkl}\]
Donde: * \(y_{ijkl}\): Respuesta del \(i\)-ésimo tratamiento, en la \(j\)-ésima fila, \(k\)-ésima columna, dentro del \(l\)-ésimo cuadrado. * \(\mu\): Media general. * \(S_l\): Efecto del \(l\)-ésimo cuadrado. * \(\rho_{j(l)}\): Efecto de la \(j\)-ésima fila anidada en el \(l\)-ésimo cuadrado. * \(\gamma_{k(l)}\): Efecto de la \(k\)-ésima columna anidada en el \(l\)-ésimo cuadrado. * \(\tau_i\): Efecto del \(i\)-ésimo tratamiento. * \(\epsilon_{ijkl}\): Error experimental.
Tabla ANOVA:
| Fuente de Variación | Grados de Libertad (GL) | Suma de Cuadrados (SC) | Cuadrado Medio (CM) | F calculado |
|---|---|---|---|---|
| Cuadrados (\(S\)) | \(s - 1\) | \(SCS\) | \(CMS = \frac{SCS}{s-1}\) | \(\frac{CMS}{CME}\) |
| Tratamientos (\(Tr\)) | \(t - 1\) | \(SCTr\) | \(CMTr = \frac{SCTr}{t-1}\) | \(\frac{CMTr}{CME}\) |
| Filas(Cuadrados) | \(s(t - 1)\) | \(SCFilas\) | \(CMF = \frac{SCFilas}{s(t-1)}\) | \(\frac{CMF}{CME}\) |
| Columnas(Cuadrados) | \(s(t - 1)\) | \(SCCol\) | \(CMC = \frac{SCCol}{s(t-1)}\) | \(\frac{CMC}{CME}\) |
| Error | \((s \times t^2) - 1 - GL_{otros}\) | \(SCE\) | \(CME = \frac{SCE}{GL_E}\) | |
| Total | \(s \times t^2 - 1\) | \(SCT\) |
(Nota: \(t\) = número de tratamientos, \(s\) = número de cuadrados).
Para realizar el cálculo a mano, la lógica sigue siendo sumar los componentes de varianza, pero respetando la estructura anidada:
Para easyanova, el conjunto de datos de Varios Cuadrados
Latinos (data4) tiene cinco columnas: Tratamiento,
Cuadrado, Fila, Columna y Respuesta.
library(easyanova)
# Cargar el dataset de ejemplo para Varios Cuadrados Latinos
data(data4)
# Inspeccionar los datos: Tratamiento, Cuadrado, Fila, Columna, Respuesta
head(data4)
# EDA: Visualizar la consistencia de los tratamientos a través de los cuadrados
# Usaremos lattice para crear gráficos condicionales (paneles por cuadrado)
# install.packages("lattice") # Descomentar si no está instalado
library(lattice)
bwplot(data4[,5] ~ data4[,1] | data4[,2],
data = data4,
main = "Respuesta por Tratamiento en cada Cuadrado",
xlab = "Tratamiento",
ylab = "Respuesta",
layout = c(2, 1)) # Ajusta el layout dependiendo de cuántos cuadrados sean
Propósito pedagógico: Este gráfico de paneles es fundamental. Pregunta a los estudiantes: “¿El tratamiento que parece ser el mejor en el Cuadrado 1 (ej. Finca 1) también tiene el mejor desempeño en el Cuadrado 2 (ej. Finca 2)? Si el comportamiento es distinto, podría haber una interacción fuerte entre el tratamiento y el lugar.”
easyanovaLa ejecución requiere que especifiques design = 4.
easyanova automáticamente asume el anidamiento de filas y
columnas dentro de los cuadrados.
# Ejecutar Varios Cuadrados Latinos (design = 4)
# Orden de columnas: 1=Tratamiento, 2=Cuadrado, 3=Fila, 4=Columna, 5=Respuesta
resultado_varios_dcl <- ea1(data4, design = 4)
# Imprimir la tabla ANOVA y las comparaciones múltiples
print(resultado_varios_dcl)
Motiva a los estudiantes a debatir el resultado conmigo usando estas preguntas:
En Python (Usando statsmodels): Para el
modelo anidado en Python, usamos la sintaxis de Patsy
Fila:Cuadrado para indicar “Fila anidada en Cuadrado”.
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
# Dataset simulado para 2 cuadrados de 3x3
data = {
'Tratamiento': ['A','B','C','B','C','A','C','A','B', 'B','C','A','C','A','B','A','B','C'],
'Cuadrado': ['S1']*9 + ['S2']*9,
'Fila': ['F1','F1','F1','F2','F2','F2','F3','F3','F3']*2,
'Columna': ['C1','C2','C3','C1','C2','C3','C1','C2','C3']*2,
'Respuesta': [15, 20, 18, 22, 19, 14, 17, 16, 21, 16, 22, 17, 20, 15, 18, 19, 21, 14]
}
df = pd.DataFrame(data)
# Modelo con filas y columnas anidadas dentro de los cuadrados
formula = 'Respuesta ~ C(Cuadrado) + C(Cuadrado):C(Fila) + C(Cuadrado):C(Columna) + C(Tratamiento)'
modelo = ols(formula, data=df).fit()
tabla_anova = sm.stats.anova_lm(modelo, typ=2)
print("\n--- Tabla ANOVA (Varios DCL) ---")
print(tabla_anova)
En Julia (Usando DataFrames y
GLM):
using DataFrames, GLM
# Creación del DataFrame para 2 cuadrados de 3x3
df = DataFrame(
Tratamiento = ["A","B","C","B","C","A","C","A","B", "B","C","A","C","A","B","A","B","C"],
Cuadrado = vcat(fill("S1", 9), fill("S2", 9)),
Fila = repeat(["F1","F1","F1","F2","F2","F2","F3","F3","F3"], 2),
Columna = repeat(["C1","C2","C3","C1","C2","C3","C1","C2","C3"], 2),
Respuesta = [15, 20, 18, 22, 19, 14, 17, 16, 21, 16, 22, 17, 20, 15, 18, 19, 21, 14]
)
# Convertir a variables categóricas
df.Tratamiento = categorical(df.Tratamiento)
df.Cuadrado = categorical(df.Cuadrado)
df.Fila = categorical(df.Fila)
df.Columna = categorical(df.Columna)
# En GLM de Julia, el anidamiento se especifica con la interacción Cuadrado & Fila
modelo = lm(@formula(Respuesta ~ Cuadrado + Cuadrado&Fila + Cuadrado&Columna + Tratamiento), df)
println("--- Resumen del Modelo Varios DCL ---")
println(modelo)