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