true

Introducción

Preparación de la base de datos

Este informe responde las preguntas planteadas en el práctico uno, utilizando la base de datos “TRIGO.xlsx”. Se analiza el rendimiento del trigo según localidad y tratamientos. Se analiza la localidad 5, Marcos Juárez pero el codigo permite cambiar la localidad facilmente para hacerlo más reutilizable. Las recomendaciones solicitadas se hieron en base a los gráfcios y medidas de resumen obtenidas y vistas en clase. No se hicieron comparaciones de medias ni test estadisticos de significancia.

Los primeros pasos son la instalación de los paquetes y su carga. El código que elegí evalua si la libreria esta instalada y sólo si no es así, la instala.

# Instalación de las librerías necesarias

if (!requireNamespace("readxl", quietly = TRUE)) install.packages("readxl")
if (!requireNamespace("ggplot2", quietly = TRUE)) install.packages("ggplot2")
if (!requireNamespace("dplyr", quietly = TRUE)) install.packages("dplyr")
if (!requireNamespace("ggthemes", quietly = TRUE)) install.packages("ggthemes")
if (!requireNamespace("leaflet", quietly = TRUE)) install.packages("leaflet")
if (!requireNamespace("ggmap", quietly = TRUE)) install.packages("ggmap")
if (!requireNamespace("tidyr", quietly = TRUE)) install.packages("tidyr")
if (!requireNamespace("summarytools", quietly = TRUE)) install.packages("summarytools")

# Carga de las librerías 

library(readxl)
library(ggplot2)
library(dplyr)
library(ggthemes)
library(leaflet)
library(ggmap)
library(tidyr)
library(summarytools)

La base de datos TRIGO.xlsx, se descargó del aula virtual y se guardó en el mismo directorio que este archivo Rmarkdown. Luego, se cargo a Rstudio usando el paquete “readxl”.

Para asegurarnos de solo tener dos tipos de tratamiento, sin importar errores en la carga de datos, mutate y la notación de tuberias se incluyen con el paquete tidyverse o como parde de dplyr. El código toma los valores en tratamiento, ignora si trata de mayusculas o minúsculas y si hay o no espacios, y convierte todos los datos que empiecen con “Sin” o “sin” en SinFung. Loz que comienzan con “Con” o “con”, los convierte en ConFung. Para los genotipos, todos se pasan a minusculas sin espacios. las localidades están bien en la base de datos y solo se listaron los valores, que coincidieron con los 11 listados en el práctico.

# Limpieza y unificación de datos en 'trigo'
trigo <- trigo %>%
  mutate(
    Tratamiento = case_when(
      grepl("sin", Tratamiento, ignore.case = TRUE) ~ "SinFung",
      grepl("con", Tratamiento, ignore.case = TRUE) ~ "ConFung",
      TRUE ~ Tratamiento # Conserva valores no procesados (si los hubiera)
    ),
    Genotipo = trimws(tolower(Genotipo)) # Minúsculas y sin espacios extras
  )

# Verificación de la limpieza
unique(trigo$Tratamiento) # Verifica valores únicos en 'Tratamiento'
## [1] "ConFung" "SinFung"
unique(trigo$Genotipo)    # Verifica valores únicos en 'Genotipo'
##  [1] "kleintauro"     "kleincastor"    "buckpuelche"    "onix"          
##  [5] "aca801"         "kleinzorro"     "b75aniversario" "biointa1001"   
##  [9] "aca901"         "biointa1002"    "aca601"         "le2330"        
## [13] "kleintigre"     "kleinleon"      "biointa1006"    "biointa1005"   
## [17] "le2331"         "atlax"          "kleinnutria"    "aca906"        
## [21] "cronox"         "le2357"         "sy300"          "aca907"        
## [25] "agpfast"        "arex"           "aca903"         "baguette9"     
## [29] "kleinrayo"      "le2333"         "aca905"         "kleinchaja"    
## [33] "biointa1007"    "buckpleno"      "floripan100"    "baguette501"   
## [37] "kleinproteo"
unique(trigo$Localidad)   # Verifica valores únicos en 'Localidad'
##  [1] "CHA" "LAD" "BAL" "BAR" "REC" "TAN" "RAF" "MAN" "MAJ" "PER" "ALT"

Selección de la Localidad

Para que el codigo pueda reutilizarse, armé un diccionario con las localidades y sus siglas. de esta forma, puedo ejecutar el resto del código solo epsecificando cual es la localidad que deseo analizar.

El siguiente código permite elegir la localidad por su sigla, toma el nombre completo del diccionarioy luego filtra los datos de trigo por localidad y los guarda en un objeto llamado “trigo_por_localidad”

# Selección de la localidad (este codigo se usa para una única localidad, como anexo se pone un codigo en bucle que procesa todas las localidades)
localidad_seleccionada <- "MAJ" # Se puede cambiar!!!!!
localidad_nombre <- localidades[localidad_seleccionada]
trigo_por_localidad <- trigo %>% filter(Localidad == localidad_seleccionada)

Respuestas

A. ¿Cuántos casos (o filas) tiene en total la base de datos?

Para esto, solo usamos nrow(trigo), ya que es el nombre de la base de datos que teneoms cargada en RStudio.

n_total <- nrow(trigo)
cat("El numero total de casos en la base de datos es:", n_total)
## El numero total de casos en la base de datos es: 4170

B. Número de casos en la localidad seleccionada

Uso la función nrow() para contar filas, combinada con la función filter que permite combinar dos requisitos para el conteo. esto permite contar las filas de datos “Con fungicida” y “Sin fungicida” por separado, dentro de cada localidad, lo que es útil porque hay localidades con un único tratamiento.

#Contar casos por localidad
n_localidad <- nrow(trigo_por_localidad)
cat("El numero de casos en la localidad seleccionada (",localidad_nombre,") es:", n_localidad, "\n")
## El numero de casos en la localidad seleccionada ( Marcos Juarez ) es: 230
# Contar casos con tratamiento "SinFung" en una localidad
n_sin_fungicida <- nrow(filter(trigo_por_localidad, Tratamiento == "SinFung"))

# Contar casos con tratamiento "ConFung" en una localidad
n_con_fungicida <- nrow(filter(trigo_por_localidad, Tratamiento == "ConFung"))

# Imprimir resultados

cat("Casos con tratamiento 'Sin fungicida' en", localidad_nombre, "es :", n_sin_fungicida, "\n")
## Casos con tratamiento 'Sin fungicida' en Marcos Juarez es : 168
cat("Casos con tratamiento 'Con fungicida'en", localidad_nombre, "es :",n_con_fungicida, "\n")
## Casos con tratamiento 'Con fungicida'en Marcos Juarez es : 62

C. Distribución del rendimiento en la localidad seleccionada (version original)

Para resolver este punto hacemos un polígono de frecuencias, con datos agrupados cada 500 kg/ha.

ggplot(trigo_por_localidad, aes(x = Rendimiento)) +
  geom_histogram(binwidth = 500, fill = "skyblue", color = "black") +
  labs(
    title = paste("Rendimiento de trigo (en Kg/ha) en", localidad_nombre),
    x = "Rendimiento (Kg/ha)",
    y = "Frecuencia"
  ) +
  theme_economist(base_size = 14)
Figura 1: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 500 kg.

Figura 1: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 500 kg.

C.2. Distribución del rendimiento en la localidad seleccionada

En esta versión se incluyen los valores de la moda, mediana y media aritmética para comprararlas. La sintaxis del gráfico es compleja, así que se hizo con ayuda de chatgpt).

# Calcular media, mediana y moda
estadisticas <- trigo_por_localidad %>%
  summarize(
    media = mean(Rendimiento, na.rm = TRUE),
    mediana = median(Rendimiento, na.rm = TRUE),
    moda = as.numeric(names(sort(table(Rendimiento), decreasing = TRUE)[1]))
  )

# Crear el histograma con ggplot
ggplot(trigo_por_localidad, aes(x = Rendimiento)) +
  geom_histogram(binwidth = 500, fill = "skyblue", color = "black", alpha = 0.7) +
  geom_vline(aes(xintercept = estadisticas$media), color = "red", linetype = "dashed", linewidth = 1, show.legend = TRUE) +
  geom_vline(aes(xintercept = estadisticas$mediana), color = "blue", linetype = "dashed", linewidth  = 1, show.legend = TRUE) +
  geom_vline(aes(xintercept = estadisticas$moda), color = "darkgreen", linetype = "dashed", size = 1, show.legend = TRUE) +
  labs(
    title = paste ("Distribucion del rendimiento de trigo en", localidad_nombre),
    x = "Rendimiento (Kg/ha)",
    y = "Frecuencia"
  ) +
  theme_economist() +
  theme(
    plot.title = element_text(size = 14, face = "bold"),
    plot.subtitle = element_text(size = 12),
    axis.text = element_text(size = 10),
    axis.title = element_text(size = 12)
  ) +
  annotate("text", x = estadisticas$media, y = 10.0, label = paste("Media: ", round(estadisticas$media, 2)), color = "red", angle = 90, vjust = +1.25) +
  annotate("text", x = estadisticas$mediana, y = 10.0, label = paste("Mediana: ", round(estadisticas$mediana, 2)), color = "blue", angle = 90, vjust = -0.5) +
  annotate("text", x = estadisticas$moda, y = 10.0, label = paste("Moda: ", round(estadisticas$moda, 2)), color = "darkgreen", angle = 90, vjust = -0.5)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Figura 3: Rendimiento de trigo en Tn por hectárea para la localidad de Marcos Juárez, message=FALSE, warning=FALSE, incluyendo media aritmética, moda y mediana. Datos agrupados cada 500 kg.

Figura 3: Rendimiento de trigo en Tn por hectárea para la localidad de Marcos Juárez, message=FALSE, warning=FALSE, incluyendo media aritmética, moda y mediana. Datos agrupados cada 500 kg.

La diferencia entre la mediana y la media por un lado, y la moda más desplazada hacia valores positivos podría indicar que los datos estan muy dispersos y que hay valores muy extremos, o qpodría sugerir una distribución polimodal, o una combinación de ambas situaciones. Por el momento no es posible sacar más conclusiones.

D. Variación del rendimiento promedio por tratamiento

La pregunta pide definir como varía el rendimiento en función del tratamiento aplicado. Para facilitar la interpretación, hice cuatro gráficos, con rendimientos agrupados cada 100, 500, 1000 y 2000 kg/ha.

#Agrupados por defecto, cada 100 Tn
ggplot(trigo_por_localidad, aes(x = Rendimiento, color = Tratamiento)) +
  geom_freqpoly(binwidth = 100, size = 1) +
  labs(
    title = paste("Rendimiento por tratamiento en", localidad_nombre),
    x = "Rendimiento (Kg/ha)",
    y = "Frecuencia absoluta",
    color = "Tratamiento"
  ) +
  scale_color_manual(values = c("SinFung" = "lightseagreen", "ConFung" = "tomato"), 
                     labels = c("Sin fungicida", "Con fungicida")) +  # Cambiar las leyendas
  theme_economist(base_size = 14) +
  theme(
    plot.title = element_text(size = 16, face = "bold"),  # Título del gráfico
    plot.subtitle = element_text(size = 14),  # Subtítulo del gráfico
    axis.title = element_text(size = 14),  # Títulos de los ejes
    axis.text = element_text(size = 12),  # Texto de los ejes
    legend.title = element_text(size = 14),  # Título de la leyenda
    legend.text = element_text(size = 12)  # Texto de la leyenda
  )
Figura 4: Rendimiento de trigo en Kg por hectárea por tratamiento en Marcos Juárez. Datos agrupados cada 100 Kg.

Figura 4: Rendimiento de trigo en Kg por hectárea por tratamiento en Marcos Juárez. Datos agrupados cada 100 Kg.

Este gráfico permite observar que los datos “Con Fungicida” tienen una distribución aproximadamente bimodal con una moda cerca de los 4500 kg/ha y otra cerca de los 5500 kg/ha, lo que podría explicar los resultados obtenidos al graficar el polígono de frecuencias.

#Agrupados cada 500 kg
ggplot(trigo_por_localidad, aes(x = Rendimiento, color = Tratamiento)) +
  geom_freqpoly(binwidth = 500, size = 1) +
  labs(
    title = paste("Rendimiento por tratamiento en", localidad_nombre),
    x = "Rendimiento (Kg/ha)",
    y = "Frecuencia absoluta",
    color = "Tratamiento"
  ) +
  scale_color_manual(values = c("SinFung" = "lightseagreen", "ConFung" = "tomato"), 
                     labels = c("Sin fungicida", "Con fungicida")) +  # Cambiar las leyendas
  theme_economist(base_size = 14) +
  theme(
    plot.title = element_text(size = 16, face = "bold"),  # Título del gráfico
    plot.subtitle = element_text(size = 14),  # Subtítulo del gráfico
    axis.title = element_text(size = 14),  # Títulos de los ejes
    axis.text = element_text(size = 12),  # Texto de los ejes
    legend.title = element_text(size = 14),  # Título de la leyenda
    legend.text = element_text(size = 12)  # Texto de la leyenda
  )
Figura 5: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 500 Kg.

Figura 5: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 500 Kg.

#Agrupados por defecto, cada 100 Tn
ggplot(trigo_por_localidad, aes(x = Rendimiento, color = Tratamiento)) +
  geom_freqpoly(binwidth = 1000, size = 1) +
  labs(
    title = paste("Rendimiento por tratamiento en", localidad_nombre),
    x = "Rendimiento (Kg/ha)",
    y = "Frecuencia absoluta",
    color = "Tratamiento"
  ) +
  scale_color_manual(values = c("SinFung" = "lightseagreen", "ConFung" = "tomato"), 
                     labels = c("Sin fungicida", "Con fungicida")) +  # Cambiar las leyendas
  theme_economist(base_size = 14) +
  theme(
    plot.title = element_text(size = 16, face = "bold"),  # Título del gráfico
    plot.subtitle = element_text(size = 14),  # Subtítulo del gráfico
    axis.title = element_text(size = 14),  # Títulos de los ejes
    axis.text = element_text(size = 12),  # Texto de los ejes
    legend.title = element_text(size = 14),  # Título de la leyenda
    legend.text = element_text(size = 12)  # Texto de la leyenda
  )
Figura 6: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 1000 Kg.

Figura 6: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 1000 Kg.

ggplot(trigo_por_localidad, aes(x = Rendimiento, color = Tratamiento)) +
  geom_freqpoly(binwidth = 2000, size = 1) +
  labs(
    title = paste("Rendimiento por tratamiento en", localidad_nombre),
    x = "Rendimiento (Kg/ha)",
    y = "Frecuencia absoluta",
    color = "Tratamiento"
  ) +
  scale_color_manual(values = c("SinFung" = "lightseagreen", "ConFung" = "tomato"), 
                     labels = c("Sin fungicida", "Con fungicida")) +  # Cambiar las leyendas
  theme_economist(base_size = 14) +
  theme(
    plot.title = element_text(size = 16, face = "bold"),  # Título del gráfico
    plot.subtitle = element_text(size = 14),  # Subtítulo del gráfico
    axis.title = element_text(size = 14),  # Títulos de los ejes
    axis.text = element_text(size = 12),  # Texto de los ejes
    legend.title = element_text(size = 14),  # Título de la leyenda
    legend.text = element_text(size = 12)  # Texto de la leyenda
  )
Figura 7: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 2000 Kg.

Figura 7: Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez. Datos agrupados cada 2000 Kg.

Los gráficos muestran diferencias importantes entre los tratamiento, con mayores frecuencias para el tratamiento “Con fungicida”. Sin embargo, las distribuciones son similares, por lo que puede que las diferencias sean más sencillas de interpretar en otros tipos de gráfico. A continuación se iuncluye un Boxplot de los datos y un “Violin plot” recomendado pro la literatura:

ggplot(trigo_por_localidad, aes(x = Tratamiento, y = Rendimiento, fill = Tratamiento)) +
  geom_violin(trim = FALSE) +
  labs(
    title = paste("Distribución del rendimiento\npor tratamiento y localidad"),
    x = "Tratamiento",
    y = "Rendimiento (Kg/ha)"
  ) +
  scale_fill_manual(values = c("ConFung" = "lightseagreen", "SinFung" = "tomato")) +
  theme_economist(base_size = 14) +
  theme(
    plot.title = element_text(size = 16, face = "bold", hjust = 0.5),  # Centrado y en dos líneas
    axis.title = element_text(size = 14),  # Tamaño del título del eje
    axis.text = element_text(size = 12),   # Tamaño del texto del eje
    legend.title = element_text(size = 14),  # Tamaño del título de la leyenda
    legend.text = element_text(size = 12)    # Tamaño del texto de la leyenda
  )
Figura 8: Violin plot de Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez.

Figura 8: Violin plot de Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez.

El gráfico demuestra que el tratamiento “Con Fungicida” produce un rendimiento más parejo, mientras que la probabilidad de obtener rendimientos más extremos con el tratamiento “sin fungicida” es ligeramente mayor.

ggplot(trigo_por_localidad, aes(x = Tratamiento, y = Rendimiento, fill = Tratamiento)) +
  geom_boxplot() +
  labs(
    title = paste("Comparación del rendimiento\nentre tratamientos en localidad"),
    x = "Tratamiento",
    y = "Rendimiento (Kg/ha)"
  ) +
  scale_fill_manual(values = c("ConFung" = "lightseagreen", "SinFung" = "tomato")) +
  theme_economist(base_size = 14) +
  theme(
    plot.title = element_text(size = 16, face = "bold", hjust = 0.5),  # Centrado y en dos líneas
    axis.title = element_text(size = 14),  # Tamaño del título del eje
    axis.text = element_text(size = 12),   # Tamaño del texto del eje
    legend.title = element_text(size = 14),  # Tamaño del título de la leyenda
    legend.text = element_text(size = 12)    # Tamaño del texto de la leyenda
  )
Figura 9: Boxplot de Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez.

Figura 9: Boxplot de Rendimiento de trigo en Kg por hectárea para la localidad de Marcos Juárez.

El boxplot muestra lo mismo que el violin plot. Con estos datos, recomendaría usar el tratamiento “Sin fungicida” porque, a pesar de que la mediana es muy similar en ambos tratamientos, no usar fungicidas implica un costo mucho menor. Además, existe la posibilidad de obtener rendimientos mayores que con el uso de fungicidas.

E. Mapa Interactivo de Marcos Juárez

Para esto se cargaron dos librerias: leaflet y ggmap. El código se agrego al inicio para mantener el orden de los pasos. Se selccionó un campo al azr cerca de marcos Juarez usando Google maps

# Coordenadas de Marcos Juárez (latitud y longitud)
latitud <- -32.679665  
longitud <- -62.058473 

# Crear el mapa con imagen satelital
mapa <- leaflet() %>%
  addProviderTiles(providers$Esri.WorldImagery) %>%  # Imagen satelital de ESRI
  setView(lng = longitud, lat = latitud, zoom = 12) %>%  # Ajustar la vista inicial
  addMarkers(lng = longitud, lat = latitud, popup = "Campo en Marcos Juárez")  # Agregar un marcador

# Mostrar el mapa
mapa

Figura 10: Mapa satelital de la una de las zonas muestreadas en Marcos Juárez, provincia de Córdoba.

F. Tabla de frecuencias por localidad

La tabla de frecuencia, por localidad, considerando todos los datos, sin considerar el tratamiento serìa:

# Crear tabla de frecuencias en toneladas (Tn)
tabla_frecuencias <- trigo_por_localidad %>%
  # Convertir 'Rendimiento' a toneladas (Tn)
  mutate(Rendimiento_Tn = Rendimiento / 1000) %>%
  # Crear los intervalos de rendimiento en Tn
  mutate(rango_rendimiento = cut(Rendimiento_Tn, 
                                  breaks = seq(min(Rendimiento_Tn), max(Rendimiento_Tn), by = 0.75), 
                                  include.lowest = TRUE, right = FALSE)) %>%
  # Contar la frecuencia de cada intervalo
  group_by(rango_rendimiento) %>%
  summarise(frecuencia = n()) %>%
  # Agregar la columna con porcentaje de cada frecuencia
  mutate(porcentaje = frecuencia / sum(frecuencia) * 100) %>%
  # Ordenar la tabla por el rango de rendimiento
  arrange(rango_rendimiento)

# Mostrar la tabla de frecuencias
tabla_frecuencias
## # A tibble: 8 × 3
##   rango_rendimiento frecuencia porcentaje
##   <fct>                  <int>      <dbl>
## 1 [1.7,2.45)                11      4.78 
## 2 [2.45,3.2)                26     11.3  
## 3 [3.2,3.95)                34     14.8  
## 4 [3.95,4.7)                65     28.3  
## 5 [4.7,5.45)                44     19.1  
## 6 [5.45,6.2)                33     14.3  
## 7 [6.2,6.95]                16      6.96 
## 8 <NA>                       1      0.435

Pero la tabla puede hacerse por tratamientos:

# Crear tabla de frecuencias discriminada por tratamiento en toneladas (Tn)
tabla_frecuencias_tratamiento <- trigo_por_localidad %>%
  # Convertir 'Rendimiento' a toneladas (Tn)
  mutate(Rendimiento_Tn = Rendimiento / 1000) %>%
  # Crear los intervalos de rendimiento en Tn (bins de 1 Tn)
  mutate(rango_rendimiento = cut(Rendimiento_Tn, 
                                  breaks = seq(min(Rendimiento_Tn), max(Rendimiento_Tn), by = 0.5), 
                                  include.lowest = TRUE, right = FALSE)) %>%
  # Agrupar por tratamiento y rango de rendimiento
  group_by(Tratamiento, rango_rendimiento) %>%
  # Contar la frecuencia de cada intervalo por tratamiento
  summarise(frecuencia = n()) %>%
  # Agregar la columna con porcentaje de cada frecuencia
  mutate(porcentaje = frecuencia / sum(frecuencia) * 100) %>%
  # Ordenar la tabla por tratamiento y rango de rendimiento
  arrange(Tratamiento, rango_rendimiento)
## `summarise()` has grouped output by 'Tratamiento'. You can override using the
## `.groups` argument.
# Mostrar la tabla de frecuencias discriminada por tratamiento
tabla_frecuencias_tratamiento
## # A tibble: 20 × 4
## # Groups:   Tratamiento [2]
##    Tratamiento rango_rendimiento frecuencia porcentaje
##    <chr>       <fct>                  <int>      <dbl>
##  1 ConFung     [2.2,2.7)                  1      1.61 
##  2 ConFung     [2.7,3.2)                  4      6.45 
##  3 ConFung     [3.2,3.7)                 10     16.1  
##  4 ConFung     [3.7,4.2)                 10     16.1  
##  5 ConFung     [4.2,4.7)                 12     19.4  
##  6 ConFung     [4.7,5.2)                 12     19.4  
##  7 ConFung     [5.2,5.7)                  8     12.9  
##  8 ConFung     [5.7,6.2)                  5      8.06 
##  9 SinFung     [1.7,2.2)                  8      4.76 
## 10 SinFung     [2.2,2.7)                 10      5.95 
## 11 SinFung     [2.7,3.2)                 14      8.33 
## 12 SinFung     [3.2,3.7)                 11      6.55 
## 13 SinFung     [3.7,4.2)                 25     14.9  
## 14 SinFung     [4.2,4.7)                 31     18.5  
## 15 SinFung     [4.7,5.2)                 17     10.1  
## 16 SinFung     [5.2,5.7)                 18     10.7  
## 17 SinFung     [5.7,6.2)                 17     10.1  
## 18 SinFung     [6.2,6.7)                 10      5.95 
## 19 SinFung     [6.7,7.2]                  6      3.57 
## 20 SinFung     <NA>                       1      0.595

Sin embargo, la tabla anterior toma el total de datos como 100% para calcular las frecuencias relativas. Una alternativa podrìa ser considerar el totakl de cada tratamiento como un 100%:

# Crear tabla de frecuencias relativas por tratamiento en toneladas (Tn)
tabla_frecuencias_tratamiento <- trigo_por_localidad %>%
  # Convertir 'Rendimiento' a toneladas (Tn)
  mutate(Rendimiento_Tn = Rendimiento / 1000) %>%
  # Crear los intervalos de rendimiento en Tn (bins de 0.5 Tn)
  mutate(rango_rendimiento = cut(Rendimiento_Tn, 
                                 breaks = seq(min(Rendimiento_Tn), max(Rendimiento_Tn), by = 0.5), 
                                 include.lowest = TRUE, right = FALSE)) %>%
  # Agrupar por tratamiento y rango de rendimiento
  group_by(Tratamiento, rango_rendimiento) %>%
  # Contar la frecuencia de cada intervalo por tratamiento
  summarise(frecuencia = n(), .groups = "drop") %>%
  # Calcular el porcentaje relativo por tratamiento
  group_by(Tratamiento) %>%  # Agrupar nuevamente por tratamiento
  mutate(porcentaje = frecuencia / sum(frecuencia) * 100) %>%
  # Ordenar la tabla por tratamiento y rango de rendimiento
  arrange(Tratamiento, rango_rendimiento)

# Mostrar la tabla de frecuencias relativas por tratamiento
tabla_frecuencias_tratamiento
## # A tibble: 20 × 4
## # Groups:   Tratamiento [2]
##    Tratamiento rango_rendimiento frecuencia porcentaje
##    <chr>       <fct>                  <int>      <dbl>
##  1 ConFung     [2.2,2.7)                  1      1.61 
##  2 ConFung     [2.7,3.2)                  4      6.45 
##  3 ConFung     [3.2,3.7)                 10     16.1  
##  4 ConFung     [3.7,4.2)                 10     16.1  
##  5 ConFung     [4.2,4.7)                 12     19.4  
##  6 ConFung     [4.7,5.2)                 12     19.4  
##  7 ConFung     [5.2,5.7)                  8     12.9  
##  8 ConFung     [5.7,6.2)                  5      8.06 
##  9 SinFung     [1.7,2.2)                  8      4.76 
## 10 SinFung     [2.2,2.7)                 10      5.95 
## 11 SinFung     [2.7,3.2)                 14      8.33 
## 12 SinFung     [3.2,3.7)                 11      6.55 
## 13 SinFung     [3.7,4.2)                 25     14.9  
## 14 SinFung     [4.2,4.7)                 31     18.5  
## 15 SinFung     [4.7,5.2)                 17     10.1  
## 16 SinFung     [5.2,5.7)                 18     10.7  
## 17 SinFung     [5.7,6.2)                 17     10.1  
## 18 SinFung     [6.2,6.7)                 10      5.95 
## 19 SinFung     [6.7,7.2]                  6      3.57 
## 20 SinFung     <NA>                       1      0.595

Esto nos permite un gráficar el rendimeinto por tratamiento considerando frecuencias relativas:

# Crear el polígono de frecuencias con colores personalizados
ggplot(tabla_frecuencias_tratamiento, aes(x = rango_rendimiento, y = porcentaje, color = Tratamiento, group = Tratamiento)) +
  geom_line(size = 1) +  # Añadir líneas para los polígonos
  geom_point(size = 2) + # Añadir puntos para marcar las frecuencias
  labs(
    title = "Polígonos de Frecuencia por Tratamiento",
    x = "Rango de Rendimiento (Tn)",
    y = "Frecuencia Relativa (%)",
    color = "Tratamiento"
  ) +
  scale_color_manual(values = c("ConFung" = "lightseagreen", "SinFung" = "tomato")) +  # Colores personalizados
  theme_economist() +  # Tema minimalista
  theme(
    # Ajustes del título
    plot.title = element_text(size = 16, face = "bold", hjust = 0.5),  # Centrado y en negrita
    # Ajustes de las etiquetas del eje X
    axis.text.x = element_text(size = 8, face = "bold", angle = 30, hjust = 1, vjust = 1),  # Más pequeñas, inclinadas 30° y alineadas
    # Ajustes de las etiquetas del eje Y
    axis.text.y = element_text(size = 10),  # Texto del eje Y más legible
    # Ajustes del título de la leyenda
    legend.title = element_text(size = 12, face = "bold"),  # Título de la leyenda más grande y en negrita
    legend.text = element_text(size = 10)  # Texto de los elementos de la leyenda ajustado
  )
Figura 11: Poligono de frecuencias relativas de rendimiento de trigo por tonelada, para los tratamientos Con fungicida y Sin fungicida, obtenidos en Marcos Juárez.

Figura 11: Poligono de frecuencias relativas de rendimiento de trigo por tonelada, para los tratamientos Con fungicida y Sin fungicida, obtenidos en Marcos Juárez.

Este gráfico demuestra que los mayores rendimientos, por sobre los 6.2 tn/ha, solo se han obtenido en cultivos sin fungicidas. Esto puede deberse a un sesgo en el uso de los tratamientos, pero apoya la recomendación que hicimos anteriormenete: No se recomienda el uso de fungicidas porque no se observan grandes diferencias en los rendimientos promedio, el costo del tratamiento sin fungicida es menor y los mayores rendimientos solo se alcanzan en cultivos que no han sido tratados con fungicidas.

G. Obtener medidas de resumen por localidad

Usando las funciones específicas, según lo visto en calse y dividiendo por tratamiento, para la localidad de Marcos Juarez:

# Cálculo de estadísticas descriptivas para Rendimiento según Tratamiento y Localidad
resumen_rendimiento <- trigo_por_localidad %>%
  group_by(Tratamiento) %>%
  summarise(
    Minimo = min(Rendimiento, na.rm = TRUE),                      # Mínimo
    Q1 = quantile(Rendimiento, probs = 0.25, na.rm = TRUE),      # Primer cuartil (Q1)
    Media = mean(Rendimiento, na.rm = TRUE),                     # Media
    Mediana = median(Rendimiento, na.rm = TRUE),                 # Mediana
    Q3 = quantile(Rendimiento, probs = 0.75, na.rm = TRUE),      # Tercer cuartil (Q3)
    Maximo = max(Rendimiento, na.rm = TRUE),                     # Máximo
    Rango = diff(range(Rendimiento, na.rm = TRUE)),              # Rango (Max - Min)
    Desviacion = sd(Rendimiento, na.rm = TRUE),                  # Desviación estándar
    CV = (Desviacion / Media) * 100                              # Coeficiente de variación (%)
  )

# Imprimir el resumen
print(resumen_rendimiento)
## # A tibble: 2 × 10
##   Tratamiento Minimo    Q1 Media Mediana    Q3 Maximo Rango Desviacion    CV
##   <chr>        <dbl> <dbl> <dbl>   <dbl> <dbl>  <dbl> <dbl>      <dbl> <dbl>
## 1 ConFung       2646 3729. 4410.   4376. 5155    6140  3494       900.  20.4
## 2 SinFung       1703 3634  4489.   4435  5422.   7240  5537      1291.  28.7

Usando Summarytools y tidyverse: descripción del rendimiento en quilos, por localidad, para Marcos Juarez, usando “summarytools”

descr(trigo_por_localidad$Rendimiento, 
      na.rm = TRUE, 
      headings = FALSE)
## 
##                     Rendimiento
## ----------------- -------------
##              Mean       4468.04
##           Std.Dev       1196.54
##               Min       1703.00
##                Q1       3650.00
##            Median       4424.50
##                Q3       5400.00
##               Max       7240.00
##               MAD       1253.54
##               IQR       1722.25
##                CV          0.27
##          Skewness         -0.03
##       SE.Skewness          0.16
##          Kurtosis         -0.57
##           N.Valid        230.00
##         Pct.Valid        100.00

Y tambien podemos combinar los datos para obtener una decriminación del rendimiento, segun el tratamiento aplicado.

# Usar group_by y luego aplicar descr a cada grupo
trigo_por_localidad %>%
  group_by(Tratamiento) %>%
  descr(Rendimiento, na.rm = TRUE, headings = FALSE)
## 
##                     ConFung   SinFung
## ----------------- --------- ---------
##              Mean   4410.23   4489.38
##           Std.Dev    899.69   1290.69
##               Min   2646.00   1703.00
##                Q1   3721.00   3623.00
##            Median   4376.50   4435.00
##                Q3   5170.00   5425.00
##               Max   6140.00   7240.00
##               MAD   1082.30   1401.06
##               IQR   1426.25   1788.50
##                CV      0.20      0.29
##          Skewness     -0.02     -0.05
##       SE.Skewness      0.30      0.19
##          Kurtosis     -0.96     -0.72
##           N.Valid     62.00    168.00
##         Pct.Valid    100.00    100.00

Los datos de resumen apoyan las recomendaciones anteriores. Sin embargo, si lo que se busca es cierta previsibilidad en los rindes, se puede optar por un cultivo con fungicidas, como queda demostrado por el menor rango obtenido en estas condiciones de aproximadamente 3500 kg/ha, contra los casi 5500 obtenidos cuando no se usan fungicidas.

H. Recoemdación de Genotipos.

Haremos la forma más sencilla, que incluye un boxplot de los datos de rendimiento de Marcos Juarez por genotipo y tratamiento:

mejores_medianas <- trigo_por_localidad %>%
  group_by(Tratamiento, Genotipo) %>%
  summarise(mediana = median(Rendimiento, na.rm = TRUE)) %>%
  slice_max(mediana, n = 1)
print (mejores_medianas)
## # A tibble: 2 × 3
## # Groups:   Tratamiento [2]
##   Tratamiento Genotipo   mediana
##   <chr>       <chr>        <dbl>
## 1 ConFung     kleintauro    5480
## 2 SinFung     aca905        5990
# Generar el gráfico con ajustes mínimos
ggplot(trigo_por_localidad, aes(x = Rendimiento, y = Genotipo, fill = Tratamiento)) +
  geom_boxplot(outlier.colour = "red", outlier.size = 3) +  # Outliers en rojo y de tamaño grande
  labs(title = "Rendimiento por Genotipo y Tratamiento", 
       x = "Rendimiento", 
       y = "Genotipo") +
  theme_economist() +
  scale_fill_manual(values = c("SinFung" = "tomato", "ConFung" = "lightseagreen")) +  # Colores personalizados
  theme(
    axis.text.y = element_text(size = 10, face = "bold", angle = 0),  # Opciones de texto en eje Y
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),  # Centrar el título
    plot.margin = margin(20, 10, 20, 10),  # Ajustar márgenes si es necesario
    legend.title = element_text(size = 14, face = "bold"),  # Aumentar tamaño del título de la leyenda
    legend.text = element_text(size = 12)  # Aumentar tamaño del texto en la leyenda
  ) +
  geom_text(data = mejores_medianas, 
            aes(x = mediana, y = Genotipo, label = Genotipo), 
            color = "black", size = 6, hjust = -1.5)  # Mover etiquetas al lado derecho

En base a estos datos, aconsejaría plantar la variedad Kleintauro si se van a usar fungicidas y la variedad Aca905 si no se van a usar fungicidas. La recomendación se basa principalmente en la mediana obtenida de los rendimientos.

Conclusiones

El gráfico de boxplot de rendimientos por genotipo y tratamiento demuestra que el tratamiento preferido en Marcos Juarez es “Sin Fungicida”. En la mayoria los casos en que se evaluó el rendimiento de un genotipo en ambos tratamientos (con y SIn fungicida), se da una de dos situaciones: O se evaluaron pocos campos “con fungicidas, en cuyo caso los rendimientos suelen ser menores a los obtenidos en los campos no tratados (Aca906, Biointa 1005, Biointa 1006, Kleinnutria, Kleinrayo), o se evaluaron cantidades más similares de campos en cada tratamiento, en cuyos casos el rendimiento suele ser mejor cuando se usan fungicidas (Aca901, B75aniversario, Buckpuelche, Floripan100,Kleinzoprro y Kleintauro). Esto indica que es probable que los resultados se modifiquen si se hacen más cultivos on fungicidas.