| Type: | Package |
| Title: | Data Visualization and Statistical Tools for Agroindustrial Experiments |
| Version: | 0.3.0 |
| Maintainer: | Joaquin Alejandro Salinas Angeles <joaquinsa03@gmail.com> |
| Description: | Set of tools for statistical analysis, visualization, and reporting of agroindustrial and agricultural experiments. The package provides functions to perform one-way and two-way ANOVA with post-hoc tests (Tukey HSD and Duncan MRT), Welch ANOVA for heteroscedastic data, and the Games-Howell post-hoc test as a robust alternative when variance homogeneity fails. Normality of residuals is assessed with the Shapiro-Wilk test and homoscedasticity with the Fligner-Killeen test; the appropriate statistical path is selected automatically based on these diagnostics. Coefficients of variation and statistical power (via one-way ANOVA power analysis) are reported alongside the post-hoc letter display. High-level wrappers allow automated multi-variable analysis with optional clustering by one or two experimental factors, with support for custom level ordering and relabeling. Results are returned as 'ggplot2' boxplots with mean and letter annotations, wide-format summary tables ready for publication or LaTeX rendering, and structured decision summaries for rapid agronomic interpretation. Direct export to Excel spreadsheets and high-resolution image tables is also supported. Functions follow methods widely used in agronomy, field trials, and plant breeding. Key references: Tukey (1949) <doi:10.2307/3001913>; Duncan (1955) <doi:10.2307/3001478>; Welch (1951) <doi:10.2307/2332579>; Games and Howell (1976) <doi:10.2307/2529858>; Shapiro and Wilk (1965) <doi:10.2307/2333709>; Fligner and Killeen (1976) <doi:10.2307/2529096>; Cohen (1988, ISBN:9781138892899); Wickham (2016, ISBN:9783319242750) for 'ggplot2'; see also 'agricolae' https://CRAN.R-project.org/package=agricolae and 'rstatix' https://CRAN.R-project.org/package=rstatix. Version en espanol: Conjunto de herramientas para el analisis estadistico, visualizacion y generacion de reportes en ensayos agroindustriales y agricolas. Incluye ANOVA univariado y bifactorial con pruebas post-hoc (Tukey HSD y Duncan MRT), ANOVA de Welch para datos heterocedasticos y la prueba post-hoc de Games-Howell como alternativa robusta cuando falla la homogeneidad de varianzas. La normalidad de residuos se evalua con la prueba de Shapiro-Wilk y la homogeneidad de varianzas con la prueba de Fligner-Killeen; la ruta estadistica apropiada se selecciona automaticamente segun estos diagnosticos. Se reportan coeficientes de variacion y potencia estadistica junto con las letras de separacion de medias. Los envoltorios de alto nivel permiten analisis multivariable automatizado con agrupamiento opcional por uno o dos factores experimentales, con soporte para orden y etiquetado personalizado de niveles. Los resultados se devuelven como boxplots con anotaciones de medias y letras, tablas resumen en formato ancho listas para publicacion o renderizado en LaTeX, y resumenes de decision para interpretacion agronomica rapida. Tambien se soporta exportacion directa a Excel e imagenes de alta resolucion para informes tecnicos. |
| License: | MIT + file LICENSE |
| Encoding: | UTF-8 |
| Language: | en, es |
| Depends: | R (≥ 3.5.0) |
| Imports: | dplyr, ggplot2, tidyr, stringr, agricolae, stats, pwr, rlang, openxlsx, rstatix, multcompView |
| Suggests: | kableExtra, magick, tinytex, cli, testthat (≥ 3.0.0) |
| Config/testthat/edition: | 3 |
| RoxygenNote: | 7.3.3 |
| URL: | https://github.com/Joa3aquin50/agrobox |
| BugReports: | https://github.com/Joa3aquin50/agrobox/issues |
| LazyData: | true |
| NeedsCompilation: | no |
| Packaged: | 2026-04-13 02:56:50 UTC; JOAQUIN SALINAS |
| Author: | Joaquin Alejandro Salinas Angeles
|
| Repository: | CRAN |
| Date/Publication: | 2026-04-13 05:40:07 UTC |
Boxplot con anotaciones post-hoc estadísticas para experimentos agronómicos / Boxplot with Statistical Post-hoc Annotations for Agronomic Experiments
Description
Genera boxplots con puntos jitter, etiquetas de medias y letras de comparación múltiple para experimentos agronómicos. Soporta facetas con hasta dos variables de agrupación y selecciona automáticamente el método estadístico en función de la normalidad (Shapiro-Wilk) y la homogeneidad de varianzas (Fligner-Killeen).
Usage
agrobox(
data,
test = c("Duncan", "Tukey"),
var.equal = TRUE,
factor,
factor2 = NULL,
orden_factor = NULL,
grupo1_orden = NULL,
grupo2_orden = NULL,
bloque = NULL,
variable,
titulo = NULL,
estructura = NULL,
lim_sup = NULL,
lim_inf = NULL,
colores = NULL
)
Arguments
data |
Data frame con los datos experimentales / A data frame containing the experimental data. |
test |
Método post-hoc: |
var.equal |
Si TRUE usa ANOVA clásico; si FALSE activa Welch / Logical. If TRUE uses classic ANOVA; if FALSE enables Welch path. |
factor |
Nombre de la variable categórica principal / Name of the main categorical variable (treatment). |
factor2 |
Segundo factor opcional para interacción / Optional second factor for interaction. |
orden_factor |
Vector para ordenar/renombrar tratamientos / Vector to reorder/relabel factor levels. |
grupo1_orden |
Igual que orden_factor pero para filas de facetas / Same as orden_factor for row facets. |
grupo2_orden |
Igual que orden_factor pero para columnas de facetas / Same as orden_factor for column facets. |
bloque |
Variable de bloque opcional / Optional blocking variable. |
variable |
Variable numérica de respuesta / Numeric response variable. |
titulo |
Etiqueta del eje Y / Y-axis label. |
estructura |
Especificación de facetas ("fila~columna") / Faceting structure ("row~col"). |
lim_sup |
Límite superior del eje Y / Upper y-axis limit. |
lim_inf |
Límite inferior del eje Y / Lower y-axis limit. |
colores |
Vector de colores / Color vector for factor levels. |
Details
Generates boxplots with jittered points, mean labels, and post-hoc letter annotations for agronomic experiments. Supports faceting by up to two grouping variables and automatic selection of the statistical method based on normality (Shapiro-Wilk) and homoscedasticity (Fligner-Killeen) tests.
La función aplica la siguiente lógica de decisión para cada panel (cluster):
The function applies the following decision logic for each facet panel (cluster):
Prueba de Shapiro-Wilk sobre los residuos del ANOVA. Si la normalidad falla (p <= 0.05), solo se muestran las medias sin letras.
Shapiro-Wilk test on ANOVA residuals. If normality fails (p <= 0.05), only means are shown with no letters.
Si
var.equal = TRUE(ANOVA clásico): se aplica la prueba de Fligner-Killeen. Si falla la homogeneidad, solo se muestran medias. Si pasa, se usa ANOVA + post-hoc Duncan o Tukey.If
var.equal = TRUE(classic ANOVA path): Fligner-Killeen test is applied. If homoscedasticity fails, only means are shown. Otherwise, ANOVA + Duncan or Tukey post-hoc is used.Si
var.equal = FALSE(ruta Welch):Si Fligner pasa (p > 0.05): se usa ANOVA estándar + Duncan o Tukey.
Si Fligner falla: se usa Welch + Games-Howell.
CV y Power solo se reportan cuando ff_p > 0.01.
Si alguna comparación tiene p-valor NA o falta algún grupo en las letras, se eliminan las letras para todo el cluster.
If
var.equal = FALSE(Welch path):If Fligner passes (p > 0.05): standard ANOVA + Duncan or Tukey is used.
If Fligner fails: Welch test + Games-Howell post-hoc is used.
CV and Power are reported only when ff_p > 0.01.
If any pairwise comparison has NA p-value or any group is missing from the letter display, letters are suppressed for the entire cluster.
Los argumentos orden_factor, grupo1_orden y grupo2_orden
aceptan vectores nombrados o no:
The orden_factor, grupo1_orden, and grupo2_orden
arguments accept either unnamed or named vectors:
Vector sin nombre: solo cambia el orden.
Vector nombrado: cambia orden y etiquetas.
Unnamed vector: order only.
Named vector: order + relabeling.
Para vectores nombrados, el nombre corresponde al nivel original y el valor es la etiqueta mostrada. Elementos sin nombre conservan su valor original.
For named vectors, names correspond to original levels and values to display labels. Elements without a name keep their original value.
Si algún tratamiento tiene todas sus observaciones como NA dentro de un cluster, la función se detiene mostrando un error informativo.
If any treatment has all observations as NA within any cluster, the function stops with an informative error.
Value
Lista con cuatro elementos / A list with four elements:
plotObjeto ggplot2 con boxplots y anotaciones / ggplot2 object with boxplots and annotations
tablaTabla resumen con medias, letras, ANOVA, CV y Power / Summary table with means, letters, ANOVA, CV and Power
levelsNiveles del factor mostrados / Displayed factor levels
dataDatos procesados usados en el análisis / Processed data used in the analysis
#'
Examples
library(dplyr)
# Example 1: Single panel, classic ANOVA with Duncan test
set.seed(42)
df1 <- data.frame(
trat = rep(c("T0", "T1", "T2", "T3"), each = 5),
resp = c(
rnorm(5, 10, 1),
rnorm(5, 14, 1),
rnorm(5, 18, 1),
rnorm(5, 22, 1)
)
)
result1 <- agrobox(
data = df1,
factor = "trat",
variable = "resp",
titulo = "Response variable",
orden_factor = c("T0" = "Control", "T1" = "Low",
"T2" = "Medium", "T3" = "High"),
var.equal = TRUE,
test = "Duncan"
)
result1$plot
result1$tabla
# Example 2: One grouping variable (column facets), Welch + Games-Howell
set.seed(99)
df2 <- data.frame(
trat = rep(c("A", "B", "C", "D"), each = 12),
epoca = rep(rep(c("Dry", "Rainy", "Transition"), each = 4), 4),
resp = c(
rnorm(12, 5, 0.3),
rnorm(12, 9, 3.5),
rnorm(12, 7, 2.0),
rnorm(12, 12, 4.8)
)
)
result2 <- agrobox(
data = df2,
factor = "trat",
variable = "resp",
estructura = "~epoca",
titulo = "Response by season",
grupo2_orden = c("Dry", "Transition", "Rainy"),
orden_factor = c("A" = "Control", "B" = "Treatment 1",
"C" = "Treatment 2", "D" = "Treatment 3"),
var.equal = FALSE,
colores = c("gray40", "steelblue", "orange", "red3")
)
result2$plot
result2$tabla
# Example 3: Two grouping variables (row x column facets), with NAs
set.seed(7)
df3 <- expand.grid(
trat = c("T1", "T2", "T3"),
suelo = c("Clay", "Sand"),
riego = c("Drip", "Sprinkler", "Rainfed"),
rep = 1:5
)
df3$yield <- with(df3, {
base <- c(T1 = 8, T2 = 14, T3 = 20)[as.character(trat)]
s <- c(Clay = 0, Sand = 3)[as.character(suelo)]
r <- c(Drip = 2, Sprinkler = 0, Rainfed = -4)[as.character(riego)]
rnorm(nrow(df3), base + s + r, 2)
})
set.seed(15)
df3$yield[sample(nrow(df3), size = round(nrow(df3) * 0.08))] <- NA
result3 <- agrobox(
data = df3,
factor = "trat",
variable = "yield",
estructura = "suelo~riego",
titulo = "Yield (t/ha)",
orden_factor = c("T1" = "Variety 1", "T2" = "Variety 2",
"T3" = "Variety 3"),
grupo1_orden = c("Clay" = "Clay soil", "Sand" = "Sandy soil"),
grupo2_orden = c("Rainfed", "Drip", "Sprinkler"),
var.equal = FALSE,
colores = c("darkgreen", "royalblue", "firebrick")
)
result3$plot
result3$tabla
result3$data
# Example 4: Real Data nitrogeno_liberacion
data(nitrogeno_liberacion)
agrobox(
data = nitrogeno_liberacion,
test = "Tukey",
factor = "trata",
variable = "nh4_mg_lt",
orden_factor = c( "T1" = "Fertilizante (14-4-4)",
"T2" = "Pellet (14-4-4)",
"T3" = "Fertilizante (7-7-19)",
"T4" = "Pellet (7-7-19)"),
grupo1_orden = c("14.4.4" = "Ley 14 N - 4 P2O5 - 4 K2O",
"7.7.19" = "Ley 7 N - 7 P2O5 - 19 K2O"),
grupo2_orden = c("0" = "Día 0",
"1" = "Día 1",
"8" = "Día 8",
"16" = "Día 16",
"41" = "Día 41"),
estructura = "formu~dias",
colores = c("purple3", "green4","black", "red3")
)
# Example 5: Real Data pimiento_hibridacion
data(pimiento_hibridacion)
agrobox(
data = pimiento_hibridacion,
test = "Tukey",
factor = "trata",
bloque = "bloque",
variable = "g_pla",
titulo = "Rendimiento (g/pla)",
orden_factor = c( "T1" = "5",
"T2" = "4",
"T3" = "3"),
grupo2_orden = c("1" = "Día 0",
"4"= "Día 4",
"8" = "Día 8",
"12" = "Día 12",
"16" = "Día 16",
"20" = "Día 20"),
estructura = "~dia",
colores = c("purple3", "green4","black", "red3")
)$plot +
ggplot2::labs(col = "Semanas de hibridación")
Exporta tablas agrobox o agrosintesis a Excel
Description
Escribe una tabla individual o una lista de tablas en un archivo Excel (.xlsx). Cuando se trata de una lista, cada elemento se exporta como una hoja distinta.
Usage
agroexcel(x, file = "resultados_agro.xlsx")
Arguments
x |
data.frame o lista de data.frames. |
file |
nombre del archivo Excel de salida. |
Value
Invisiblemente TRUE si el archivo se genera correctamente.
Examples
## Not run:
# Ejemplo 1: tabla simple desde agrobox
aa <- agrobox(
data = antigua2,
variable = "harvwt",
factor = "trt",
test = "Duncan"
)
write_agro_excel(aa$tabla, file = "tabla_simple.xlsx")
# Ejemplo 2: lista de tablas desde agrosintesis
res <- agrosintesis(
data = df_multi,
variables = c("tn_ha", "peso_fruto"),
estructura = "Variedad~Localidad",
factor = "Fertilizante",
factor2 = "Dosis",
bloque = "Bloque",
test = "Tukey"
)
write_agro_excel(res, file = "resultados_clusters.xlsx")
## End(Not run)
Sintetiza resultados estadisticos para multiples variables
Description
Aplica agrobox() a una o varias variables y consolida
las tablas resumen. Genera ademas una sintesis decisional
orientada a interpretacion rapida.
Usage
agrosintesis(
data,
variables,
estructura = NULL,
verbose = FALSE,
report = TRUE,
color = TRUE,
...
)
Arguments
data |
data.frame con los datos experimentales. |
variables |
vector de nombres de variables respuesta. |
estructura |
formula en texto tipo "Factor1~Factor2" para clusters. |
verbose |
Logical. If TRUE, prints progress messages. |
report |
logical, imprime reporte ejecutivo en consola. |
color |
logical, usa color en el reporte (si esta disponible). |
... |
argumentos adicionales pasados a |
Value
- Sin clusters: lista con tabla y decision
- Con clusters: lista de dichas listas por cluster
Exporta tablas de resultados a PNG via LaTeX (modo rapido)
Description
Genera una imagen PNG de alta calidad a partir de una tabla (data.frame)
o una lista de tablas (por ejemplo salida de agrosintesis()),
utilizando LaTeX para el renderizado y convirtiendo el PDF resultante
en imagen.
Usage
agrotabla(x, out_dir = getwd(), file_stub = "TABLA", dpi = 600)
Arguments
x |
data.frame o lista de data.frames. Puede ser |
out_dir |
directorio donde se guardaran los archivos generados. |
file_stub |
nombre base del archivo cuando |
dpi |
resolucion en puntos por pulgada usada al convertir PDF a PNG. |
Details
Esta funcion esta pensada para generar reportes rapidos y elegantes. Debido a que crea archivos PDF y PNG, sus ejemplos no se ejecutan automaticamente durante los checks de CRAN.
Los nombres de archivos se sanitizan automaticamente para ser compatibles con Windows, LaTeX y sistemas de archivos estandar. Los guiones bajos en los encabezados de columnas se escapan para evitar errores de compilacion LaTeX.
Value
Invisiblemente TRUE si la exportacion se realiza correctamente.
Examples
## Not run:
# Ejemplo 1: tabla individual desde agrobox
aa <- agrobox(
data = antigua2,
variable = "harvwt",
factor = "trt",
test = "Duncan"
)
write_rapido(
aa$tabla,
out_dir = "reportes_png",
file_stub = "Rendimiento_site"
)
# Ejemplo 2: multiples tablas desde agrosintesis
res <- agrosintesis(
data = df_multi,
variables = c("tn_ha", "peso_fruto"),
estructura = "Variedad~Localidad",
factor = "Fertilizante",
factor2 = "Dosis",
bloque = "Bloque",
test = "Tukey"
)
write_rapido(
res,
out_dir = "png_clusters"
)
## End(Not run)
Curva de liberacion de nitrogeno
Description
Datos experimentales de liberación de nitrógeno (NH4, NO3 y K) en función del tiempo bajo diferentes formulaciones y estados (fertilizante vs pellet).
Usage
nitrogeno_liberacion
Format
A data frame with 60 rows and 13 variables:
- formu
Formulacion (ej. "14.4.4", "7.7.19")
- estado
Tipo de producto (fertilizante o pellet)
- trata
Tratamiento experimental (T1–T4)
- fecha
Fecha de evaluacion
- dias
Dias desde el inicio del experimento
- rep
Repeticion
- vol_extractante
Volumen del extractante (mL)
- ml_lixiviado
Volumen lixiviado (mL)
- ph_lixiviado
pH del lixiviado
- ce_lixiviado
Conductividad electrica del lixiviado
- nh4_mg_lt
Amonio (mg/L)
- no3_mg_lt
Nitrato (mg/L)
- k_mg_lt
Potasio (mg/L)
Details
Experimental data of nitrogen release (NH4, NO3 and K) over time under different formulations and physical states (fertilizer vs pellet).
Source
Datos de tesis del autor
Datos de hibridación en pimiento / Pepper hybridization dataset
Description
Datos experimentales del proceso de hibridación en pimiento, comparando tres calendarios de hibridación (3, 4 y 5 semanas). El dataset registra la producción de flores, frutos y semilla por días efectivos de hibridación en un diseño con bloques.
Usage
pimiento_hibridacion
Format
A data frame with 232 rows and 10 variables:
- trata
Tratamiento experimental
- bloque
Bloque experimental
- descripcion
Duración del periodo de hibridación (3, 4 o 5 semanas)
- dia
Día efectivo de hibridación
- g_semilla
Producción de semilla (g)
- n_frutos
Número de frutos
- n_flores
Número de flores emasculadas
- n_plantas
Número de plantas por parcela
- g_pla
Gramos de semilla por planta
- g_fru
Gramos de semilla por fruto
Details
Experimental dataset from a pepper hybridization process, comparing three hybridization schedules (3, 4 and 5 weeks). The data include flower production, fruit set and seed yield across effective hybridization days under a block design.
Los datos muestran que la mayor acumulación de rendimiento ocurre en los primeros días de hibridación, disminuyendo progresivamente en evaluaciones posteriores.
The data show that most yield accumulation occurs during the first hybridization days, followed by a gradual decline over time.
Source
Datos experimentales del autor / Author's experimental data