
Motor Asistido de Decisión, Diagnóstico y Modelos Mixtos para Ciencias Agronómicas y Biológicas
agriDesignR es un paquete de R diseñado para resolver una necesidad crítica en la investigación agrícola, biotecnología vegetal y biología experimental: cerrar la brecha entre el diseño experimental sobre el papel y la parametrización estadística rigurosa.
Documentación: guías pkgdown · planificación · modelos mixtos · diagnósticos y remedios · aplicación Shiny · contribuir · reportar un error
A diferencia de paquetes que asumen que el usuario ya conoce de antemano la parametrización matemática exacta (lme4, glmmTMB, aov), agriDesignR actúa como un árbitro metodológico y motor de decisión asistido integral:
- Antes de Sembrar (Pre-Ensayo): Diagnostica gradientes ambientales en invernaderos/campos, recomienda el diseño óptimo (DCA, DBCA, Factorial, Split-Plot, Split-Split-Plot, Cuadro Latino), calcula réplicas mínimas para garantizar poder estadístico, dibuja el croquis espacial 2D de las mesas con unidades experimentales (macetas) y genera la plantilla CSV lista para fenotipar.
-
Después de Cosechar (Post-Ensayo): Audita supuestos, ajusta tanto ANOVA Clásico Tradicional (
aov/lm) como Modelos Lineales Mixtos (LMM / GLMM) con grados de libertad Kenward-Roger / Satterthwaite, descompone interacciones en efectos simples, aplica remedios automáticos (Box-Cox /varIdent), evalúa la Eficiencia Relativa del Bloqueo (Cochran & Cox) y genera figuras vectoriales estilo Nature e informes doctorales en Markdown. -
Interfaz Interactiva: Incluye una aplicación web completa en Bootstrap 5 (
launch_app()).
🎯 Árbol de Decisión Riguroso: ¿Cuándo usar cada Diseño?
agriDesignR incorpora reglas de decisión metodológicas estrictas para prevenir malas prácticas (como confundir factoriales con parcelas divididas o crear bloques innecesarios):
¿Existe heterogeneidad espacial o temporal?
│
┌────────────────────────┴────────────────────────┐
NO SÍ
│ │
¿Ambiente 100% homogéneo? ¿Cuántos gradientes existen?
(Cámara de cultivo, in vitro, sustrato uniforme) │
│ ┌────────────────┴────────────────┐
🌿 DCA / CRD 1 GRADIENTE 2 GRADIENTES
(Completamente al Azar) (Mesas de invernadero, pendiente) (Luz + Ventilación)
Modelo: lm(y ~ Tratamiento) │ │
¿Hay restricción física 🏛️ CUADRO LATINO
al aplicar un factor? Modelo: lm(y ~ Fila + Col + Trt)
│
┌───────────────┴───────────────┐
NO SÍ (Macro-factor: temperatura de
│ cámara, riego por inundación)
🌾 DBCA / RCBD │
(Bloques Completos al Azar) 🌱 SPLIT-PLOT
Modelo: lm(y ~ Bloque + Trt) (Parcelas Divididas)
o lm(y ~ Bloque + FactorA * FactorB) Error A: (1 | Bloque:FactorA)
Error B: Residual
📋 Criterios Metodológicos:
- DCA (Completamente al Azar / CRD): Usar únicamente cuando el ambiente es 100% homogéneo (cámaras de cultivo, fitotrones, placas Petri in vitro). Si no hay gradiente, bloquear reduce grados de libertad del error residual y disminuye el poder estadístico.
- DBCA (Bloques Completos al Azar / RCBD): Usar cuando existe un gradiente (ej: mesas de invernadero, gradiente de luz o pendiente de campo). Todos los tratamientos deben poder aleatorizarse de forma independiente dentro de cada mesa/bloque.
- Split-Plot (Parcelas Divididas): Usar ESTRICTAMENTE cuando existe una restricción física en la aleatorización (ej: la temperatura se aplica a la mesa completa y los genotipos se aleatorizan dentro de cada mesa). NUNCA usar Split-Plot solo por tener 2 factores. Si ambos factores se pueden aleatorizar maceta por maceta, se DEBE usar un DBCA Factorial.
- Split-Split-Plot (Parcelas Sub-Subdivididas): Cuando existen dos niveles jerárquicos de restricción física (3 factores).
- Cuadro Latino (Latin Square): Cuando existen dos gradientes perpendiculares (ej: Filas en sentido de la luz y Columnas en sentido de los extractores de aire).
- Medidas Repetidas (Repeated Measures): Cuando la misma maceta/planta se evalúa a lo largo del tiempo ().
🗺️ Croquis Espaciales 2D del Invernadero y Unidades Experimentales
generate_layout() y plot(layout) generan el croquis espacial de siembra detallando cada Mesa / Bloque, Posición de Maceta y Código Único de Unidad Experimental (Plot_ID):

📊 Marco Estadístico Dual: ANOVA Clásico vs. Modelos Mixtos
agriDesignR ofrece soporte de primer nivel para ambas aproximaciones estadísticas:
| Característica | 🏛️ ANOVA Clásico Tradicional (aov / lm) |
🚀 Modelos Lineales Mixtos (lme4 / glmmTMB) |
|---|---|---|
| Cuándo Elegirlo | Diseños perfectamente balanceados, bloques fijos de invernadero, tablas estándar para tesis de pregrado/magíster. | Datos desbalanceados, macetas/plantas perdidas, estructuras jerárquicas reales (Split-Plot), bloques como muestra aleatoria. |
| Pruebas de Hipótesis | Pruebas F exactas (Sumas de Cuadrados Tipo I, II, III). | Pruebas F con corrección de Kenward-Roger o Satterthwaite. |
| Comparaciones Múltiples |
TukeyHSD(), Fisher LSD, Duncan, Scheffé. |
emmeans con ajuste Tukey, descomposición en efectos simples (by = ...). |
| Sintaxis R | aov(Y ~ Bloque + FactorA * FactorB, data) |
lmer(Y ~ FactorA * FactorB + (1\|Bloque), data) |
📦 Instalación
Puedes instalar la versión oficial de desarrollo directamente desde GitHub con remotes:
# Instalar remotes si no lo tienes instalado
if (!requireNamespace("remotes", quietly = TRUE)) {
install.packages("remotes")
}
# Instalar agriDesignR
remotes::install_github("PALP31/agriDesignR")🚀 Guía de Uso Rápido (Paso a Paso)
1. Planificación Pre-Ensayo y Croquis de Siembra 2D
library(agriDesignR)
# Diagnosticar si necesitas DCA, DBCA o Split-Plot para tu invernadero
plan <- plan_experiment(
setting = "greenhouse",
treatments = list(
temperature = c("22C", "36C"),
genotype = paste0("G", 1:5)
),
whole_plot_factor = "temperature",
sub_plot_factor = "genotype",
spatial_gradients = "table_to_table"
)
print(plan)
# Generar el croquis aleatorizado de las mesas y exportar plantilla CSV para fenotipar
layout_siembra <- generate_layout(
design = "Split-Plot",
treatments = list(temperature = c("22C", "36C"), genotype = paste0("G", 1:5)),
replications = 4,
seed = 123,
output_csv = "plantilla_siembra_invernadero.csv"
)
# Dibujar el mapa 2D de las mesas y macetas
plot(layout_siembra)2. Opción A: Análisis con ANOVA Clásico Tradicional & Tukey HSD
# Cargar datos de trigo
data("wheat_splitplot")
# 1. Sugerencia de sintaxis para ANOVA y Modelos Mixtos
diag <- check_design(wheat_splitplot, response = "grain_yield", main_plot = "temperature", sub_plot = "genotype", block = "block")
sugg <- suggest_model(diag)
print(sugg)
# 2. Ajuste mediante ANOVA clásico
fit_aov <- aov(grain_yield ~ block + temperature * genotype, data = wheat_splitplot)
summary(fit_aov)
# 3. Comparaciones múltiples estándar de Tukey
TukeyHSD(fit_aov, "genotype")3. Opción B: Modelos Mixtos (lme4), Efectos Simples y Remedios
# 1. Ajuste con grados de libertad Kenward-Roger y semáforo de supuestos
fit_lmm <- fit_experiment(
data = wheat_splitplot,
response = "grain_yield",
main_plot = "temperature",
sub_plot = "genotype",
block = "block"
)
print(fit_lmm)
# 2. Descomposición en Efectos Simples (Genotipos dentro de cada Temperatura)
post_simples <- agri_posthoc(fit_lmm, trt = "genotype", by = "temperature", method = "tukey")
print(post_simples)
# 3. Remedios automáticos ante heterocedasticidad (Box-Cox / varIdent)
rem <- remedy(fit_lmm, method = "auto")
print(rem)
# 4. Eficiencia Relativa del Bloqueo (Cochran & Cox / Kempthorne)
eff <- calc_design_efficiency(fit_lmm)
print(eff)
# 5. Ranking Biológico y Tamaños de Efecto (Cohen's d vs Control G1)
rnk <- agri_ranking(fit_lmm, trt = "genotype", control = "G1")
print(rnk)La decisión sobre el bloque es explícita e independiente del motor: block_as = "auto" conserva el comportamiento histórico, "fixed" incluye block como efecto fijo y "random" usa (1 | block) con lme4, nlme o glmmTMB. Cuando se grafican dos tratamientos, plot_publication() compara por defecto los niveles de group_var dentro de cada nivel de x_var; use trt y by para definir otra familia de comparaciones.
4. Figuras Listas para Publicación (Estilo Nature / Crop Science)
# Generar figura de barras con letras de significancia y paleta académica
p <- plot_publication(
fit_lmm,
type = "bar",
error_bar = "se",
palette = "forest",
title = "Durum Wheat Grain Yield under Heat Stress",
ylab = "Grain Yield (g / plant ± SE)"
)
print(p)
# ggplot2::ggsave("figura_trigo_publicacion.pdf", p, width = 8, height = 5)

5. Informe Científico Automatizado en Markdown
# Genera un reporte doctoral completo con metodología, supuestos y tablas
informe <- experiment_report(fit_lmm, output_file = "informe_cientifico_trigo.md")
print(informe)🧪 Datasets Agronómicos Integrados
-
wheat_splitplot: Ensayo Split-Plot de estrés por calor (Control vs 36°C) en 5 genotipos de trigo duro (Triticum durum) con 4 bloques. -
maize_3way_factorial: Ensayo trifactorial (Temperatura Riego Genotipo) en maíz evaluando biomasa y SPAD. -
tomato_rcbd: Ensayo DBCA de fertilización nitrogenada en tomate con unidades perdidas y covariable de densidad de plantas. -
maize_repeated: Medidas repetidas longitudinales de biomasa en maíz bajo 3 regímenes de riego a lo largo de 5 semanas. -
fungicide_crd: Ensayo DCA con variable discreta (conteos) para modelos Poisson y pruebas no paramétricas (Kruskal-Wallis / Dunn).
Referencias metodológicas
Las decisiones estadísticas deben seguir el diseño y el estimando del estudio. agriDesignR ofrece automatización auditable, no reemplaza la revisión metodológica. Referencias completas están en inst/REFERENCES.bib:
- Box y Cox, 1964, An Analysis of Transformations — transformaciones Box-Cox.
- Kenward y Roger, 1997, Small Sample Inference for Fixed Effects from Restricted Maximum Likelihood — inferencia de muestra pequeña.
- Satterthwaite, 1946, An Approximate Distribution of Estimates of Variance Components — grados de libertad aproximados.
- Cochran y Cox, 1957, Experimental Designs, 2nd ed. — diseños bloqueados y eficiencia relativa.
- Bates et al., 2015, Fitting Linear Mixed-Effects Models Using lme4 — modelos lineales mixtos.
- Bolker et al., 2009, Generalized Linear Mixed Models: A Practical Guide for Ecology and Evolution — modelos mixtos generalizados.
👨💻 Autor & Contacto
- Autor: Paul Lopez (Estudiante del Doctorado en Biotecnología Vegetal | Profesor Universitario de Aplicaciones Estadísticas (Pregrado))
- Afiliación: Pontificia Universidad Católica de Chile
- GitHub: @PALP31
- Licencia: MIT License (2026)
