A continuación se explica el DBCA (Diseño de Bloques Completos al Azar) o Randomized Complete Block Design (RCBD), basándome en el material de Felipe Mendiburu y ampliando con implementaciones prácticas.


1. DEFINICIÓN, IMPORTANCIA Y APLICACIONES

¿Qué es el DBCA?

Según el documento, es un “diseño de doble vía” que se aplica cuando el material experimental es heterogéneo. Las unidades experimentales homogéneas se agrupan formando grupos homogéneos llamados bloques, y dentro de cada bloque se asignan al azar todos los tratamientos.

Características clave: 1. Las unidades experimentales son heterogéneas entre bloques, pero homogéneas dentro de cada bloque 2. Cada bloque tiene un número de unidades igual al número de tratamientos (bloques completos) 3. Los tratamientos están distribuidos al azar dentro de cada bloque 4. El número de repeticiones es igual al número de bloques

Importancia Estadística

El DBCA reduce la varianza experimental al eliminar la variación atribuible a las diferencias entre bloques. Esto aumenta la precisión del experimento comparado con un Diseño Completamente al Azar (DCA), ya que el error se calcula después de ajustar por los efectos de bloques.

Aplicaciones en Ingeniería Agrícola y Agroindustrial

Agrícola: - Ensayos de variedades: Cuando el terreno tiene gradientes de fertilidad, humedad o topografía (como en el ejemplo del documento con variedades de camote) - Fertilización: Bloques establecidos según niveles de materia orgánica del suelo - Control de plagas: Bloques con diferentes niveles de infestación natural - Riego: Bloques conformados por diferencias en capacidad de retención de agua

Agroindustrial: - Procesos batch: Cuando se procesan lotes de materia prima de diferentes orígenes (cada origen es un bloque) - Líneas de producción: Máquinas diferentes o turnos de operarios como bloques - Control de calidad: Pruebas de tratamientos (empaques, temperaturas) donde cada día de producción es un bloque - Pruebas sensoriales: Panelistas como bloques cuando se evalúan diferentes formulaciones


2. FUNDAMENTO TEÓRICO Y CÁLCULO MANUAL

Modelo Lineal

\[Y_{ij} = \mu + \tau_i + \beta_j + \varepsilon_{ij}\]

Donde: - \(Y_{ij}\) = Observación del tratamiento \(i\) en el bloque \(j\) - \(\mu\) = Media general (efecto medio) - \(\tau_i\) = Efecto del tratamiento \(i\) (\(\sum \hat{\tau}_i = 0\)) - \(\beta_j\) = Efecto del bloque \(j\) (\(\sum \hat{\beta}_j = 0\)) - \(\varepsilon_{ij}\) = Error experimental aleatorio, \(\sim N(0, \sigma^2)\)

Descomposición de la Varianza (ANOVA)

Fuente Suma de Cuadrados (SC) Grados de Libertad (GL) Cuadrado Medio (CM) Razón F
Tratamientos \(SC_{Trat} = b\sum_{j=1}^{t}(\bar{Y}_{.j} - \bar{Y}_{..})^2\) \(t-1\) \(CM_{Trat} = \frac{SC_{Trat}}{t-1}\) \(F = \frac{CM_{Trat}}{CM_E}\)
Bloques \(SC_{Bloq} = t\sum_{i=1}^{b}(\bar{Y}_{i.} - \bar{Y}_{..})^2\) \(b-1\) \(CM_{Bloq} = \frac{SC_{Bloq}}{b-1}\) \(F = \frac{CM_{Bloq}}{CM_E}\)
Error \(SC_E = SC_T - SC_{Trat} - SC_{Bloq}\) \((t-1)(b-1)\) \(CM_E = \frac{SC_E}{(t-1)(b-1)}\)
Total \(SC_T = \sum\sum(Y_{ij} - \bar{Y}_{..})^2\) \(bt-1\)

Término de Corrección (TC): \[TC = \frac{Y_{..}^2}{rt}\]

Ejemplo de Cálculo Manual (Usando datos del documento)

Datos: Follaje fresco de 5 tratamientos (V1, Testigo, V2, V3, V4) en 3 bloques (I, II, III)

Bloque V1 Testigo V2 V3 V4 Total Bloque
I 17.9 7.0 19.8 15.2 12.7 72.6
II 20.8 5.9 16.7 21.0 14.2 78.6
III 21.4 4.2 16.7 8.8 11.5 62.6
Total Trat. 60.1 17.1 53.2 45.0 38.4 213.8 (Gran Total)

Paso 1: Término de Corrección \[TC = \frac{(213.8)^2}{15} = 3047.51\]

Paso 2: Suma de Cuadrados Total \[SC_{Total} = \sum Y_{ij}^2 - TC = (17.9^2 + 7.0^2 + ... + 11.5^2) - 3047.51 = 459.58\]

Paso 3: SC de Variedades (Tratamientos) \[SC_{Var} = \frac{\sum Y_{.j}^2}{b} - TC = \frac{60.1^2 + 17.1^2 + 53.2^2 + 45.0^2 + 38.4^2}{3} - 3047.51 = 364.04\]

Paso 4: SC de Bloques \[SC_{Bloq} = \frac{\sum Y_{i.}^2}{t} - TC = \frac{72.6^2 + 78.6^2 + 62.6^2}{5} - 3047.51 = 26.13\]

Paso 5: SC de Error \[SC_{Error} = SC_{Total} - SC_{Var} - SC_{Bloq} = 459.58 - 364.04 - 26.13 = 69.41\]

Paso 6: Cuadrados Medios y F - \(CM_{Var} = 364.04 / 4 = 91.01\) - \(CM_{Bloq} = 26.13 / 2 = 13.07\) - \(CM_{Error} = 69.41 / 8 = 8.68\) - \(F_{Var} = 91.01 / 8.68 = 10.49\) (significativo, p=0.0029) - \(F_{Bloq} = 13.07 / 8.68 = 1.51\) (no significativo, p=0.2785)


3. SOLUCIONES EN PYTHON, R Y EASYNOVA

A. Solución en Python (usando statsmodels y pingouin)

import pandas as pd
import numpy as np
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
import pingouin as pg

# Crear dataframe con datos del ejemplo
data = pd.DataFrame({
    'Bloque': ['I', 'I', 'I', 'I', 'I', 
               'II', 'II', 'II', 'II', 'II',
               'III', 'III', 'III', 'III', 'III'],
    'Tratamiento': ['V1', 'Testigo', 'V2', 'V3', 'V4'] * 3,
    'Rendimiento': [17.9, 7.0, 19.8, 15.2, 12.7,
                    20.8, 5.9, 16.7, 21.0, 14.2,
                    21.4, 4.2, 16.7, 8.8, 11.5]
})

# Método 1: Statsmodels (Tipo I, II, III)
modelo = ols('Rendimiento ~ C(Tratamiento) + C(Bloque)', data=data).fit()
anova_result = anova_lm(modelo, typ=2)  # Tipo II para diseños balanceados
print(anova_result)

# Método 2: Pingouin (más completo, incluye medidas de tamaño)
aov = pg.rm_anova(dv='Rendimiento', within=['Tratamiento', 'Bloque'], 
                  subject='Bloque', data=data, detailed=True)
# Nota: Para DBCA tradicional usar anova_twoway o mixed_anova según diseño

B. Solución en R (Base R y paquetes especializados)

# Crear datos
trat <- factor(rep(c("V1", "Testigo", "V2", "V3", "V4"), 3))
bloque <- factor(rep(c("I", "II", "III"), each=5))
rendimiento <- c(17.9, 7.0, 19.8, 15.2, 12.7,
                 20.8, 5.9, 16.7, 21.0, 14.2,
                 21.4, 4.2, 16.7, 8.8, 11.5)
datos <- data.frame(trat, bloque, rendimiento)

# Método 1: Base R (aov)
modelo <- aov(rendimiento ~ trat + bloque, data=datos)
summary(modelo)

# Método 2: Paquete agricolae (incluye comparaciones múltiples)
library(agricolae)
resultado <- design.crd(trat, bloque, r=1) # Para análisis
modelo2 <- aov(rendimiento ~ trat + Error(bloque), data=datos)
LSD.test(modelo, "trat", console=TRUE) # Prueba LSD

C. Paquete easyanova (R - Interfaz simplificada)

# install.packages("easyanova")
library(easyanova)

# El paquete easyanova facilita el análisis con funciones específicas
# para diseños experimentales comunes
datos <- read.table(text="
trat bloque resp
V1 I 17.9
Testigo I 7.0
V2 I 19.8
V3 I 15.2
V4 I 12.7
V1 II 20.8
Testigo II 5.9
V2 II 16.7
V3 II 21.0
V4 II 14.2
V1 III 21.4
Testigo III 4.2
V2 III 16.7
V3 III 8.8
V4 III 11.5", header=TRUE)

# Análisis DBCA
resultado <- easyaov(resp ~ trat + bloque, data=datos, design="rcbd")
summary(resultado)

4. INTERPRETACIÓN DE LAS SALIDAS

Interpretación de la Tabla ANOVA

Al ejecutar el análisis, obtendrás una tabla similar a esta:

            Df Sum Sq Mean Sq F value  Pr(>F)   
trat         4 364.04   91.01  10.488 0.00292 **
bloque       2  26.13   13.07   1.505 0.27854   
Residuals    8  69.40    8.68                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Interpretación paso a paso:

  1. Efecto de Tratamientos (Variedad):
    • F-value = 10.49, p-value = 0.0029
    • Como p < 0.05 (o 0.01), rechazamos H₀: existen diferencias significativas entre variedades
    • El efecto es altamente significativo (indicado con **)
  2. Efecto de Bloques:
    • F-value = 1.51, p-value = 0.2785
    • p > 0.05: No hay diferencias significativas entre bloques
    • Esto indica que el agrupamiento en bloques no fue muy efectivo (o el terreno era relativamente homogéneo)
  3. Error Residual:
    • CM = 8.68 es la varianza del error experimental
    • Se usa para calcular el CV (Coeficiente de Variación): \[CV = \frac{\sqrt{CM_{Error}}}{\bar{Y}} \times 100 = \frac{\sqrt{8.68}}{14.25} \times 100 = 20.6\%\]

Comparaciones Múltiples (Post-hoc)

Después de encontrar significancia en tratamientos, se realizan comparaciones por pares usando LSD, Tukey o Duncan:

# En R con agricolae
library(agricolae)
modelo <- aov(rendimiento ~ trat + bloque, data=datos)
duncan <- duncan.test(modelo, "trat", console=TRUE)

Salida típica:

Duncan's multiple range test
                rendimiento
V1                20.03333      a
V2                17.73333      ab
V3                15.00000      bc
V4                12.76667       c
Testigo            5.70000       d

Interpretación: Letras diferentes indican diferencias significativas. V1 es superior a todas; el testigo es el peor.

Contrastes Ortogonales (Análisis específico)

Cuando se tienen comparaciones planificadas (no todas contra todas):

# Contrastes: Testigo vs Nuevas, V1+V2 vs V3+V4, etc.
contrastes <- matrix(c(4, -1, -1, -1, -1,  # C1: Testigo vs resto
                       0, -1, -1, 1, 1,    # C2: V1+V2 vs V3+V4
                       0, -1, 1, 0, 0,     # C3: V1 vs V2
                       0, 0, 0, -1, 1),    # C4: V3 vs V4
                     nrow=4, byrow=TRUE)

Interpretación: - C1 (Testigo vs Variedades): F=31.6**, significativo → Las variedades nuevas difieren del testigo - C2 (V1+V2 vs V3+V4): F=8.6*, significativo → El grupo 1+2 es diferente del 3+4 - C3 (V1 vs V2): F=0.9 ns, no significativo → V1 y V2 son estadísticamente iguales

Diagnóstico del Modelo

Es crucial verificar los supuestos:

# Gráficos de diagnóstico
par(mfrow=c(2,2))
plot(modelo)

# Prueba de normalidad
shapiro.test(residuals(modelo))

# Prueba de homogeneidad de varianzas
library(car)
leveneTest(rendimiento ~ trat, data=datos)

Interpretación de diagnósticos: - Normalidad: Si p > 0.05 en Shapiro-Wilk, los residuos son normales - Homocedasticidad: Si p > 0.05 en Levene, las varianzas son homogéneas - Si fallan los supuestos: Usar transformación (log, raíz cuadrada) o Prueba de Friedman (no paramétrica)


Resumen Ejecutivo

El DBCA es esencial cuando existe heterogeneidad conocida en el material experimental. En el ejemplo de las variedades de camote, el análisis demostró que:

  1. Las variedades difieren significativamente (p=0.003)
  2. Los bloques no fueron efectivos (p=0.28), sugiriendo que el gradiente de heterogeneidad no fue capturado adecuadamente
  3. V1 fue la mejor variedad, significativamente superior al testigo (diferencia de 14.3 unidades)

La implementación computacional (Python/R) automatiza los cálculos manuales, pero la interpretación siempre debe basarse en la lógica experimental: verificar primero la significancia global, luego identificar qué tratamientos difieren, y finalmente validar que los supuestos estadísticos se cumplan.