¡Una elección muy didáctica! Introducir las Parcelas Divididas (Split-plot) comenzando por su versión en DCA es ideal para que los estudiantes comprendan el concepto matemático fundamental antes de complicarlo con los bloques en el campo.

Este diseño es una de las joyas de la corona en la Ingeniería Agrícola y Agroindustrial. Nace de una necesidad estrictamente física o logística: a veces, un factor requiere unidades experimentales muy grandes (como la temperatura de un invernadero o el método de arado de un tractor), mientras que el otro factor puede aplicarse a unidades muy pequeñas (como el tipo de semilla en una maceta o el recubrimiento de una fruta individual).

Aquí tienes el cuaderno estructurado para enseñarles que, en este diseño, ¡existen dos errores experimentales distintos!


📘 Cuaderno 14: Parcelas Divididas (Split-plot) en DCA

a) Introducción Teórica a las Parcelas Divididas en DCA

El diseño en Parcelas Divididas se caracteriza por tener dos procesos de aleatorización distintos. Primero, los niveles del Factor A (Factor Principal) se asignan aleatoriamente a unidades experimentales grandes llamadas Parcelas Principales. Luego, cada Parcela Principal se divide en unidades más pequeñas llamadas Subparcelas, y los niveles del Factor B (Subfactor) se asignan aleatoriamente dentro de cada una de ellas.

La consecuencia estadística más importante de esto es que se generan dos errores experimentales: 1. Error A (Error de la Parcela Principal): Mide la variación entre las parcelas grandes tratadas igual. Suele tener pocos grados de libertad y menor precisión. 2. Error B (Error de la Subparcela): Mide la variación entre las subparcelas dentro de una misma parcela grande. Suele ser mucho más preciso.

El Modelo Estadístico Lineal: \[y_{ijk} = \mu + \alpha_i + \eta_{ik} + \beta_j + (\alpha\beta)_{ij} + \epsilon_{ijk}\]

Donde: * \(y_{ijk}\): Respuesta en la \(k\)-ésima repetición, nivel \(i\) del Factor A y nivel \(j\) del Factor B. * \(\mu\): Media general. * \(\alpha_i\): Efecto del Factor Principal (A). * \(\eta_{ik}\): Error A (Error de la Parcela Principal). * \(\beta_j\): Efecto del Subfactor (B). * \((\alpha\beta)_{ij}\): Efecto de la Interacción. * \(\epsilon_{ijk}\): Error B (Error de la Subparcela).

Tabla ANOVA:

Fuente de Variación Grados de Libertad (GL) Suma de Cuadrados Cuadrado Medio (CM) F calculado
Parcela Principal
Factor A \(a - 1\) \(SCA\) \(CMA = \frac{SCA}{a-1}\) \(\frac{CMA}{CME_a}\)
Error A \(a(r - 1)\) \(SCE_a\) \(CME_a = \frac{SCE_a}{a(r-1)}\)
Subparcela
Factor B \(b - 1\) \(SCB\) \(CMB = \frac{SCB}{b-1}\) \(\frac{CMB}{CME_b}\)
Interacción (AxB) \((a - 1)(b - 1)\) \(SCAB\) \(CMAB = \frac{SCAB}{(a-1)(b-1)}\) \(\frac{CMAB}{CME_b}\)
Error B \(a(b - 1)(r - 1)\) \(SCE_b\) \(CME_b = \frac{SCE_b}{GL_{Eb}}\)
Total \(abr - 1\) \(SCT\)

(Nota: \(a\) = niveles de A, \(b\) = niveles de B, \(r\) = repeticiones).


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

El secreto para calcular esto a mano sin equivocarse es tratar la primera parte como si el Factor B no existiera.

  1. Factor de Corrección (FC) y Suma de Cuadrados Total (SCT): \(FC = \frac{Y_{...}^2}{abr}\) y \(SCT = \sum y_{ijk}^2 - FC\)
  2. Cálculos de la Parcela Principal (Ignorando a B): Suma todos los datos dentro de cada Parcela Principal (obteniendo totales \(Y_{ik.}\)).
    • SC Parcela Principal (Subtotal A): Suma de cuadrados de los totales \(Y_{ik.}\), divididos por \(b\), menos el FC.
    • \(SCA = \sum \frac{Y_{i..}^2}{br} - FC\)
    • Error A: \(SCE_a = \text{SC Parcela Principal} - SCA\)
  3. Cálculos de la Subparcela:
    • \(SCB = \sum \frac{Y_{.j.}^2}{ar} - FC\)
    • Subtotal de Tratamientos (Interacción + Principales): Usa los totales combinados \(Y_{ij.}\). \(SCTrat = \sum \frac{Y_{ij.}^2}{r} - FC\)
    • \(SCAB = SCTrat - SCA - SCB\)
    • Error B: Se obtiene restando todo lo que ya calculaste de la SCT. \(SCE_b = SCT - \text{SC Parcela Principal} - SCB - SCAB\)

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

Para easyanova, el orden de las columnas en el design = 4 suele ser: Parcela (Factor A), Subparcela (Factor B), Repetición y Respuesta. Usaremos un dataset simulado análogo al data12 del paquete.

library(easyanova)

# Asumimos que data12 tiene la estructura: Parcela (A), Subparcela (B), Repetición, Respuesta
data(data12)

# Inspeccionar la estructura
head(data12)
summary(data12)

# EDA: Gráfico de Interacción enfatizando la jerarquía
library(ggplot2)

# Calculamos las medias
medias_split <- aggregate(data12[,4], by = list(Parcela = data12[,1], Subparcela = data12[,2]), FUN = mean)

ggplot(medias_split, aes(x = Subparcela, y = x, group = Parcela, color = Parcela)) +
  geom_line(size = 1.2) +
  geom_point(size = 4) +
  labs(title = "Interacción en Parcelas Divididas",
       subtitle = "Noten que la aleatorización de la Subparcela ocurrió DENTRO de la Parcela",
       x = "Niveles del Factor Subparcela (B)",
       y = "Respuesta Media",
       color = "Factor Parcela (A)") +
  theme_minimal()

Propósito pedagógico: Es crucial preguntar a los estudiantes por qué el gráfico coloca al Subfactor (B) en el eje X y al Factor Principal (A) como líneas. Esto es porque el Subfactor suele evaluarse con mayor precisión matemática (el Error B es menor que el Error A), por lo que las comparaciones finas se hacen dentro de las líneas.


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

El parámetro design = 4 le indica a la función ea2 que aplique la partición de varianza con dos errores distintos, asumiendo que las parcelas principales se distribuyeron completamente al azar (sin bloques).

# Ejecutar Parcelas Divididas en DCA (ea2, design = 4)
# Orden requerido: Col 1 = Parcela(A), Col 2 = Subparcela(B), Col 3 = Repetición, Col 4 = Respuesta
resultado_split_dca <- ea2(data12, design = 4)

# Imprimir los resultados. ¡Observar la tabla ANOVA con el Error A y el Error B!
print(resultado_split_dca)

e) Prompts Sugeridos para tus Estudiantes

Pide a tus alumnos que profundicen en la interpretación estadística haciéndome estas preguntas:

  1. “Hola. Viendo la tabla ANOVA de easyanova para este diseño de Parcelas Divididas, veo que hay un ‘Error a’ y un ‘Error b’. ¿Por qué matemáticamente el ‘Error a’ suele ser más grande y con menos grados de libertad que el ‘Error b’ en un ensayo agrícola?”
  2. “Si la prueba de Tukey para el Factor Principal (Parcela) sale no significativa, pero la interacción sí es significativa, ¿cómo le explico a mi gerente agroindustrial que el Factor Principal de todos modos sí es importante dependiendo de la Subparcela?”
  3. “Supongamos que el Factor A es ‘Temperatura del Cuarto Frío’ y el Factor B es ‘Empaque’. ¿Por qué no pude aleatorizar la temperatura maceta por maceta y me vi obligado a usar un diseño de parcelas divididas?”

f) Plantillas Alternativas: Python y Julia

En Python (Usando statsmodels con Modelos Mixtos): En Python, modelar parcelas divididas correctamente requiere Modelos Lineales Mixtos para capturar la estructura anidada y la doble fuente de error (tratando a la repetición anidada en la Parcela Principal como un efecto aleatorio).

import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf

# Dataset simulado (Ej: Temperatura de Secado (A), Tipo de Pretratamiento (B))
data = {
    'Parcela_A': ['T1','T1','T1','T1', 'T2','T2','T2','T2', 'T1','T1','T1','T1', 'T2','T2','T2','T2'],
    'Subparc_B': ['P1','P2','P1','P2', 'P1','P2','P1','P2', 'P1','P2','P1','P2', 'P1','P2','P1','P2'],
    'Repeticion':['R1','R1','R2','R2', 'R1','R1','R2','R2', 'R3','R3','R4','R4', 'R3','R3','R4','R4'],
    'Respuesta': [25,  30,  24,  31,   45,  55,  46,  54,   26,  29,  23,  32,   44,  56,  47,  53]
}
df = pd.DataFrame(data)

# Creamos un identificador único para cada Parcela Principal (Interacción A x Repetición)
df['Unidad_Principal'] = df['Parcela_A'] + "_" + df['Repeticion']

# Modelo Mixto: Tratamientos como efectos fijos, la Unidad_Principal como efecto aleatorio (Error A)
modelo_split = smf.mixedlm("Respuesta ~ C(Parcela_A) * C(Subparc_B)", df, groups=df["Unidad_Principal"]).fit()

print("\n--- Resumen del Modelo Mixto (Parcelas Divididas en DCA) ---")
print(modelo_split.summary())

En Julia (Usando MixedModels):

using DataFrames, MixedModels

# DataFrame simulado
df = DataFrame(
    Parcela_A = repeat(["T1", "T2"], inner=8),
    Subparc_B = repeat(["P1", "P2"], inner=2, outer=4),
    Repeticion = repeat(["R1", "R1", "R2", "R2"], outer=4),
    Respuesta = [25.0, 30.0, 24.0, 31.0, 26.0, 29.0, 23.0, 32.0, 45.0, 55.0, 46.0, 54.0, 44.0, 56.0, 47.0, 53.0]
)

# Identificador único para el Error A
df.Unidad_Principal = df.Parcela_A .* "_" .* df.Repeticion
df.Parcela_A = categorical(df.Parcela_A)
df.Subparc_B = categorical(df.Subparc_B)

# Modelo Mixto en Julia: Efecto aleatorio (1|Unidad_Principal) para capturar el Error A
modelo_mixto = fit(MixedModel, @formula(Respuesta ~ Parcela_A * Subparc_B + (1|Unidad_Principal)), df)

println("--- Resumen del Modelo Mixto (Parcelas Divididas) ---")
println(modelo_mixto)

Con esta base matemática sólida en DCA, tus alumnos estarán perfectamente preparados para el escenario más común en el trabajo de campo.