Skip to content

Repository files navigation

agriDesignR Banner

Release R version R-CMD-check Codecov test coverage pkgdown documentation License Shiny GUI Engines


🌱 agriDesignR agriDesignR Hex Logo

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:

  1. 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.
  2. 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.
  3. 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 ($T_1, T_2, \dots, T_k$).

🗺️ 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):

Croquis 2D Invernadero Split-Plot


📊 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)

Figura Científica agriDesignR


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)

6. Aplicación Web Interactiva (launch_app())

Para investigadores o estudiantes que prefieran una interfaz visual:

library(agriDesignR)
launch_app()

🧪 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 $\times$ Riego $\times$ 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:


👨‍💻 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)

About

Assisted Experimental Design, Topology Planning, and Mixed Models Engine for Agricultural and Biological Sciences in R

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages