[Pegar aquí el enlace al video (Loom, Zoom, OBS, Teams, etc.)]
Este documento presenta la solución completa al Taller Práctico
utilizando el conjunto de datos palmerpenguins. Se emplea
consistentemente el operador pipe (%>%) para la
manipulación de datos y la construcción de visualizaciones con
ggplot2.
El dataset contiene mediciones de tres especies de pingüinos (Adelie, Chinstrap y Gentoo) recolectadas en la Antártida: longitud y profundidad del pico, longitud de aletas, masa corporal, sexo e isla de origen.
Objetivo: Filtrar observaciones con valores
faltantes en sex, agrupar por species y
sex, y calcular media, desviación estándar de la masa
corporal y el número de observaciones por grupo.
# Limpieza y cálculo de descriptivos
resultado_ej1 <- penguins %>%
filter(!is.na(sex)) %>% # Eliminar observaciones con NA en sex
group_by(species, sex) %>% # Agrupar por especie y sexo
summarise(
media_masa = mean(body_mass_g, na.rm = TRUE), # Media de masa corporal
desv_est_masa = sd(body_mass_g, na.rm = TRUE), # Desviación estándar
n = n(), # Cantidad de observaciones
.groups = "drop"
)
knitr::kable(resultado_ej1, digits = 1)| species | sex | media_masa | desv_est_masa | n |
|---|---|---|---|---|
| Adelie | female | 3368.8 | 269.4 | 73 |
| Adelie | male | 4043.5 | 346.8 | 73 |
| Chinstrap | female | 3527.2 | 285.3 | 34 |
| Chinstrap | male | 3939.0 | 362.1 | 34 |
| Gentoo | female | 4679.7 | 281.6 | 58 |
| Gentoo | male | 5484.8 | 313.2 | 61 |
Interpretación estadística y biológica:
Después de eliminar las observaciones con sexo desconocido, se observa que:
n) es razonable en todos los
grupos (alrededor de 30–60 observaciones), lo que permite estimaciones
estables de media y desviación estándar.Biológicamente, la mayor masa de los Gentoo se asocia con su ecología: son buceadores profundos y eficientes que se alimentan principalmente de krill, y su mayor tamaño corporal les confiere ventajas en termorregulación y capacidad de almacenamiento de energía en el ambiente antártico.
Objetivo: Construir un gráfico de dispersión de
longitud del pico (bill_length_mm) vs. masa corporal
(body_mass_g), coloreado por especie.
# Gráfico de dispersión
ggplot(penguins %>% filter(!is.na(bill_length_mm), !is.na(body_mass_g)),
aes(x = bill_length_mm, y = body_mass_g, color = species)) +
geom_point(alpha = 0.7, size = 2.5) +
labs(
title = "Relación entre longitud del pico y masa corporal",
subtitle = "Pingüinos de Palmer (Antártida)",
x = "Longitud del pico (mm)",
y = "Masa corporal (g)",
color = "Especie"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14),
legend.position = "right"
)Interpretación estadística y biológica:
El gráfico muestra una clara separación entre especies:
Se observa una relación positiva general entre longitud del pico y masa corporal: pingüinos con picos más largos tienden a ser más pesados. Esta asociación es esperable porque ambas variables están relacionadas con el tamaño corporal general del animal. Sin embargo, la separación por color sugiere que gran parte de la variación se debe a diferencias interespecíficas más que a una relación continua dentro de cada especie.
Objetivo: Añadir una capa de regresión lineal simple
(geom_smooth(method = "lm")) al gráfico anterior y analizar
si la relación cambia según la especie.
# Dispersión + regresión lineal por especie
ggplot(penguins %>% filter(!is.na(bill_length_mm), !is.na(body_mass_g)),
aes(x = bill_length_mm, y = body_mass_g, color = species)) +
geom_point(alpha = 0.6, size = 2) +
geom_smooth(method = "lm", se = TRUE, linewidth = 1) +
labs(
title = "Relación entre longitud del pico y masa corporal con regresión lineal",
subtitle = "Líneas de tendencia por especie (método lm)",
x = "Longitud del pico (mm)",
y = "Masa corporal (g)",
color = "Especie"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14),
legend.position = "right"
)Análisis visual de la relación por especie:
Al añadir las rectas de regresión lineal se evidencia que:
Biológicamente, estas diferencias pueden reflejar adaptaciones ecológicas distintas: los Gentoo, al ser de mayor tamaño y tener dietas y comportamientos de forrajeo diferentes, presentan una alometría (relación entre tamaño de estructuras) distinta a las otras dos especies, que son más cercanas evolutivamente entre sí.
Objetivo: Crear un diagrama de caja de la longitud
de las aletas (flipper_length_mm) por especie, con relleno
según especie y tema minimalista.
# Boxplot de longitud de aletas por especie
ggplot(penguins %>% filter(!is.na(flipper_length_mm)),
aes(x = species, y = flipper_length_mm, fill = species)) +
geom_boxplot(alpha = 0.8, outlier.shape = 21, outlier.size = 2) +
labs(
title = "Comparación de la longitud de aletas entre especies",
subtitle = "Pingüinos de Palmer",
x = "Especie",
y = "Longitud de aletas (mm)",
fill = "Especie"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 14),
legend.position = "none" # El color ya está en el eje X
)Interpretación estadística y biológica:
El boxplot revela diferencias muy claras:
La longitud de las aletas es un rasgo morfológico clave relacionado con la eficiencia de natación y buceo. Los Gentoo, conocidos por ser excelentes buceadores y nadadores rápidos, poseen aletas más largas que les permiten generar mayor propulsión. Las diferencias observadas son consistentes con la separación ecológica y filogenética de las tres especies.
Además, se observa cierta asimetría y presencia de valores atípicos (outliers) en algunas especies, lo cual es normal en datos biológicos y refleja la variabilidad individual dentro de cada población.
sex es fundamental
para análisis que involucran dimorfismo sexual.ggplot2 combinadas con el
operador pipe facilitan un flujo de trabajo limpio, reproducible y fácil
de interpretar.## R version 4.6.1 (2026-06-24 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
##
## Matrix products: default
## LAPACK version 3.12.1
##
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8 LC_CTYPE=Spanish_Colombia.utf8
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Colombia.utf8
##
## time zone: America/Bogota
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] ggplot2_4.0.3 dplyr_1.2.1 palmerpenguins_0.1.1
##
## loaded via a namespace (and not attached):
## [1] Matrix_1.7-5 gtable_0.3.6 jsonlite_2.0.0 compiler_4.6.1
## [5] tidyselect_1.2.1 jquerylib_0.1.4 splines_4.6.1 scales_1.4.0
## [9] yaml_2.3.12 fastmap_1.2.0 lattice_0.22-9 R6_2.6.1
## [13] labeling_0.4.3 generics_0.1.4 knitr_1.52 tibble_3.3.1
## [17] bslib_0.12.0 pillar_1.11.1 RColorBrewer_1.1-3 rlang_1.3.0
## [21] cachem_1.1.0 xfun_0.60 sass_0.4.10 S7_0.2.2
## [25] cli_3.6.6 withr_3.0.3 magrittr_2.0.5 mgcv_1.9-4
## [29] digest_0.6.39 grid_4.6.1 rstudioapi_0.19.0 lifecycle_1.0.5
## [33] nlme_3.1-169 vctrs_0.7.3 evaluate_1.0.5 glue_1.8.1
## [37] farver_2.1.2 rmarkdown_2.32 tools_4.6.1 pkgconfig_2.0.3
## [41] htmltools_0.5.9