# Cargar librerías
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.3     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# 1. Recrear los datos del campo
set.seed(42)
datos <- data.frame(
  Parcela = 1:16,
  Tratamiento = rep(c("Riego_50%", "Riego_75%", "Riego_100%", "Riego_125%"), each = 4),
  Eficiencia_Agua = c(rnorm(4, 1.2, 0.15), rnorm(4, 1.8, 0.12),
                      rnorm(4, 1.7, 0.18), rnorm(4, 1.3, 0.14))
)

# Convertir tratamiento a Factor (CRUCIAL para el ANOVA de la próxima semana)
datos$Tratamiento <- as.factor(datos$Tratamiento)

# Verificación rápida para la bitácora
str(datos)
## 'data.frame':    16 obs. of  3 variables:
##  $ Parcela        : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Tratamiento    : Factor w/ 4 levels "Riego_100%","Riego_125%",..: 3 3 3 3 4 4 4 4 1 1 ...
##  $ Eficiencia_Agua: num  1.41 1.12 1.25 1.29 1.85 ...
# 2. Resumen estadístico usando dplyr
resumen <- datos %>%
  group_by(Tratamiento) %>%
  summarise(
    Media = mean(Eficiencia_Agua),
    Desviacion = sd(Eficiencia_Agua)
  )
print(resumen)
## # A tibble: 4 × 3
##   Tratamiento Media Desviacion
##   <fct>       <dbl>      <dbl>
## 1 Riego_100%   1.95     0.189 
## 2 Riego_125%   1.26     0.117 
## 3 Riego_50%    1.27     0.120 
## 4 Riego_75%    1.85     0.0912
# 3. Gráfico exploratorio con ggplot2
# Calcular la media global (ahora en su propia línea, sin el ">" que causaba error)
media_global <- mean(datos$Eficiencia_Agua)

# Generar el gráfico correctamente estructurado
ggplot(datos, aes(x = Tratamiento, y = Eficiencia_Agua)) +
  geom_boxplot(fill = "lightgray", alpha = 0.5) +
  geom_jitter(aes(color = Tratamiento), width = 0.1, size = 3) +
  geom_hline(yintercept = media_global, linetype = "dashed", color = "red") +
  theme_minimal() +
  labs(title = "Exploración Visual: Eficiencia de Agua por Tratamiento",
       x = "Lámina de Riego",
       y = "Eficiencia del Agua (kg/m³)") +
  theme(legend.position = "none")

¡Excelente! Este código es una práctica introductoria perfecta para un Diseño Completamente al Azar (DCA) con un solo factor (lámina de riego). Vamos a desglosar cada línea explicando su sintaxis en R y su significado en el Diseño Experimental en Ingeniería Agrícola.


1. Preparación del entorno y Librerías


2. Creación de los datos simulados (la “recolección de campo”)


3. Preparación de los datos para el análisis estadístico


4. Estadística descriptiva (Resumen numérico)


5. Cálculo de la referencia global


6. Gráfico exploratorio (Análisis visual)


7. La pregunta final (Reflexión sobre la Hipótesis Nula)


Resumen para tu bitácora: Este script no solo genera números, sino que simula todo el flujo de trabajo de un experimento agrícola: diseño (réplicas y tratamientos), toma de datos (simulada), depuración (factores), estadística descriptiva y análisis exploratorio visual. La gráfica final es tu principal herramienta para intuir si el riego afecta la eficiencia, antes de recurrir a la prueba formal de hipótesis. ¡Anota tu predicción (rechazar o no H₀) y compárala con el resultado del ANOVA la próxima clase!