# 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")

Explicación detallada del código R y su significado en ingeniería agrícola

1. Carga de librerías

library(tidyverse)

En R: Carga el paquete tidyverse, que incluye varias librerías para manipulación y visualización de datos (dplyr, ggplot2, tidyr, etc.).

En ingeniería agrícola: Esta librería es fundamental para el análisis de datos experimentales, permitiendo procesar eficientemente grandes conjuntos de datos de campo, como mediciones de rendimiento, eficiencia hídrica, o parámetros de calidad de cultivos.


2. Recreación de los datos experimentales

set.seed(42)

En R: Fija una semilla aleatoria para que los resultados sean reproducibles. Cada vez que ejecutes el código con la misma semilla, obtendrás exactamente los mismos datos aleatorios.

En ingeniería agrícola: La reproducibilidad es crucial en experimentos de campo. Al fijar la semilla, nos aseguramos que otros investigadores puedan replicar nuestro análisis con los mismos datos simulados, facilitando la validación de métodos estadísticos.

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))
)

En R: - Parcela = 1:16: Crea un vector con números del 1 al 16 (identificadores de parcelas) - Tratamiento = rep(...): Repite cada nombre de tratamiento 4 veces (diseño completamente aleatorizado con 4 repeticiones) - Eficiencia_Agua = c(rnorm(...)): Genera datos con distribución normal para cada tratamiento, con diferentes medias y desviaciones estándar

En ingeniería agrícola: - Diseño experimental: Tenemos 4 niveles de lámina de riego (50%, 75%, 100%, 125% de la evapotranspiración del cultivo) con 4 repeticiones cada uno = 16 parcelas experimentales - Variable respuesta: Eficiencia del agua (kg/m³), que mide cuánta biomasa o grano se produce por unidad de agua aplicada - Parcelas: Representan unidades experimentales físicas en el campo, cada una con su propio microclima y condiciones de suelo - La eficiencia del agua es un indicador crítico en zonas áridas y semiáridas para optimizar el uso del recurso hídrico

datos$Tratamiento <- as.factor(datos$Tratamiento)

En R: Convierte la variable Tratamiento de texto a factor (variable categórica). Es CRUCIAL para el ANOVA porque los factores son el tipo de variable que R espera para análisis de varianza.

En ingeniería agrícola: Los tratamientos son categorías discretas (niveles de riego), no valores continuos. Como factor, podemos comparar grupos y evaluar si las diferencias en eficiencia son estadísticamente significativas.

str(datos)

En R: Muestra la estructura del dataframe, verificando tipos de variables y datos.

En ingeniería agrícola: Útil para revisar que los datos están correctamente formateados antes de proceder con el análisis. Es una práctica de control de calidad de datos.


3. Resumen estadístico

resumen <- datos %>%
  group_by(Tratamiento) %>%
  summarise(
    Media = mean(Eficiencia_Agua),
    Desviacion = sd(Eficiencia_Agua)
  )
print(resumen)

En R: - %>% (pipe): Pasa los datos de una función a otra - group_by(Tratamiento): Agrupa los datos por cada nivel de riego - summarise(): Calcula media y desviación estándar para cada grupo - print(resumen): Muestra la tabla resumen en la consola

En ingeniería agrícola: Este resumen nos permite: - Media: Valor promedio de eficiencia para cada lámina de riego. Nos indica cuál tratamiento es más eficiente en promedio - Desviación estándar: Mide la variabilidad dentro de cada tratamiento. Una desviación alta sugiere que el cultivo no responde uniformemente al riego (podría haber problemas de distribución de agua, heterogeneidad del suelo, etc.) - En la práctica, estos estadísticos descriptivos son el primer paso para decidir si un tratamiento supera a otro


4. Gráfico exploratorio

media_global <- mean(datos$Eficiencia_Agua)

En R: Calcula la media de toda la eficiencia del agua, independientemente del tratamiento.

En ingeniería agrícola: La media global sirve como referencia para comparar todos los tratamientos. Si todos los tratamientos están alrededor de la media, probablemente no hay diferencias significativas entre ellos.

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")

En R: - ggplot(): Inicia el gráfico con datos y estética (ejes) - geom_boxplot(): Crea diagramas de caja (boxplots) para cada tratamiento - geom_jitter(): Agrega puntos individuales con ligero desplazamiento para evitar superposición - geom_hline(): Dibuja una línea horizontal para la media global - theme_minimal(): Aplica un tema limpio al gráfico - labs(): Agrega títulos y etiquetas - theme(legend.position = "none"): Oculta la leyenda

En ingeniería agrícola: - Boxplots: Cada caja muestra la mediana (línea central), el rango intercuartílico (caja) y los valores atípicos (puntos fuera de los bigotes). Permiten visualizar: - Centro de los datos: ¿Dónde está la eficiencia típica para cada tratamiento? - Dispersión: ¿Qué tan variable es la eficiencia dentro de cada tratamiento? - Valores atípicos: ¿Hay parcelas que se comportan muy diferente al resto?

  • Puntos jitter: Muestran todas las parcelas experimentales, permitiendo ver la distribución real de los datos y si hay superposición entre tratamientos

  • Línea discontinua roja (media global): Nos ayuda a evaluar visualmente cuánto se desvían los tratamientos de la media general

  • Interpretación agrícola:

    • Si las cajas están separadas y no se superponen, podría haber diferencias significativas
    • Si las cajas se superponen mucho, probablemente los tratamientos no son diferentes estadísticamente
    • Esto nos da una predicción visual antes de hacer el ANOVA formal

5. Nota para la bitácora

# Visualmente, ¿crees que la distancia entre las cajas es lo suficientemente grande
# respecto a la dispersión de los puntos como para rechazar la Hipótesis Nula (H0)?

En ingeniería agrícola: - Hipótesis Nula (H0): No hay diferencias significativas en la eficiencia del agua entre los diferentes niveles de riego. Todos los tratamientos son iguales.

  • Pregunta clave: Basado en el gráfico, ¿los tratamientos de 75% y 100% parecen mejores que 50% y 125%?
    • Si la diferencia entre medias es grande comparada con la variabilidad interna, es probable que rechacemos H0
    • Esto tendría implicaciones prácticas: Optimizar la lámina de riego para maximizar la eficiencia hídrica, ahorrando agua y manteniendo o mejorando el rendimiento
  • La predicción visual antes del ANOVA es una práctica profesional: Los ingenieros agrícolas deben desarrollar intuición para interpretar datos antes de confiar ciegamente en los tests estadísticos

Resumen del diseño experimental

Componente En R En Ingeniería Agrícola
Parcela Identificador numérico Unidad experimental en el campo
Tratamiento Factor con 4 niveles Láminas de riego (50-125% ETc)
Eficiencia_Agua Variable continua Indicador de productividad del agua
Boxplot Visualización de distribución Evaluación de variabilidad entre tratamientos
ANOVA (próxima semana) Prueba estadística Decisión sobre diferencias reales entre riegos

Este flujo de trabajo refleja el proceso científico en investigación agrícola: diseño experimental → recolección de datos → análisis exploratorio → prueba de hipótesis → toma de decisiones para optimizar el manejo del riego en condiciones de escasez hídrica.