Herramientas Automatizadas y Reproducibles para Modelos Lineales, Mixtos y Gráficos Científicos en R
easyModels es un paquete de R desarrollado por Paúl Alexander López Peña (Pontificia Universidad Católica de Chile) diseñado para automatizar y democratizar el análisis bioestadístico riguroso en ciencias biológicas, agronomía, ecología y medicina experimental.
Su filosofía central es eliminar la fricción metodológica al trabajar con diseños experimentales y modelos jerárquicos: convierte flujos complejos de fórmulas en lme4/glmmTMB, auditoría automática de supuestos, diagnósticos de DHARMa, comparaciones post-hoc y gráficos de publicación con letras de significancia (Tukey CLD) en una experiencia directa, robusta y 100% reproducible.
Datos Crudos ──► sugerir_modelo() ──► analizar_*() ──► verificar_supuestos() ──► graficar_predichos()
(Ensayo) (Asistente Box-Cox) (LMM / GLMM) (Auditoría Completa) (Gráficos con Letras CLD)
- 🌾 Diseños Experimentales Clásicos y Complejos:
- Wrappers directos para Bloques Completos al Azar (RCBD), Parcelas Divididas (Split-Plot), Cuadrados Latinos (LSD), Franjas Divididas (Strip-Plot / Criss-Cross) y Medidas Repetidas en el tiempo.
- 📈 Jerarquía Unificada de Modelos (Clase S3
easy_model):- Modelos Lineales (
analizar_lm), Modelos Lineales Mixtos (analizar_lmm), GLM con 17 familias (analizar_glm) y GLMM con 16 distribuciones (analizar_glmmviaglmmTMBylme4).
- Modelos Lineales (
- 🔍 Auditoría Automatizada de Supuestos (
verificar_supuestos()):- Batería integrada: Normalidad (Shapiro-Wilk), Homocedasticidad (Breusch-Pagan / Levene), Multicolinealidad (VIF), Sobredispersión y detección de Influyentes (Distancia de Cook
$> 4/n$ ).
- Batería integrada: Normalidad (Shapiro-Wilk), Homocedasticidad (Breusch-Pagan / Levene), Multicolinealidad (VIF), Sobredispersión y detección de Influyentes (Distancia de Cook
- 🤖 Asistente Inteligente de Familias y Transformaciones (
sugerir_modelo()):- Inspecciona ceros, proporciones
$(0,1)$ , conteos y sesgo positivo, calculando el parámetro óptimo Box-Cox ($\lambda$ ) y recomendando la familia de GLM adecuada.
- Inspecciona ceros, proporciones
- 📊 Selección y Comparación de Modelos (
comparar_modelos()):- Ordenamiento por
$AIC$ ,$\Delta AIC$ , Pesos de Akaike ($w_i$ ),$BIC$ ,$LogLik$ y$R^2$ Marginal/Condicional.
- Ordenamiento por
- 🎨 Gráficos Científicos Listos para Publicación (
graficar_predichos(),graficar_interaccion()):- Gráficos de barras, puntos o líneas con letras de significancia compacta (Tukey CLD), barras de error al 95% y paletas académicas (
teal,okabe_ito,viridis,cividis,set2).
- Gráficos de barras, puntos o líneas con letras de significancia compacta (Tukey CLD), barras de error al 95% y paletas académicas (
- 📄 Tablas Formateadas para Tesis y Artículos:
-
exportar_tabla_anova()yexportar_tabla_posthoc()en formato Markdown, LaTeX y HTML.
-
Puedes instalar la versión de desarrollo de easyModels directamente desde GitHub usando devtools, remotes o pak:
# Opción 1: Usando devtools
if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
devtools::install_github("PALP31/easyModels")
# Opción 2: Usando pak (recomendado por velocidad)
# if (!requireNamespace("pak", quietly = TRUE)) install.packages("pak")
# pak::pkg_install("PALP31/easyModels")Cargar la librería e inspeccionar el manual:
library(easyModels)
# Acceder a la documentación global del paquete
?easyModelsA continuación se muestra un flujo completo de análisis bioestadístico para un ensayo agronómico en bloques:
library(easyModels)
library(ggplot2)
# 1. Datos simulados: Rendimiento (ton/ha) bajo 3 tratamientos en 5 bloques
set.seed(123)
datos <- data.frame(
Rendimiento = rnorm(30, mean = rep(c(20, 26, 18), each = 10), sd = 2.5),
Tratamiento = factor(rep(c("Control", "Bioestimulante", "Fertilizacion"), each = 10)),
Bloque = factor(rep(1:5, times = 6))
)
# 2. Ajustar el Modelo en Bloques Completos al Azar (RCBD / LMM)
modelo <- analizar_bloques_azar(
datos = datos,
formula_fijos = Rendimiento ~ Tratamiento,
bloque = "Bloque",
diagnosticos = FALSE
)
# 3. Auditar supuestos automáticamente
verificar_supuestos(modelo)
# 4. Tabla ANOVA Tipo III formateada
exportar_tabla_anova(modelo, formato = "markdown")
# 5. Generar gráfico de barras de publicación con letras de Tukey (CLD)
grafico <- graficar_predichos(
modelo = modelo,
predictor = "Tratamiento",
tipo_grafico = "barras",
mostrar_letras = TRUE,
paleta = "teal",
titulo = "Efecto de Tratamientos sobre el Rendimiento de Grano",
eje_y = "Rendimiento (ton/ha)"
)
print(grafico)| Función | Tipo de Diseño Agronómico / Biológico | Estructura Aleatoria / Fórmulas |
|---|---|---|
analizar_lm() |
Diseño Completamente al Azar (CRD) | Efectos fijos gaussianos |
analizar_bloques_azar() |
Bloques Completos al Azar (RCBD) | (1 | Bloque) |
analizar_parcelas_divididas() |
Parcelas Divididas (Split-Plot) | (1 | Bloque) + (1 | Bloque:Principal) |
analizar_latino() |
Cuadrado Latino (LSD) | (1 | Fila) + (1 | Columna) |
analizar_medidas_repetidas() |
Ensayos con Medidas Repetidas en el Tiempo | (1 | Sujeto) o (1 | Bloque/Sujeto) |
analizar_strip_plot() |
Franjas Divididas (Strip-Plot / Criss-Cross) | (1 | Bloque) + (1 | Bloque:A) + (1 | Bloque:B) |
- Continuas / Positivas:
gaussian,gamma,gamma_inverse,gaussian_inversa,tweedie. - Binarias / Tasas:
binomial(logit, probit, cloglog),quasibinomial,beta(viabetareg). - Conteos:
poisson,quasipoisson,negativa_binomial(viaMASS::glm.nb),zip(Zero-Inflated Poisson),zinb(Zero-Inflated Negative Binomial). - Categóricas:
ordinal(viaMASS::polr),multinomial(viannet::multinom).
Modelos jerárquicos mixtos con glmmTMB y lme4::glmer:
gaussian,binomial(logit, probit, cloglog),poisson,negativa_binomial(nbinom1, nbinom2),gamma,gamma_inverse,lognormal,beta,tweedie,zip,zinb,zifgamma,ordinal.
- 📋
resumir_ajuste(): Genera una fila resumen lista para informes con fórmula, familia, AIC, BIC,$R^2$ e historial de observaciones usadas vs. excluidas. - 🧭 Transparencia en datos faltantes: Detección automática de observaciones omitidas por
NApara evitar sesgos silenciosos. - ✅ Validación estricta de variables y fórmulas antes de iniciar ajustes iterativos.
- 📚 Documentación global del paquete mediante
?easyModels. - 🛠️ Extracción unificada de coeficientes (
obtener_coeficientes_fijos()) y Odds Ratios (analizar_odds_ratio()). - 🎨 Posicionamiento inteligente
position_dodge()para evitar solapamiento de letras Tukey (CLD) en modelos bifactoriales. - 🧪 80 pruebas unitarias con
testthat.
Si utilizas easyModels en tus investigaciones, tesis o artículos científicos, por favor cita el paquete de la siguiente manera:
citation("easyModels")O en formato BibTeX:
@Manual{easyModels2026,
title = {easyModels: Herramientas Automatizadas para Modelos Lineales, Mixtos y Gráficos Científicos},
author = {Paúl Alexander López Peña},
year = {2026},
note = {R package version 0.4.2},
url = {https://github.com/PALP31/easyModels},
}Paúl Alexander López Peña
Profesor de Aplicaciones Estadísticas (Pregrado) • Estudiante de Doctorado en Biotecnología Vegetal
Pontificia Universidad Católica de Chile (PUC)
- 📧 Email: paullopezpena@gmail.com | plopezp7@estudiante.uc.cl
- 🐙 GitHub: @PALP31
- 🌐 Repositorio: https://github.com/PALP31/easyModels

