Generalidades del Diseño de Experimentos

Conceptos Básicos

Experimento

Un experimento es una prueba o serie de pruebas en las que se realizan cambios deliberados en las variables de entrada de un proceso o sistema para observar los cambios en la variable de respuesta.


Diseño de Experimentos

El diseño de experimentos es el proceso de planificar el experimento de forma que los datos recolectados puedan analizarse con métodos estadísticos, lo que permite llegar a conclusiones válidas y objetivas.

Puntos clave: - Incluye dos aspectos fundamentales: 1. Diseño del experimento (cómo se ejecuta) 2. Análisis estadístico (cómo se interpretan los resultados) - Ambos están estrechamente relacionados, ya que el método de análisis depende del diseño empleado.


Factores Controlables

Variables del proceso a las que se les pueden fijar niveles intencionalmente.


Factores No Controlables

Variables del proceso que no se pueden manipular, pero que pueden afectar la respuesta del experimento.


Variable Respuesta

Medida utilizada para evaluar el efecto de cada prueba experimental.


Niveles

Valores asignados a cada factor estudiado.


Tratamientos

Combinación de niveles de todos los factores involucrados.


Error Aleatorio

Variabilidad observada que no se puede explicar por los factores estudiados.


Error Experimental

Parte del error aleatorio que proviene de errores en la planeación o ejecución del experimento.


Principios Básicos del Diseño Experimental

Réplicas

Definición: Repetición del experimento básico bajo las mismas condiciones.

Propósitos: - Estimar el error experimental. - Aumentar la precisión de las conclusiones.

Ejemplo:
Si se tratan 5 muestras con templado en aceite y 5 con templado en agua salada, se tienen 5 réplicas de cada tratamiento.


Aleatorización

Definición: Asignar el material experimental y el orden de las corridas al azar.

Propósitos: - Garantizar que las observaciones sean independientes. - Minimizar el efecto de factores no controlados. - Evitar sesgos sistemáticos.

Beneficio clave:
Hace válido el uso de métodos estadísticos al cumplir el supuesto de independencia de errores.


Formación de Bloques

Definición: Agrupar las unidades experimentales en bloques internamente homogéneos.

Propósitos: - Reducir la variabilidad causada por factores perturbadores. - Mejorar la precisión en la comparación entre tratamientos.

Ejemplo:
Si el experimento requiere usar dos lotes de materia prima que podrían ser diferentes, se pueden formar bloques para controlar esa variabilidad y no afectar el análisis principal.


Pasos para la Planeación y Ejecución de un Experimento

Para garantizar que el diseño experimental sea válido y genere conclusiones confiables, se recomienda seguir la siguiente secuencia de pasos:


1️ Identificación del Problema y Planteamiento de Objetivos

  • Definir claramente qué se quiere estudiar y por qué.
  • Formular objetivos concretos y medibles (por ejemplo: comparar el efecto de dos tratamientos sobre el rendimiento).

2️ Determinación de los Factores, Niveles y Tratamientos

  • Factores: Variables controlables que se pueden manipular (ej. temperatura, tipo de fertilizante).
  • Niveles: Valores específicos de cada factor (ej. 20°C, 30°C, 40°C).
  • Tratamientos: Combinaciones de niveles de todos los factores.

3️ Determinación de la(s) Variable(s) de Respuesta

  • Seleccionar la variable que mide el efecto del tratamiento.
  • Asegurar que pueda ser medida de manera objetiva y repetible.

4️ Elección del Diseño Experimental

  • Seleccionar el tipo de diseño según el problema y los recursos:
    • Diseño completamente al azar
    • Bloques aleatorizados
    • Diseño factorial
    • Diseño en parcelas divididas, etc.

5️ Número de Réplicas del Experimento Básico

  • Determinar cuántas veces se repetirá cada tratamiento para:
    • Estimar el error experimental.
    • Aumentar la precisión de las conclusiones.

6 Recursos y Materiales Disponibles

  • Verificar la viabilidad del experimento:
    • Tiempo
    • Presupuesto
    • Materiales y equipos
    • Personal necesario

7️ Montaje y Desarrollo del Experimento

  • Ejecutar el experimento siguiendo el diseño planificado.
  • Aplicar aleatorización para asignar tratamientos.
  • Controlar condiciones externas en la medida de lo posible.

8️ Análisis Estadístico de los Datos

  • Analizar los datos utilizando el método adecuado según el diseño:
    • ANOVA
    • Pruebas de comparación de medias
    • Modelos lineales o no lineales
  • Verificar los supuestos estadísticos antes de interpretar resultados.

9 Conclusiones y Recomendaciones

  • Resumir los hallazgos principales en función de los objetivos planteados.
  • Proponer acciones, mejoras o estudios futuros basados en los resultados obtenidos.

Introducción a R y RStudio

Antes de iniciar con el análisis de experimentos, es importante conocer R y RStudio, las herramientas que utilizaremos durante el curso.


¿Qué es R?

  • R es un lenguaje de programación y entorno para el análisis estadístico y la visualización de datos.
  • Es gratuito y de código abierto.
  • Tiene miles de paquetes que facilitan tareas como regresiones, diseño de experimentos, machine learning y más.

¿Qué es RStudio?

  • Es una interfaz amigable que facilita el uso de R.
  • Permite escribir código, visualizar resultados, ver el historial de comandos y gestionar proyectos de manera organizada.

Instalación

  1. Descargar R desde https://cran.r-project.org
  2. Descargar RStudio desde https://posit.co/download/rstudio/
  3. Instalar primero R y luego RStudio.

Primeros pasos en R

Podemos usar R como una calculadora. Prueba los siguientes comandos:

# Operaciones básicas
2 + 3       # Suma
## [1] 5
10 - 4      # Resta
## [1] 6
5 * 6       # Multiplicación
## [1] 30
15 / 3      # División
## [1] 5
2^3         # Potencia
## [1] 8
# Guardar resultados en un objeto
x <- 10
y <- 5
x + y       # Suma de objetos
## [1] 15
x * y       # Multiplicación de objetos
## [1] 50

Directorio de trabajo

El directorio de trabajo es la carpeta donde R busca y guarda archivos.

# Ver directorio de trabajo actual
getwd()
## [1] "C:/Users/LaboratorioCIDSE/Downloads"
# Cambiar el directorio de trabajo (reemplazar por la ruta deseada)
# setwd("C:/Users/TuUsuario/Documentos/MiProyecto")

Instalación de paquetes

Los paquetes amplían las funciones de R. Para instalar y usar un paquete:

# Instalar un paquete (solo una vez)
# install.packages("DataExplorer")

# Cargar el paquete en la sesión (cada vez que abras R)
# library(DataExplorer)

Librerías Comunes en R para Análisis de Datos

A continuación se presenta un listado de las librerías más utilizadas en R para el análisis de datos, junto con una breve descripción de su propósito principal.

Librería Descripción
tidyverse Conjunto de paquetes (dplyr, ggplot2, tidyr, readr, tibble, stringr, forcats) que facilitan la manipulación, visualización y análisis de datos de manera coherente y eficiente.
dplyr Parte de tidyverse, diseñada para la manipulación de datos (seleccionar, filtrar, agrupar, resumir, ordenar) de forma muy intuitiva.
ggplot2 Librería para visualización de datos usando la gramática de gráficos. Permite crear gráficos personalizados y de alta calidad.
tidyr Herramienta para limpieza y reestructuración de datos. Convierte datos de formato ancho a largo (y viceversa).
readr Lectura rápida y eficiente de archivos de texto como CSV y TSV.
tibble Crea marcos de datos (data frames) más modernos, limpios y fáciles de usar.
data.table Similar a dplyr, pero optimizada para manejo de grandes volúmenes de datos con alta velocidad.
stringr Facilita el trabajo con cadenas de texto (buscar, reemplazar, transformar).
lubridate Manejo de fechas y horas de manera sencilla (conversiones, extracciones, operaciones).
readxl / writexl Lectura y escritura de archivos Excel (.xls, .xlsx) sin necesidad de instalar Excel.
openxlsx Otra opción muy usada para leer/escribir Excel con mayor personalización de hojas, estilos y formatos.
haven Permite importar datos de SPSS, Stata y SAS a R.
janitor Utilidad para limpiar nombres de variables y crear tablas de frecuencias rápidas.
skimr Muestra un resumen estadístico rápido de todas las variables de un data frame.
car Conjunto de funciones para análisis estadístico avanzado y regresión.
caret Framework para machine learning, permite entrenar y evaluar modelos de forma unificada.
randomForest Implementa el algoritmo de bosques aleatorios para clasificación y regresión.
shiny Construcción de aplicaciones web interactivas directamente desde R.
plotly Visualizaciones interactivas (gráficos dinámicos en HTML).
sf Trabaja con datos espaciales (mapas, geolocalización).
cluster / factoextra Métodos para análisis de conglomerados y su visualización.

Operaciones Lógicas en R

Las operaciones lógicas permiten comparar valores y filtrar datos.

# Ejemplos de operaciones lógicas
3 > 5      # FALSE
## [1] FALSE
10 <= 10   # TRUE
## [1] TRUE
4 == 4     # TRUE (igualdad)
## [1] TRUE
7 != 3     # TRUE (diferente)
## [1] TRUE
TRUE & FALSE  # AND lógico
## [1] FALSE
TRUE | FALSE  # OR lógico
## [1] TRUE

Estructuras de Datos y calcular estadísticas básicas

R tiene varias estructuras para almacenar y manipular datos:

Estructura Descripción Ejemplo
Vector Colección de elementos del mismo tipo. c(1, 2, 3, 4)
Matriz Arreglo bidimensional con elementos del mismo tipo. matrix(1:6, nrow=2)
Lista Colección de elementos de distintos tipos. list(nombre="Ana", edad=25)
Data Frame Tabla de datos donde cada columna puede ser de distinto tipo. data.frame(x=1:3, y=c("A","B","C"))
Factor Variable categórica. factor(c("M","F","M"))
# Crear un vector con datos
pesos <- c(50, 55, 60, 65, 70)

# Calcular estadísticas
mean(pesos)   # Media
## [1] 60
median(pesos) # Mediana
## [1] 60
sd(pesos)     # Desviación estándar
## [1] 7.905694
summary(pesos) # Resumen completo
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      50      55      60      60      65      70
# Ejemplo práctico
mi_vector <- c(10, 20, 30)
mi_matriz <- matrix(1:6, nrow=2)
mi_lista <- list(nombre="Daniel", edad=22, notas=c(4.5, 3.8))
mi_df <- data.frame(Nombre=c("Ana","Luis"), Edad=c(20,25))

Tip: R es sensible a mayúsculas y minúsculas, así que X y x son diferentes objetos.


Funciones en R

Las funciones nos permiten automatizar tareas y reutilizar código.`

# Definir una función en R
suma_numeros <- function(a, b){
  resultado <- a + b
  return(resultado)
}

# Llamar a la función
suma_numeros(5, 10)
## [1] 15

También existen funciones predefinidas en R, por ejemplo:

mean(c(10, 20, 30))  # media
## [1] 20
sum(c(1, 2, 3, 4))   # suma
## [1] 10
length(c("A","B","C")) # número de elementos
## [1] 3

Gráficos Básicos

R permite generar gráficos de manera sencilla con funciones base.

# Datos de ejemplo
x <- c(10, 20, 30, 40, 50)
y <- c(5, 15, 25, 35, 45)

# Gráfico de dispersión
plot(x, y, main="Gráfico de Dispersión", xlab="Eje X", ylab="Eje Y", col="blue", pch=19)

# Histograma
hist(x, main="Histograma de X", xlab="Valores de X", col="lightblue", border="black")

# Boxplot
boxplot(y, main="Diagrama de Caja de Y", col="orange")

También puedes usar ggplot2 para gráficos más personalizados:

library(ggplot2)

datos <- data.frame(x, y)

# Gráfico con ggplot2
ggplot(datos, aes(x, y)) +
  geom_point(color="red", size=3) +
  labs(title="Gráfico de Dispersión con ggplot2",
       x="Eje X",
       y="Eje Y")


Material de Apoyo

A continuación un recurso recomendado para profundizar en la Introducción a R y RStudio:


Ejercicios

Ejercicio 1: Rendimiento de Tres Fertilizantes

Un investigador desea comparar el efecto de tres fertilizantes en el rendimiento de un cultivo de maíz.
Se cuenta con 12 parcelas homogéneas, y se asignan de manera aleatoria los tres tratamientos, con 4 repeticiones cada uno.

Objetivo: Determinar si existen diferencias significativas entre los fertilizantes en cuanto al rendimiento.

Diseño del Experimento

Creamos el diseño completamente al azar:

set.seed(2025)

# Definir tratamientos y repeticiones
tratamientos <- c("Fert_A", "Fert_B", "Fert_C")
r <- 4  # 4 repeticiones por tratamiento

# Crear el diseño experimental
diseno <- data.frame(
  Parcela = 1:(length(tratamientos) * r),
  Tratamiento = rep(tratamientos, each = r)
)

# Reordenar aleatoriamente las parcelas
diseno <- diseno[sample(1:nrow(diseno)), ]
row.names(diseno) <- NULL
diseno
##    Parcela Tratamiento
## 1       12      Fert_C
## 2        4      Fert_A
## 3       10      Fert_C
## 4        1      Fert_A
## 5        7      Fert_B
## 6        6      Fert_B
## 7        3      Fert_A
## 8        2      Fert_A
## 9        9      Fert_C
## 10      11      Fert_C
## 11       5      Fert_B
## 12       8      Fert_B

Simulación de Datos de Rendimiento

Suponemos que el fertilizante C es el más efectivo. Simulamos los datos de rendimiento en toneladas por hectárea:

set.seed(2025)

diseno$Rendimiento <- c(
  rnorm(r, mean = 8, sd = 0.5),  # Fert_A
  rnorm(r, mean = 9, sd = 0.5),  # Fert_B
  rnorm(r, mean = 10, sd = 0.5)  # Fert_C
)

diseno
##    Parcela Tratamiento Rendimiento
## 1       12      Fert_C    8.310378
## 2        4      Fert_A    8.017821
## 3       10      Fert_C    8.386577
## 4        1      Fert_A    8.636245
## 5        7      Fert_B    9.185488
## 6        6      Fert_B    8.918573
## 7        3      Fert_A    9.198556
## 8        2      Fert_A    8.960005
## 9        9      Fert_C    9.827517
## 10      11      Fert_C   10.351076
## 11       5      Fert_B    9.802152
## 12       8      Fert_B    9.122473

Ajuste del Modelo ANOVA

El ANOVA (Análisis de Varianza) permite comparar varias medias al mismo tiempo para determinar si existen diferencias significativas entre tratamientos.

  • Hipótesis:
    • Nula: \(H_0: \mu_1 = \mu_2 = \dots = \mu_k\)
    • Alternativa: \(H_1:\) al menos una media es diferente

Analizamos si hay diferencias entre los fertilizantes.

modelo <- aov(Rendimiento ~ Tratamiento, data = diseno)
summary(modelo)
##             Df Sum Sq Mean Sq F value Pr(>F)
## Tratamiento  2  0.766  0.3829   0.785  0.485
## Residuals    9  4.391  0.4879

Conclusión: En este ejemplo, 𝑝= 0.485 > 0.05, por lo que no hay evidencia suficiente para afirmar que los tratamientos difieren. Las medias parecen ser estadísticamente iguales.

Comparaciones de Medias (Tukey)

Si encontramos diferencias, identificamos cuáles fertilizantes son distintos.

TukeyHSD(modelo)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Rendimiento ~ Tratamiento, data = diseno)
## 
## $Tratamiento
##                      diff        lwr      upr     p adj
## Fert_B-Fert_A  0.55401470 -0.8249614 1.932991 0.5254496
## Fert_C-Fert_A  0.51573054 -0.8632456 1.894707 0.5695296
## Fert_C-Fert_B -0.03828416 -1.4172603 1.340692 0.9966942
plot(TukeyHSD(modelo), las = 1)

Todas las líneas de comparación (B-Fert_A, C-Fert_A, C-Fert_B) cruzan el 0.

Por lo tanto: ninguna diferencia entre tratamientos es estadísticamente significativa al 95% de confianza.

Visualización de resultados

Para interpretar mejor, generamos un boxplot:

boxplot(Rendimiento ~ Tratamiento,
        data = diseno,
        col = c("skyblue", "orange", "lightgreen"),
        main = "Rendimiento por Fertilizante",
        ylab = "Rendimiento (ton/ha)")

El boxplot muestra que Fert_A tiende a producir el mayor rendimiento promedio, Fert_B presenta rendimientos intermedios y consistentes, y Fert_C ofrece rendimientos más bajos y variables.

Conclusión: El análisis muestra que, aunque el fertilizante Fert_A presentó el mayor rendimiento promedio en el cultivo de maíz, seguido de Fert_B y luego Fert_C, el ANOVA (𝑝=0.48) y la prueba de comparaciones múltiples de Tukey indican que no existen diferencias estadísticamente significativas entre los tratamientos, ya que todos los intervalos de confianza incluyen el valor cero. En consecuencia, los tres fertilizantes pueden considerarse estadísticamente equivalentes en cuanto a su efecto sobre el rendimiento; sin embargo, desde un punto de vista práctico, si los costos y la disponibilidad son similares, se recomienda Fert_A por mostrar la mayor productividad promedio.


Ejercicio 2: Comparación de tratamientos

En un centro de investigación se realiza un estudio para comparar varios tratamientos que, al aplicarse previamente a los frijoles crudos, reducen su tiempo de cocción. Estos tratamientos son a base de bicarbonato de sodio (NaHCO3) y cloruro de sodio o sal común (NaCl). El primer tratamiento es el de control, que consiste en no aplicar ningún tratamiento. El tratamiento T2 es el remojo en agua con bicarbonato de sodio, el T3 es remojar en agua con sal común y el T4 es remojar en agua con una combinación de ambos ingredientes en proporciones iguales. La variable de respuesta es el tiempo de cocción en minutos.

Carge de base de datos:

library(readxl)
TRATAMIENTOS <- read_excel("C:/Users/LaboratorioCIDSE/Desktop/MONITORIA DFHG/2025-1/DISEÑPS/CLASE 1/TRATAMIENTOS.xlsx")
View(TRATAMIENTOS)

Descripción de base de datos

# 1. Ver primeras filas
head(TRATAMIENTOS)
## # A tibble: 6 × 4
##   Control    T2    T3    T4
##     <dbl> <dbl> <dbl> <dbl>
## 1     213    76    57    84
## 2     214    85    67    82
## 3     204    74    55    85
## 4     208    78    64    92
## 5     212    82    61    87
## 6     200    75    63    79
# 2. Ver últimas filas
tail(TRATAMIENTOS)
## # A tibble: 6 × 4
##   Control    T2    T3    T4
##     <dbl> <dbl> <dbl> <dbl>
## 1     214    85    67    82
## 2     204    74    55    85
## 3     208    78    64    92
## 4     212    82    61    87
## 5     200    75    63    79
## 6     207    82    63    90
# 3. Dimensiones de la base (número de filas y columnas)
dim(TRATAMIENTOS)
## [1] 7 4
# 4. Nombres de columnas
colnames(TRATAMIENTOS)
## [1] "Control" "T2"      "T3"      "T4"
# 5. Estructura (tipo de variable: numérica, factor, etc.)
str(TRATAMIENTOS)
## tibble [7 × 4] (S3: tbl_df/tbl/data.frame)
##  $ Control: num [1:7] 213 214 204 208 212 200 207
##  $ T2     : num [1:7] 76 85 74 78 82 75 82
##  $ T3     : num [1:7] 57 67 55 64 61 63 63
##  $ T4     : num [1:7] 84 82 85 92 87 79 90
# 6. Resumen estadístico básico
summary(TRATAMIENTOS)
##     Control            T2              T3              T4       
##  Min.   :200.0   Min.   :74.00   Min.   :55.00   Min.   :79.00  
##  1st Qu.:205.5   1st Qu.:75.50   1st Qu.:59.00   1st Qu.:83.00  
##  Median :208.0   Median :78.00   Median :63.00   Median :85.00  
##  Mean   :208.3   Mean   :78.86   Mean   :61.43   Mean   :85.57  
##  3rd Qu.:212.5   3rd Qu.:82.00   3rd Qu.:63.50   3rd Qu.:88.50  
##  Max.   :214.0   Max.   :85.00   Max.   :67.00   Max.   :92.00
# 7. Comprobar valores faltantes
colSums(is.na(TRATAMIENTOS))
## Control      T2      T3      T4 
##       0       0       0       0

Identificación del Problema y Objetivo

Problema: Los frijoles requieren tiempos prolongados de cocción, lo que implica mayor consumo de energía y tiempo en la preparación.

Objetivo: Evaluar el efecto de distintos tratamientos de remojo (ninguno, bicarbonato, sal común, y mezcla de ambos) sobre la reducción del tiempo de cocción (minutos) de los frijoles.

Factores, Niveles y Tratamientos

Factor estudiado: Tipo de pretratamiento en el remojo.

Niveles del factor:

  • Control (sin tratamiento)

  • T2: Remojo en agua con bicarbonato de sodio (NaHCO₃)

  • T3: Remojo en agua con cloruro de sodio (NaCl)

  • T4: Remojo en agua con mezcla de ambos (NaHCO₃ + NaCl)

Tratamientos: Las 4 condiciones mencionadas.

Variable respuesta: Tiempo de cocción (en minutos).

¿De qué manera el experimentador debe aleatorizar los experimentos y el material experimental?

El experimentador debe sortear aleatoriamente la asignación de tratamientos, la distribución del material experimental y, cuando aplique, el orden de ejecución de los ensayos. Esto elimina sesgos sistemáticos y permite que las diferencias observadas se atribuyan realmente a los tratamientos.

Dé ejemplos de factores que deben estar fijos durante las pruebas experimentales, para que no afecten los resultados y las conclusiones.

Para asegurar la validez de los resultados y que las diferencias observadas se deban únicamente a los tratamientos aplicados, es necesario mantener constantes ciertos factores externos. Algunos ejemplos son:

  • Condiciones ambientales
    • Temperatura del lugar de cocción o del invernadero
    • Humedad relativa y ventilación
    • Luz solar o iluminación artificial
  • Características del material experimental
    • Misma variedad de frijoles (o cultivo en el caso agrícola)
    • Tamaño y peso similar de las semillas o granos
    • Edad fisiológica de las plantas o del material
  • Condiciones de manejo
    • Cantidad de agua utilizada en el remojo o riego
    • Tiempo de remojo previo antes de la cocción
    • Uso de los mismos utensilios o equipos de cocción/medición
  • Procedimientos experimentales
    • Tiempo de medición estandarizado
    • Personal capacitado que siga el mismo protocolo
    • Instrumentos de medición calibrados

De esta forma, se minimiza la variabilidad no controlada y se garantiza que los efectos detectados se deban únicamente a los tratamientos experimentales.

Formule y pruebe la hipótesis de que las medias de los tratamientos son iguales.

Se desea contrastar si existen diferencias en el tiempo de cocción entre los tratamientos.

  • Hipótesis nula (H₀):

\[ \mu_{Control} = \mu_{T2} = \mu_{T3} = \mu_{T4} \]

(Las medias de tiempo de cocción son iguales para todos los tratamientos).

  • Hipótesis alternativa (H₁):

\[ \text{Al menos una media difiere de las demás.} \]

library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
datos <- tibble::tibble(
  Control = c(213, 214, 204, 208, 212, 200),
  T2 = c(76, 85, 74, 78, 82, 75),
  T3 = c(57, 67, 55, 64, 61, 63),
  T4 = c(84, 82, 85, 92, 87, 79)
)

# Transformar a formato largo
datos_largo <- datos %>%
  pivot_longer(cols = everything(),
               names_to = "Tratamiento",
               values_to = "Tiempo")

head(datos_largo)
## # A tibble: 6 × 2
##   Tratamiento Tiempo
##   <chr>        <dbl>
## 1 Control        213
## 2 T2              76
## 3 T3              57
## 4 T4              84
## 5 Control        214
## 6 T2              85
anova_model <- aov(Tiempo ~ Tratamiento, data = datos_largo)
summary(anova_model)
##             Df Sum Sq Mean Sq F value Pr(>F)    
## Tratamiento  3  82261   27420    1223 <2e-16 ***
## Residuals   20    449      22                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

El p-valor del ANOVA es menor que 0.05, lo que indica que hay diferencias significativas entre al menos una de las medias de los tratamientos. Por lo tanto, se rechaza la hipótesis nula y se concluye que al menos una de las medias de los tratamientos es diferente.

Los tiempos de cocción promedio no son iguales entre los tratamientos. Los tratamientos con bicarbonato, sal y la mezcla reducen significativamente el tiempo de cocción en comparación con el control, y además existen diferencias significativas entre ellos.

Obtenga el diagrama de caja y el gráfico de medias, después interprételos.

library(ggplot2)

# Diagrama de caja
ggplot(datos_largo, aes(x = Tratamiento, y = Tiempo, fill = Tratamiento)) +
  geom_boxplot(alpha = 0.6) +
  labs(title = "Tiempo de cocción por tratamiento",
       x = "Tratamiento",
       y = "Tiempo (minutos)") +
  theme_minimal()

library(dplyr)

# Calcular medias y errores estándar
medias <- datos_largo %>%
  group_by(Tratamiento) %>%
  summarise(
    media = mean(Tiempo),
    sd = sd(Tiempo),
    n = n(),
    se = sd / sqrt(n),
    .groups = "drop"
  )

# Gráfico de medias con barras de error
ggplot(medias, aes(x = Tratamiento, y = media, color = Tratamiento)) +
  geom_point(size = 3) +
  geom_errorbar(aes(ymin = media - se, ymax = media + se), width = 0.2) +
  labs(title = "Medias del tiempo de cocción con IC aproximado (±1SE)",
       x = "Tratamiento",
       y = "Media del tiempo (minutos)") +
  theme_minimal()

Diagrama de caja (Boxplot)

  • El grupo Control presenta tiempos de cocción mucho mayores (~200–214 min) respecto a todos los tratamientos.
  • Los tratamientos reducen drásticamente el tiempo de cocción:
    • T3 (sal común): es el que más reduce el tiempo (~55–67 min), con la mediana más baja.
    • T2 (bicarbonato): tiempos entre 74–85 min.
    • T4 (mezcla): tiempos un poco mayores, entre 79–92 min.
  • Los rangos intercuartílicos (cajas) son estrechos en todos los casos → baja variabilidad en los tiempos dentro de cada tratamiento.
  • Visualmente se observa que ningún intervalo de los tratamientos se solapa con el control, lo cual confirma diferencias marcadas.

Gráfico de medias con intervalos de confianza

  • El promedio del Control (~208 min) se ubica muy por encima de los demás grupos.
  • T3 (sal común) tiene la media más baja (~61 min) → es el tratamiento más efectivo para reducir el tiempo de cocción.
  • T2 (bicarbonato) (~78 min) y T4 (mezcla) (~85 min) también reducen el tiempo, pero no tanto como T3.
  • Los intervalos de error (±1SE) son pequeños → reflejan poca dispersión y dan confianza en las estimaciones.
  • No hay solapamiento entre los intervalos del control y los tratamientos → evidencia de diferencias significativas.

¿Cuál es el mejor tratamiento? ¿Cuál es el tiempo de cocción esperado para el mejor tratamiento?

De acuerdo con los resultados obtenidos a partir del ANOVA, los diagramas de caja y el gráfico de medias con intervalos de confianza, se concluye lo siguiente:

  • Mejor tratamiento: El tratamiento más eficaz es T3 (sal común), ya que presenta los menores tiempos de cocción.
  • Tiempo esperado: El tiempo de cocción promedio para este tratamiento es de aproximadamente 61 minutos, con un rango observado entre 55 y 67 minutos.

Es importante realizar pruebas de comparaciones múltiples para determinar cuáles tratamientos son significativamente diferentes entre sí, entonces:

# Prueba de Tukey
tukey_frijoles <- TukeyHSD(anova_model)
tukey_frijoles
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Tiempo ~ Tratamiento, data = datos_largo)
## 
## $Tratamiento
##                  diff         lwr        upr     p adj
## T2-Control -130.16667 -137.819083 -122.51425 0.0000000
## T3-Control -147.33333 -154.985750 -139.68092 0.0000000
## T4-Control -123.66667 -131.319083 -116.01425 0.0000000
## T3-T2       -17.16667  -24.819083   -9.51425 0.0000219
## T4-T2         6.50000   -1.152416   14.15242 0.1141059
## T4-T3        23.66667   16.014250   31.31908 0.0000002
plot(tukey_frijoles, las = 1)

# Prueba LSD con ajuste Bonferroni
library(agricolae)

lsd_frijoles <- LSD.test(anova_model, "Tratamiento", p.adj = "bonferroni", console = TRUE)
## 
## Study: anova_model ~ "Tratamiento"
## 
## LSD t Test for Tiempo 
## P value adjustment method: bonferroni 
## 
## Mean Square Error:  22.425 
## 
## Tratamiento,  means and individual ( 95 %) CI
## 
##            Tiempo      std r       se       LCL       UCL Min Max    Q25   Q50
## Control 208.50000 5.576737 6 1.933261 204.46729 212.53271 200 214 205.00 210.0
## T2       78.33333 4.320494 6 1.933261  74.30062  82.36605  74  85  75.25  77.0
## T3       61.16667 4.490731 6 1.933261  57.13395  65.19938  55  67  58.00  62.0
## T4       84.83333 4.445972 6 1.933261  80.80062  88.86605  79  92  82.50  84.5
##            Q75
## Control 212.75
## T2       81.00
## T3       63.75
## T4       86.50
## 
## Alpha: 0.05 ; DF Error: 20
## Critical Value of t: 2.927119 
## 
## Minimum Significant Difference: 8.002874 
## 
## Treatments with the same letter are not significantly different.
## 
##            Tiempo groups
## Control 208.50000      a
## T4       84.83333      b
## T2       78.33333      b
## T3       61.16667      c
lsd_frijoles$groups
##            Tiempo groups
## Control 208.50000      a
## T4       84.83333      b
## T2       78.33333      b
## T3       61.16667      c

De acuerdo con las pruebas de comparaciones múltiples, tanto el test de Tukey como la prueba LSD con ajuste Bonferroni muestran que existen diferencias significativas entre los tratamientos evaluados. El tratamiento Control presentó el mayor tiempo de cocción, siendo significativamente diferente de los demás.

Entre los tratamientos experimentales, se observó que T2 y T4 no difieren significativamente entre sí, pero ambos presentan tiempos de cocción intermedios, superiores al tratamiento T3. Por su parte, el tratamiento T3 mostró el menor tiempo de cocción (≈ 61.17 minutos y es significativamente diferente de todos los demás, consolidándose como el mejor tratamiento dentro del experimento.

Algo importante a cuidar en un experimento es que no haya efectos colaterales no deseados, causados por el tratamiento ganador; en este caso, piense en los posibles efectos colaterales que podría causar el mejor tratamiento.

Aunque T3 (remojo en sal) es el más eficaz para reducir el tiempo de cocción, puede incrementar el contenido de sodio en los frijoles y alterar sabor, textura y aspectos nutricionales; por ello se recomienda evaluar contenido de sodio, realizar pruebas sensoriales y probar estrategias de mitigación (por ejemplo, enjuague posterior o ajuste de concentración) antes de una implementación amplia.

¿Se cumplen los supuestos del modelo? Verifique gráficamente.

Para validar los resultados del ANOVA es necesario comprobar sus supuestos:

  1. Normalidad de los residuos: se evalúa gráficamente mediante un gráfico Q-Q y formalmente con la prueba de Shapiro-Wilk.
  2. Homogeneidad de varianzas: se verifica con el gráfico Scale-Location y con la prueba de Levene.
# Modelo ANOVA
anova_model <- aov(Tiempo ~ Tratamiento, data = datos_largo)

# Gráficos de diagnóstico
par(mfrow = c(2, 2))
plot(anova_model)

Este patrón indica una violación clave de los supuestos de un modelo de regresión lineal. Específicamente, sugiere que la relación entre las variables predictoras y la variable de respuesta no es lineal. El modelo lineal está subestimando la variable de respuesta para valores bajos y altos de los valores ajustados, y sobreestimándola en los valores intermedios (o viceversa, dependiendo de la dirección de la curva).

# Normalidad de los residuos
shapiro.test(residuals(anova_model))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(anova_model)
## W = 0.96947, p-value = 0.6539
# Homogeneidad de varianza
library(car)
## Loading required package: carData
## 
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
leveneTest(Tiempo ~ Tratamiento, data = datos_largo)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3  0.2766 0.8416
##       20

Resultados:

Normalidad de los residuos: Shapiro-Wilk: W = 0.969, p-value = 0.6539 Como el valor-p > 0.05, los residuos siguen una distribución aproximadamente normal.

Homogeneidad de varianzas: Levene: F(3,20) = 0.277, p-value = 0.8416 Como el valor-p > 0.05, se cumple la homogeneidad de varianzas entre los tratamientos.

Se cumplen los supuestos del modelo ANOVA, lo que respalda la validez de los resultados y de las pruebas de comparaciones múltiples aplicadas.

Pruebe la hipótesis de igualdad de varianzas entre tratamientos (que corresponde a un supuesto).

Se plantea la siguiente hipótesis:

  • \(H_0\): Las varianzas son iguales entre tratamientos.
  • \(H_1\): Al menos una varianza difiere entre tratamientos.
library(car)
leveneTest(Tiempo ~ Tratamiento, data = datos_largo)
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  3  0.2766 0.8416
##       20

Dado que p> 0.05, no se rechaza \(H_0\) Por lo tanto, se puede concluir que no existen diferencias significativas en las varianzas entre los tratamientos.

El supuesto de homogeneidad de varianzas se cumple y el ANOVA es válido.

Conclusiones

  1. El análisis de varianza (ANOVA) mostró diferencias altamente significativas entre tratamientos \((p < 0.001)\), indicando que los tiempos de cocción dependen del tratamiento aplicado.

  2. La prueba de comparaciones múltiples de Tukey y la prueba LSD con ajuste de Bonferroni confirmaron que:

    • El tratamiento T3 presenta el menor tiempo de cocción (aprox. 61 minutos) y es significativamente distinto a los demás.
    • Los tratamientos T2 y T4 no difieren significativamente entre sí, pero ambos tienen tiempos de cocción superiores a T3.
    • El control es significativamente mayor que todos los tratamientos.
  3. Los supuestos del modelo ANOVA se cumplen:

    • Los residuos siguen una distribución normal (Shapiro-Wilk, \(p = 0.65\)).
    • Existe homogeneidad de varianzas entre los tratamientos (Levene, \(p = 0.84\)).

    Esto respalda la validez del análisis realizado.


Recomendaciones
  1. Tratamiento a implementar:
    Se recomienda aplicar el tratamiento T3 como el más eficiente, ya que reduce de forma significativa el tiempo de cocción sin perder consistencia estadística.

  2. Monitoreo de efectos colaterales:
    Antes de implementar a gran escala, se sugiere evaluar posibles efectos secundarios del tratamiento ganador, tales como:

    • Alteraciones en la textura del grano.
    • Cambios en el sabor u olor.
    • Afectaciones nutricionales.
  3. Replicación y validación:

    • Repetir el experimento en diferentes condiciones (lotes de frijoles, ambientes de cocción, tamaños de muestra mayores) para asegurar la reproducibilidad de los resultados.
    • Considerar un análisis económico (costos vs. beneficios) antes de recomendar la aplicación a nivel industrial o doméstico.
  4. Próximos pasos:
    Explorar otros factores que puedan influir (variedad del frijol, tipo de agua, presión de cocción) mediante un diseño factorial que permita detectar interacciones.


Bibliografia

Gutiérrez Pulido, H., & de la Vara Salazar, R. (2008). Análisis y diseño de experimentos (2ª ed.). McGraw-Hill/Interamericana Editores. gc.scalahed.com


¡Muchas Gracias!