Santiago Perdomo - María Alejandra Millán
Santiago Perdomo - María Alejandra Millán

Los pingüinos, aves marinas emblemáticas de los ecosistemas fríos, desempeñan un papel crucial en las tramas tróficas oceánicas y son bioindicadores sensibles a los cambios ambientales, incluyendo el cambio climático y la disponibilidad de recursos. Estudiar sus características físicas, o morfometría, es fundamental para comprender su adaptación a los diversos entornos que habitan y cómo las presiones ecológicas pueden influir en su biología. El presente trabajo se centra en realizar un análisis estadístico detallado de las variables morfométricas de distintas poblaciones de pingüinos.

La base de datos Palmer Penguins es un conjunto de datos ecológicos ampliamente utilizado en ciencia de datos y biología para analizar características físicas y ecológicas de pingüinos de la región de las Islas Palmer, en la Antártida. Fue recopilada por la Dra. Kristen Gorman y el Palmer Station Long-Term Ecological Research Program, y ofrece una alternativa didáctica al famoso conjunto de datos de los iris de Fisher, pero con un enfoque más accesible y relevante desde el punto de vista ecológico y evolutivo. El conjunto de datos incluye información morfométrica de tres especies de pingüinos antárticos: Adelie, Chinstrap y Gentoo.

Se realizarán dos principales analísis con la base de datos Palmer Penguins:

Problema #1

¿Los pinguinos que habitan diferentes islas presentan diferencias fisicas claras?

Objetivos y comprensión del problema

Los pingüinos, como todas las aves, poseen características específicas físicas que se emplean para poder catalogarlos en sus respectivas familias y especies. Recientemente, se ha recopilado información sobre tres especies de pingüinos que habitan las islas del archipiélago de Palmer en la antartida, recopilando información sobre su morfología, edad y sexo. Si bien en los datos recopilados se observan diferencias en cuanto a las medidas morfológicas de las especies de pingüinos dependiendo de la isla en la que habitan, ¿realmente existen diferencias morfométricas marcadas dependiendo del hábitat?

El objetivo principal de este trabajo, es analizar si existen diferencias físicas marcadas entre los pingüinos que habitan diferentes islas mediante la implementación de un algoritmo de aprendizaje no supervisado como lo es el cluster.

Comprensión de los datos:

View((palmerpenguins::penguins))
library(palmerpenguins)
data("penguins")
head(penguins)
## # A tibble: 6 × 8
##   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
##   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
## 1 Adelie  Torgersen           39.1          18.7               181        3750
## 2 Adelie  Torgersen           39.5          17.4               186        3800
## 3 Adelie  Torgersen           40.3          18                 195        3250
## 4 Adelie  Torgersen           NA            NA                  NA          NA
## 5 Adelie  Torgersen           36.7          19.3               193        3450
## 6 Adelie  Torgersen           39.3          20.6               190        3650
## # ℹ 2 more variables: sex <fct>, year <int>

El conjunto de datos proveniente del paquete palmer penguins que contiene información morfométrica y biológica de tres especies de pingüinos (Adelie, Chinstrap y Gentoo) recolectada en tres islas del archipiélago Palmer (Torgersen, Biscoe y Dream) durante los años 2007, 2008 y 2009. Cada observación incluye medidas como la longitud y profundidad del pico (en mm), longitud de las aletas (en mm), masa corporal (en gramos), el sexo del individuo y el año. Aunque el uso de head(penguins) muestra solo seis registros iniciales correspondientes a la especie Adelie en la isla Torgersen (año 2007), esto no representa la totalidad del conjunto, que en realidad presenta una mayor diversidad. Además, algunas variables presentan valores faltantes (NA), por lo que es recomendable depurarlos antes de aplicar análisis como clustering o modelos estadísticos. El dataset es útil para explorar patrones morfológicos y diferencias entre especies o contextos geográficos y temporales.

summary(penguins)
##       species          island    bill_length_mm  bill_depth_mm  
##  Adelie   :152   Biscoe   :168   Min.   :32.10   Min.   :13.10  
##  Chinstrap: 68   Dream    :124   1st Qu.:39.23   1st Qu.:15.60  
##  Gentoo   :124   Torgersen: 52   Median :44.45   Median :17.30  
##                                  Mean   :43.92   Mean   :17.15  
##                                  3rd Qu.:48.50   3rd Qu.:18.70  
##                                  Max.   :59.60   Max.   :21.50  
##                                  NA's   :2       NA's   :2      
##  flipper_length_mm  body_mass_g       sex           year     
##  Min.   :172.0     Min.   :2700   female:165   Min.   :2007  
##  1st Qu.:190.0     1st Qu.:3550   male  :168   1st Qu.:2007  
##  Median :197.0     Median :4050   NA's  : 11   Median :2008  
##  Mean   :200.9     Mean   :4202                Mean   :2008  
##  3rd Qu.:213.0     3rd Qu.:4750                3rd Qu.:2009  
##  Max.   :231.0     Max.   :6300                Max.   :2009  
##  NA's   :2         NA's   :2

El resumen estadístico del dataset penguins revela una muestra compuesta por 344 registros de tres especies: Adelie (152 individuos), Chinstrap (68) y Gentoo (124), distribuidos en tres islas: Biscoe (168 observaciones), Dream (124) y Torgersen (52). En cuanto a las variables cuantitativas, se observan rangos amplios: la longitud del pico varía entre 32.1 y 59.6 mm, la profundidad entre 13.1 y 21.5 mm, la longitud de las aletas entre 172 y 231 mm, y la masa corporal entre 2700 y 6300 gramos. Las medias de estas variables muestran tamaños moderados: por ejemplo, la masa corporal promedio es de aproximadamente 4202 g. El conjunto presenta algunos valores faltantes (NA): 2 en cada una de las variables cuantitativas y 11 en la variable categórica sex, lo cual puede afectar ciertos análisis si no se manejan adecuadamente. Además, los datos fueron recolectados durante tres años consecutivos (2007 a 2009), con una distribución bastante balanceada en el tiempo. En general, el dataset ofrece una base robusta para explorar diferencias morfológicas y patrones ecológicos entre especies y localizaciones.

Preparación de los datos:

Como se dijo anteriormente, la base de datos cuenta con valores nulos (NA), por esto mismo y para el consecuente analisis y elaboración del cluster se optó por eliminar dichos datos. A su vez, se seleccionaron y estandarizaron las variables morfométricas para evitar errores

#Eliminar valores NA 
penguins_limpios <- na.omit(penguins)
# Seleccionar variables morfométricas y eliminar filas con NA
penguins_cluster <- penguins[, c("bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g")]
penguins_cluster <- na.omit(penguins_cluster)

# Estandarizar las variables  
penguins_cluster <- scale(penguins_cluster)

#Visualizar la estructura
str(penguins_limpios)
## tibble [333 × 8] (S3: tbl_df/tbl/data.frame)
##  $ species          : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ island           : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ bill_length_mm   : num [1:333] 39.1 39.5 40.3 36.7 39.3 38.9 39.2 41.1 38.6 34.6 ...
##  $ bill_depth_mm    : num [1:333] 18.7 17.4 18 19.3 20.6 17.8 19.6 17.6 21.2 21.1 ...
##  $ flipper_length_mm: int [1:333] 181 186 195 193 190 181 195 182 191 198 ...
##  $ body_mass_g      : int [1:333] 3750 3800 3250 3450 3650 3625 4675 3200 3800 4400 ...
##  $ sex              : Factor w/ 2 levels "female","male": 2 1 1 1 2 1 2 1 2 2 ...
##  $ year             : int [1:333] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
##  - attr(*, "na.action")= 'omit' Named int [1:11] 4 9 10 11 12 48 179 219 257 269 ...
##   ..- attr(*, "names")= chr [1:11] "4" "9" "10" "11" ...

Se observa que todas las variables han sido limpiadas de valores perdidos (NA), por lo que los datos están listos para análisis estadísticos y de agrupamiento.

Elaboración del cluster:

Una vez los datos fueron limpiados, se procedió a la elaboración del cluster:

# Clustering jerárquico
cluster <- hclust(dist(penguins_cluster))

# Dendrograma
plot(cluster, main = "Dendrograma - Pingüinos")

El dendrograma de pingüinos, construido mediante clustering jerárquico con el método de “complete linkage” sobre variables morfométricas estandarizadas (longitud y profundidad del pico, longitud de la aleta y masa corporal), revela una estructura de similitud basada en estas características físicas. Las uniones a niveles inferiores indican pingüinos con perfiles morfométricos muy parecidos, mientras que las uniones a mayores alturas sugieren diferencias más significativas. La posible formación de grupos podría reflejar las distintas especies de pingüinos presentes, aunque esto es una hipótesis sin conocer la variable de especie. La altura de las uniones dentro de las ramas sugiere la variabilidad morfológica dentro de los posibles grupos, con uniones más bajas indicando mayor homogeneidad. La ausencia de cortes horizontales evidentes a grandes alturas sugiere una variación morfológica más continua entre los pingüinos analizados.

# Altura de fusiones (para decidir número de grupos)
plot(cluster$height, type = "b", main = "Altura de las fusiones")

El gráfico de la altura de las fusiones revela que las primeras uniones en el clustering jerárquico de pingüinos ocurren entre individuos muy similares, indicado por las bajas alturas de fusión iniciales. A medida que se forman clústeres más grandes, la disimilitud entre los grupos que se fusionan aumenta gradualmente, sin saltos abruptos significativos hasta la etapa final, donde la fusión de los últimos clústeres ocurre a una altura considerablemente mayor. Este patrón sugiere que, si bien existen subgrupos de pingüinos con similitudes morfológicas, no hay una separación clara en grupos muy distintos a grandes niveles de disimilitud, y el salto drástico al final podría ser un indicio para considerar un número de clústeres justo antes de esta unión final.

plot(cluster$height[(length(cluster$height)-20):length(cluster$height)], type = "b", main = "Zoom últimas fusiones")

El gráfico de zoom en las últimas fusiones del clustering jerárquico revela una tendencia ascendente en la disimilitud de los clústeres unidos, con un aumento más pronunciado en las alturas de fusión hacia las etapas finales. una aceleración en la pendiente alrededor de los últimos cinco a siete pasos de fusión sugiere un punto donde las diferencias entre los clústeres que se unen se vuelven más significativas. El salto más grande ocurre en la última fusión, lo que podría indicar una división principal en dos grupos grandes. Considerando la aceleración en la altura de fusión, se podría argumentar que un número de clústeres entre 2 y 4 podría representar una partición más significativa de los datos antes de que las diferencias entre los grupos se vuelvan excesivamente grandes.

# Cortar en k grupos, en este caso, k=3
grupos <- cutree(cluster, k = 3)

# Crear un nuevo dataframe con el grupo asignado
penguins_final <- data.frame(penguins[!is.na(penguins$bill_length_mm) &
                                        !is.na(penguins$bill_depth_mm) &
                                        !is.na(penguins$flipper_length_mm) &
                                        !is.na(penguins$body_mass_g), ],
                             grupo = grupos)

# Cruzar grupo vs isla
table(penguins_final$grupo, penguins_final$island)
##    
##     Biscoe Dream Torgersen
##   1     44    70        51
##   2    123     0         0
##   3      0    54         0

La tabla de cruce entre los grupos de clúster y la isla de observación revela una distribución no uniforme: el Grupo 2 se encuentra casi exclusivamente en la isla Biscoe, el Grupo 3 solo en la isla Dream, mientras que el Grupo 1 tiene una presencia considerable en las tres islas (Biscoe, Dream y Torgersen). Esta distribución sugiere una posible correlación entre las características morfométricas que definen los grupos de clúster y la ubicación geográfica de los pingüinos, insinuando una posible conexión con la distribución de las especies en las diferentes islas.

Evaluación del Cluster:

Para este paso se empleo el coeficiente de de silueta, el cual básicamente nos indica que tan bien están agrupados los componentes del cluster, en este caso, si los pingüinos están bien agrupados dentro de su cluster. Para esto, se analiza el promedio del coeficiente de silueta, el cual, entre más cercano a 1 sea, mejor estructura del clustering.

#Evaluar el cluster
distancia_penguins <- dist(penguins_cluster)
library(cluster)
silueta_penguins <- silhouette(grupos, dist = distancia_penguins)
summary(silueta_penguins)
## Silhouette of 342 units in 3 clusters from silhouette.default(x = grupos, dist = distancia_penguins) :
##  Cluster sizes and average silhouette widths:
##       165       123        54 
## 0.3715042 0.5676867 0.4316260 
## Individual silhouette widths:
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -0.4302  0.4064  0.5037  0.4516  0.5682  0.6787

El análisis del coeficiente de silueta para el clustering de los 342 pingüinos en 3 grupos revela una estructura moderada, con un ancho de silueta promedio general de 0.452, lo que indica una separación débil a razonable entre los clústeres. Los tamaños de los clústeres son desiguales (165, 123 y 54), y los anchos de silueta promedio por clúster varían (0.372, 0.568 y 0.432), sugiriendo que el Clúster 2 está mejor definido que el Clúster 1. La presencia de anchos de silueta individuales negativos apunta a posibles malas asignaciones para algunos pingüinos, lo que sugiere que, si bien existen tendencias de agrupamiento basadas en las variables morfométricas, la separación no es completamente clara para todos los individuos.

Conclusión:

El análisis de clustering jerárquico basado en las variables morfométricas de los pingüinos (longitud y profundidad del pico, longitud de la aleta y masa corporal) sugiere que existen diferencias físicas entre los grupos de pingüinos, y estos grupos muestran una asociación con las islas en las que habitan, aunque la separación basada únicamente en estas variables no es completamente clara.

La formación de tres clústeres y la distribución no uniforme de estos grupos entre las islas (con el Grupo 2 predominantemente en Biscoe y el Grupo 3 exclusivamente en Dream) indican que los pingüinos de diferentes islas tienden a poseer combinaciones de características físicas distintas. Sin embargo, la evaluación mediante el coeficiente de silueta, que arrojó un promedio general de 0.452 (estructura débil a razonable) y la presencia de valores negativos para algunos individuos, sugiere que estas diferencias físicas, aunque significativas a nivel de grupo, no son tan drásticas como para permitir una separación perfecta de todos los individuos en clústeres bien definidos y aislados.

Por lo tanto, podemos concluir que los pingüinos que habitan diferentes islas sí presentan tendencias hacia diferencias físicas, pero estas diferencias pueden ser sutiles o presentar individuos con características intermedias, lo que resulta en una estructura de clustering moderada basada en las variables morfométricas analizadas.

Problema #2

¿Que medidas fisicas predicen el paso de cría a adulto?

Comprensión del problema:

Para responder la pregunta de investigación, se utilizó una base de datos extendida derivada del conjunto Palmer Penguins, compuesta únicamente por individuos de la especie Adelie. Esta base incluye datos de individuos en diferentes islas y años, y contiene las siguientes variables de interés:

  • bill_length_mm: largo del pico

  • bill_depth_mm: profundidad del pico

  • flipper_length_mm: longitud de la aleta

  • body_mass_g: masa corporal

  • life_stage: etapa de vida (chick, juvenile o adult)

Preparación de Datos

Se filtraron únicamente los individuos clasificados como cría o juvenil, y se seleccionaron las variables morfométricas relevantes (bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g). Además, se eliminaron observaciones con datos faltantes (NA) y se aseguró que la variable life_stage se tratara como un factor ordenado, con cría como referencia:

#preparacion para C-J
library(dplyr)
library(readr)
library(plotly)

penguinoscrudos <- read_csv("C:/Users/malem/OneDrive - PUJ Cali/Penguins/penguinoscrudos.csv")
View(penguinoscrudos)
pinguinos_chick_juv <- penguinoscrudos %>%
  filter(life_stage %in% c("chick", "juvenile")) %>%
  select(bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g, life_stage) %>%
  filter(complete.cases(.)) %>%
  mutate(life_stage = factor(life_stage, levels = c("chick", "juvenile")))

De igual manera, se generó un segundo subconjunto para comparar individuos juvenile y adult, aplicando el mismo tipo de limpieza y transformación:

pinguinos_juv_adult <- penguinoscrudos %>%
  filter(life_stage %in% c("juvenile", "adult")) %>%
  select(bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g, life_stage) %>%
  filter(complete.cases(.)) %>%
  mutate(life_stage = factor(life_stage, levels = c("juvenile", "adult")))

Modelos Logisticos

#MODELO LOGISTICO C-J
modelo_chick_juv <- glm(life_stage ~ bill_length_mm + bill_depth_mm + flipper_length_mm + body_mass_g,
                        data = pinguinos_chick_juv,
                        family = binomial())
summary(modelo_chick_juv)
## 
## Call:
## glm(formula = life_stage ~ bill_length_mm + bill_depth_mm + flipper_length_mm + 
##     body_mass_g, family = binomial(), data = pinguinos_chick_juv)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -2.170e+01  3.049e+00  -7.116 1.11e-12 ***
## bill_length_mm    -1.511e-01  3.043e-02  -4.966 6.84e-07 ***
## bill_depth_mm      4.321e-01  9.493e-02   4.552 5.32e-06 ***
## flipper_length_mm  4.694e-03  1.395e-02   0.337    0.736    
## body_mass_g        4.959e-03  6.078e-04   8.158 3.39e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 531.92  on 403  degrees of freedom
## Residual deviance: 187.00  on 399  degrees of freedom
## AIC: 197
## 
## Number of Fisher Scoring iterations: 7

Las variables largo y profundidad del pico y la masa corporal son predictoras significativas del paso de chick a juvenile. La longitud de la aleta no fue significativa en este caso. Esto sugiere que los cambios en tamaño y proporción del pico, así como el aumento en peso, son marcadores importantes en esta etapa temprana del desarrollo.

modelo_juv_adult <- glm(life_stage ~ bill_length_mm + bill_depth_mm + flipper_length_mm + body_mass_g,
                        data = pinguinos_juv_adult,
                        family = binomial())
summary(modelo_juv_adult)
## 
## Call:
## glm(formula = life_stage ~ bill_length_mm + bill_depth_mm + flipper_length_mm + 
##     body_mass_g, family = binomial(), data = pinguinos_juv_adult)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)       -1.561e+01  1.670e+00  -9.349  < 2e-16 ***
## bill_length_mm     1.093e-03  1.288e-02   0.085  0.93232    
## bill_depth_mm      3.116e-01  5.885e-02   5.295 1.19e-07 ***
## flipper_length_mm  3.018e-02  7.044e-03   4.284 1.83e-05 ***
## body_mass_g        5.815e-04  1.989e-04   2.924  0.00346 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 559.06  on 417  degrees of freedom
## Residual deviance: 406.62  on 413  degrees of freedom
## AIC: 416.62
## 
## Number of Fisher Scoring iterations: 5

En este caso, la profundidad del pico, la longitud de la aleta y la masa corporal resultaron ser predictores significativos del paso de juvenile a adult, mientras que el largo del pico no tuvo efecto significativo. Esto indica que, en las etapas finales del crecimiento, el desarrollo de la musculatura y la capacidad de nado (reflejada en las aletas) junto con el peso total, son claves para identificar individuos adultos.

Elaboración de Boxplots:

penguinoscrudos$life_stage <- factor(penguinoscrudos$life_stage,
                                      levels = c("chick", "juvenile", "adult"))

ggplot(penguinoscrudos, aes(x = life_stage, y = body_mass_g, fill = life_stage)) +
  geom_boxplot() +
  labs(title = "Masa corporal según estadio de vida",
       x = "Etapa de vida", y = "Masa corporal (g)") +
  scale_fill_manual(values = c("chick" = "#FFD700",  
                               "juvenile" = "#87CEFA",  
                               "adult" = "#32CD32")) +  
  theme_minimal()

Se observa un aumento progresivo en la masa corporal media entre etapas. Los chicks presentan un peso significativamente menor (media cercana a los 3200 g), que incrementa notablemente en los juveniles (alrededor de 4700 g), y alcanza los valores más altos en adultos (media por sobre los 5500 g).

ggplot(penguinoscrudos, aes(x = life_stage, y = flipper_length_mm, fill = life_stage)) +
  geom_boxplot() +
  labs(title = "Largo de la Aleta según estadio de vida",
       x = "Etapa de vida", y = "Largo de la Aleta (mm)") +
  scale_fill_manual(values = c("chick" = "#FFD700",  
                               "juvenile" = "#87CEFA",  
                               "adult" = "#32CD32")) +  
  theme_minimal()

Esta variable también muestra un crecimiento con la edad. Los chicks tienen aletas más cortas (mediana alrededor de 180 mm), mientras que los juveniles alcanzan alrededor de 200 mm, y los adultos superan los 220 mm.

ggplot(penguinoscrudos, aes(x = life_stage, y = bill_length_mm, fill = life_stage)) +
  geom_boxplot() +
  labs(title = "Largo del pico según estadio de vida",
       x = "Etapa de vida", y = "Largo del pico (mm)") +
  scale_fill_manual(values = c("chick" = "#FFD700",  
                               "juvenile" = "#87CEFA",  
                               "adult" = "#32CD32")) +  
  theme_minimal()

A lo largo del desarrollo, se incrementa el largo del pico. En chicks, se concentra en torno a 30–35 mm, y crece gradualmente hasta superar los 40 mm en adultos.

ggplot(penguinoscrudos, aes(x = life_stage, y = bill_depth_mm, fill = life_stage)) +
  geom_boxplot() +
  labs(title = "Profundidad del pico según estadio de vida",
       x = "Etapa de vida", y = "Profundidad del pico (mm)") +
  scale_fill_manual(values = c("chick" = "#FFD700",  
                               "juvenile" = "#87CEFA",  
                               "adult" = "#32CD32")) +  
  theme_minimal()

Aunque el patrón es más moderado, también se aprecia un aumento progresivo. Chicks presentan una mediana cercana a 15 mm, mientras que los juveniles y adultos muestran valores cercanos a 18–20 mm y superiores.

Predicciones

prob_chick_juv <- predict(modelo_chick_juv, type = "response")
pred_chick_juv <- ifelse(prob_chick_juv > 0.5, "juvenile", "chick")
pred_chick_juv <- factor(pred_chick_juv, levels = c("chick", "juvenile"))

table(Predicho = pred_chick_juv, Real = pinguinos_chick_juv$life_stage)
##           Real
## Predicho   chick juvenile
##   chick      124       19
##   juvenile    25      236

El modelo logra clasificar correctamente el 89% de los casos. Los errores se distribuyen relativamente parejo entre falsos juveniles y falsos chicks, pero la alta tasa de aciertos indica que las características morfológicas permiten distinguir efectivamente estas dos etapas de desarrollo temprano.

prob_juv_adult <- predict(modelo_juv_adult, type = "response")
pred_juv_adult <- ifelse(prob_juv_adult > 0.5, "adult", "juvenile")
pred_juv_adult <- factor(pred_juv_adult, levels = c("juvenile", "adult"))


table(Predicho = pred_juv_adult, Real = pinguinos_juv_adult$life_stage)
##           Real
## Predicho   juvenile adult
##   juvenile      215    60
##   adult          40   103

Aunque la exactitud sigue siendo aceptable (76%), este modelo presenta más errores, especialmente clasificando juveniles como adultos. Esto puede deberse a una transición más gradual en las características morfológicas entre estas dos etapas. Aun así, el modelo muestra una capacidad significativa para predecir correctamente el estadio de vida en función de los datos físicos.

Conclusiones:

Este estudio evidenció que las características morfológicas de los pingüinos presentan variaciones significativas entre las distintas etapas de vida: chick, juvenile y adult. A partir del análisis de variables como la masa corporal, largo de la aleta, largo del pico y profundidad del pico, se observó un patrón de crecimiento progresivo y consistente, coherente con el desarrollo ontogenético esperado. Los modelos predictivos aplicados lograron clasificar con alta precisión los individuos según su estadio de vida, lo que sugiere que las medidas morfométricas son indicadores confiables del grado de madurez. En particular, la masa corporal y el largo de la aleta resultaron ser especialmente discriminantes en las transiciones entre etapas. Estos hallazgos destacan el valor de la morfología como herramienta para inferir el estado de desarrollo en poblaciones silvestres, lo cual puede ser útil en estudios ecológicos, de conservación y de manejo de especies. Además, refuerzan la utilidad del conjunto de datos de palmerpenguins como recurso pedagógico y científico para analizar patrones biológicos en aves marinas.