📝 Nota: Clase dictada un sábado a las 7:00 am.

1 Introducción a RStudio para Diseño de Experimentos

1.1 Estadística Descriptiva

1.1.1 Objetivos de Aprendizaje

1.1.1.1 Objetivo 1

Comprender los conceptos fundamentales de estadística descriptiva. Los verbos clave : Medir, Tabular Graficar.

1.1.1.2 Objetivo 2

Aplicar técnicas de análisis exploratorio de datos en R usando mediciones, gráficos y tablas

1.1.1.3 Objetivo 3

Interpretar resultados estadísticos correctamente desde un punto de vista estadístico y agronómico.

1.1.2 Carga de Datos

# Crear conjunto de datos de ejemplo
set.seed(123)
datos <- data.frame(
  Genotipo = rep(c("Criolla", "Pastusa", "Chocontá"), each = 30),
  Rendimiento = c(
    rnorm(30, mean = 3, sd = 0.30),
    rnorm(30, mean = 2.8, sd = 0.28),
    rnorm(30, mean = 2.6, sd = 0.25)))

# Vista preliminar
tail(datos) %>%  #pipe
  kable(caption = "últimas observaciones del conjunto de datos") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
últimas observaciones del conjunto de datos
Genotipo Rendimiento
85 Chocontá 2.544878
86 Chocontá 2.682946
87 Chocontá 2.874210
88 Chocontá 2.708795
89 Chocontá 2.518517
90 Chocontá 2.887202
head(datos) %>%  #pipe
  kable(caption = "primeras observaciones del conjunto de datos") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
primeras observaciones del conjunto de datos
Genotipo Rendimiento
Criolla 2.831857
Criolla 2.930947
Criolla 3.467612
Criolla 3.021152
Criolla 3.038786
Criolla 3.514520

💡 Nota: Este conjunto de datos contiene 90 observaciones de 3 tratamientos diferentes.

1.1.3 Cargar librería faux

library(faux) ## dl: diámetro longitudinal; de:diámetro ecuatorial
duraznos = rnorm_multi(seed = 123,n = 60,vars = 2,r = 0.70,mu = c(5,5.5),
                  sd =c(0.4,0.35),varnames = c("DE","DL"))

duraznos$localidad =gl(n=2,k = 30,length =60,labels = c("Paipa","Pamplona") )
head(duraznos) %>%  #pipe
  kable(caption = "primeras observaciones del conjunto de datos duraznos") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
primeras observaciones del conjunto de datos duraznos
DE DL localidad
4.726315 5.065560 Paipa
4.892302 5.207741 Paipa
4.952781 5.373177 Paipa
5.106724 5.854696 Paipa
4.469675 5.093085 Paipa
5.190732 5.731791 Paipa

1.1.4 Estadísticas Descriptivas

# Resumen estadístico
resumen <- datos %>%
  group_by(Genotipo) %>%
  summarise(
    N = n(),
    Media = mean(Rendimiento),
    Mediana = median(Rendimiento),
    SD = sd(Rendimiento),
    Min = min(Rendimiento),
    Max = max(Rendimiento)
  )

resumen %>%
  kable(digits = 2, 
        caption = "Estadísticas descriptivas por tratamiento",
        col.names = c("Genotipo", "n", "Media", "Mediana", "DE", "Mín", "Máx")) %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE,
                position = "center") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2E86AB")
Estadísticas descriptivas por tratamiento
Genotipo n Media Mediana DE Mín Máx
Chocontá 30 2.61 2.61 0.22 2.02 3.11
Criolla 30 2.99 2.98 0.29 2.41 3.54
Pastusa 30 2.85 2.81 0.23 2.37 3.41
# Resumen estadístico
resumen2 <- duraznos %>%
  group_by(localidad) %>%
  summarise(
    N = n(),
    Media = mean(DE),
    Mediana = median(DE),
    SD = sd(DE),
    Min = min(DE),
    Max = max(DE)
  )
print(resumen2)
## # A tibble: 2 × 7
##   localidad     N Media Mediana    SD   Min   Max
##   <fct>     <int> <dbl>   <dbl> <dbl> <dbl> <dbl>
## 1 Paipa        30  5.06    5.15 0.357  4.25  5.61
## 2 Pamplona     30  5.07    5.05 0.419  4.20  5.64
resumen2 %>%
  kable(digits = 2, 
        caption = "Estadísticas descriptivas por tratamiento",
        col.names = c("localidad", "n", "Media", "Mediana", "DE", "Mín", "Máx")) %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE,
                position = "center") %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2E86AB")
Estadísticas descriptivas por tratamiento
localidad n Media Mediana DE Mín Máx
Paipa 30 5.06 5.15 0.36 4.25 5.61
Pamplona 30 5.07 5.05 0.42 4.20 5.64

1.1.5 Visualización de Datos

library(ggplot2)

ggplot(datos, aes(x = Genotipo, y = Rendimiento, fill = Genotipo)) +
  geom_boxplot(alpha = 0.7, outlier.color = "red", outlier.size = 2) +
  geom_jitter(width = 0.2, alpha = 0.3, size = 1.5) +
  scale_fill_manual(values = c("#2E86AB", "#A23B72", "#F18F01")) +
  labs(
    title = "Comparación del Rendimiento por Genotipo",
    subtitle = "Boxplot con puntos individuales superpuestos",
    x = "Genotipo",
    y = "Rendimiento",
    caption = paste("Generado:", Sys.Date())
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(face = "bold", color = "#2E86AB", size = 16),
    plot.subtitle = element_text(color = "#666"),
    legend.position = "none",
    panel.grid.major = element_line(color = "#f0f0f0"),
    panel.grid.minor = element_blank(),
    axis.text = element_text(size = 11),
    axis.title = element_text(face = "bold", size = 12)
  )
Distribución de respuestas por tratamiento

Distribución de respuestas por tratamiento

✓ Observación: El Genotipo Criolla muestra la mayor media(Mediana).

1.1.6 Histogramas por Tratamiento

ggplot(datos, aes(x = Rendimiento, fill = Genotipo )) +
  geom_histogram(bins = 15, color = "white", alpha = 0.8) +
  facet_wrap(~ Genotipo , ncol = 3) +
  scale_fill_manual(values = c("#2E86AB", "tomato", "#F18F01")) +
  labs(
    title = "Distribución del Rendimiento por Genotipo",
    x = "Rendimiento",
    y = "Frecuencia"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", color = "#2E86AB", hjust = 0.5),
    legend.position = "none",
    strip.background = element_rect(fill = "#f5f5f5", color = "#ddd"),
    strip.text = element_text(face = "bold", size = 11)
  )

1.2 Conclusiones

⚠️ Importante: Estos resultados son preliminares (siolo descriptivos)

1.2.1 Próximos Pasos

  1. Incorporar más análisis descriptivos
  2. Importar datos de excel
  3. Exportar salidas a excel

1.3 Referencias

  • R Core Team (2024). R: A language and environment for statistical computing.
  • Wickham, H., et al. (2019). Welcome to the tidyverse.
  • Xie, Y. (2024). knitr: A General-Purpose Package for Dynamic Report Generation in R.