📝 Nota: Clase dictada un sábado a las 7:00 am.
Comprender los conceptos fundamentales de estadística descriptiva. Los verbos clave : Medir, Tabular Graficar.
Aplicar técnicas de análisis exploratorio de datos en R usando mediciones, gráficos y tablas
Interpretar resultados estadísticos correctamente desde un punto de vista estadístico y agronómico.
# 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)| 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)| 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.
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)| 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 |
# 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")| 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")| 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 |
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
✓ Observación: El Genotipo Criolla muestra la mayor media(Mediana).
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)
)⚠️ Importante: Estos resultados son preliminares (siolo descriptivos)