¿Es posible incorporar en el curso de diseño experimental el uso del paquete ggstatsplot?
Sí, es posible y muy conveniente incorporar
ggstatsplot —ese es el nombre correcto del
paquete— en el curso de Diseño Experimental.
ggstatsplot integra gráficos construidos con
ggplot2 y resultados estadísticos dentro de una misma
visualización: prueba de hipótesis, valor p, tamaño del efecto,
intervalos de confianza y comparaciones múltiples. La versión actual en
CRAN es 1.0.0, publicada el 23 de abril de
2026, y requiere R 4.3.0 o superior. (R Archive Network)
El paquete puede servir como puente entre tres componentes que usted ya desarrolla:
Por ejemplo, ggbetweenstats() permite comparar una
variable cuantitativa entre varios tratamientos, mostrando
simultáneamente:
La documentación oficial señala precisamente que esta función está destinada a explorar diferencias entre grupos o condiciones y comparar visualmente sus distribuciones. (Indrajeet Patil)
No sugiero convertirlo en un tema independiente extenso, sino incorporarlo transversalmente.
| Tema del curso | Función sugerida | Aplicación |
|---|---|---|
| Exploración inicial | gghistostats() |
Distribución de la variable respuesta |
| Diseño completamente aleatorizado | ggbetweenstats() |
Comparación visual de tratamientos |
| Comparaciones múltiples | ggbetweenstats() |
Diferencias pareadas ajustadas |
| Diseños con bloques | grouped_ggbetweenstats() |
Comparaciones separadas por bloque |
| Medidas repetidas | ggwithinstats() |
Comparaciones dentro de la misma unidad experimental |
| Correlación entre variables | ggscatterstats() |
Relación entre variables cuantitativas |
| Matriz de correlaciones | ggcorrmat() |
Exploración previa a regresión o RSM |
| Modelos ajustados | ggcoefstats() |
Visualización de coeficientes y efectos |
El paquete admite enfoques paramétricos, no paramétricos, robustos y bayesianos, lo cual también permite mostrar a los estudiantes que el ANOVA clásico no es la única alternativa analítica. (R Archive Network)
Supongamos un experimento agroindustrial con cuatro temperaturas de secado y una variable respuesta correspondiente al porcentaje de humedad final.
# Instalar una sola vez
install.packages("ggstatsplot")
# Cargar paquetes
library(ggstatsplot)
library(ggplot2)
# Datos simulados
set.seed(123)
datos_secado <- data.frame(
temperatura = factor(
rep(c("40 °C", "50 °C", "60 °C", "70 °C"), each = 8)
),
humedad = c(
rnorm(8, mean = 18, sd = 1.5),
rnorm(8, mean = 15, sd = 1.4),
rnorm(8, mean = 12, sd = 1.2),
rnorm(8, mean = 10, sd = 1.1)
)
)
# Gráfico con ANOVA y comparaciones múltiples
ggbetweenstats(
data = datos_secado,
x = temperatura,
y = humedad,
type = "parametric",
pairwise.display = "significant",
p.adjust.method = "tukey",
centrality.plotting = TRUE,
title = "Efecto de la temperatura sobre la humedad final",
xlab = "Temperatura de secado",
ylab = "Humedad final (%)"
)
A partir del gráfico deberían identificar:
Sin embargo, el estudiante también debe construir explícitamente el modelo:
# Modelo de análisis de varianza
modelo_dca <- aov(humedad ~ temperatura, data = datos_secado)
# Tabla ANOVA
summary(modelo_dca)
# Comparaciones múltiples de Tukey
TukeyHSD(modelo_dca)
De esta manera, ggstatsplot complementa
el análisis, pero no reemplaza la formulación del modelo.
Cuando los supuestos del ANOVA no se cumplen razonablemente, puede utilizarse:
ggbetweenstats(
data = datos_secado,
x = temperatura,
y = humedad,
type = "nonparametric",
pairwise.display = "significant",
p.adjust.method = "holm",
title = "Comparación no paramétrica de temperaturas",
xlab = "Temperatura",
ylab = "Humedad final (%)"
)
En este caso, el gráfico utiliza una alternativa no paramétrica para la comparación global y las comparaciones pareadas correspondientes.
Esto permitiría plantear una actividad pedagógica muy valiosa:
Analice los mismos datos mediante un enfoque paramétrico y uno no paramétrico. Compare las conclusiones, los tamaños del efecto y las diferencias entre tratamientos.
En un experimento factorial, puede visualizarse la respuesta de un factor dentro de cada nivel del segundo factor.
set.seed(456)
datos_factorial <- expand.grid(
temperatura = factor(c("50 °C", "60 °C", "70 °C")),
tiempo = factor(c("2 h", "4 h")),
repeticion = 1:6
)
datos_factorial$rendimiento <- with(
datos_factorial,
70 +
5 * as.numeric(temperatura) +
3 * as.numeric(tiempo) +
2 * as.numeric(temperatura) * as.numeric(tiempo) +
rnorm(nrow(datos_factorial), 0, 2)
)
grouped_ggbetweenstats(
data = datos_factorial,
x = temperatura,
y = rendimiento,
grouping.var = tiempo,
type = "parametric",
pairwise.display = "significant",
title.prefix = "Tiempo de secado:"
)
Este gráfico puede ayudar a estudiar visualmente cómo cambia el efecto de la temperatura según el tiempo de secado.
No obstante, la interacción debe evaluarse con el modelo factorial:
modelo_factorial <- aov(
rendimiento ~ temperatura * tiempo,
data = datos_factorial
)
summary(modelo_factorial)
grouped_ggbetweenstats() realiza análisis separados
dentro de cada grupo. Por tanto, no sustituye la prueba formal
de interacción del modelo factorial.
La secuencia correcta sería:
ggstatsplot para comunicar visualmente las
comparaciones.ggstatsplot es excelente para visualización inferencial,
pero no debe utilizarse como sustituto de:
Para diseños más especializados seguirían siendo necesarios paquetes como:
library(DoE.base)
library(FrF2)
library(rsm)
library(emmeans)
library(multcomp)
library(car)
library(performance)
Especialmente en superficie de respuesta,
ggstatsplot tendría un papel secundario. El paquete
rsm continuaría siendo el instrumento principal para
ajustar modelos de primer y segundo orden, realizar análisis canónico y
estudiar trayectorias de máximo ascenso.
Sugiero agregar una unidad transversal denominada:
ggstatsplotEl estudiante construye, interpreta y comunica visualizaciones estadísticas que integran la distribución de los datos, las pruebas de hipótesis, los tamaños del efecto, los intervalos de confianza y las comparaciones múltiples, sin desligarlas del diseño experimental ni del modelo estadístico correspondiente.
Entregar a cada estudiante un conjunto de datos experimental diferente y solicitar:
ggstatsplot.Sí lo incorporaría, particularmente en:
Su mayor aporte pedagógico sería ayudar a los estudiantes a abandonar la práctica de informar únicamente:
“Como el valor p es menor que 0,05, existen diferencias significativas”.
En su lugar, los conduciría a interpretar conjuntamente:
Así, ggstatsplot encaja muy bien con el enfoque del
curso: no solo ejecutar pruebas estadísticas, sino comprender,
interpretar y comunicar adecuadamente los resultados
experimentales.