Exploración de la Base de Datos threatenedperu

Paul E. Santos Andrade

2025-10-26

Introducción

La base de datos threatenedperu incluida en el paquete peruflorads43 contiene la lista oficial de especies de plantas amenazadas del Perú según el Decreto Supremo N° 043-2006-AG y su actualización taxonómica utilizando la información de Plants of the World Online (POWO) del Royal Botanic Gardens, Kew.

Carga del conjunto de datos

threatenedperu <- get_threatened_database(type = "original")

El objeto threatenedperu es un tibble con 776 registros y 13 columnas, estructurado de la siguiente manera:

Tipo de columna Variables principales Descripción
Datos originales (DS 043-2006-AG) scientific_name, author, family, threat_category, genus, species, infraspecies, tag, infraspecies_2 Información original del listado de especies amenazadas publicado en 2006.
Datos actualizados (POWO) accepted_name, accepted_name_author, accepted_family, taxonomic_status Información validada con taxonomía actualizada según POWO.

Revisión de escritura y normalización

Durante la depuración se realizaron las siguientes acciones:

Ejemplo comparativo de los de errores tipográficos en nombres científicos:


threatenedperu |>
  dplyr::mutate(compara = scientific_name != accepted_name) |> 
  dplyr::mutate(
    # Calcula la distancia solo cuando los nombres difieren
    string_distance = ifelse(
      compara,
      stringdist::stringdist(scientific_name, accepted_name, method = "lv"), # 'lv' = Levenshtein
      0
    )
  ) |>
  dplyr::filter(string_distance > 0 & string_distance < 3) |> 
  dplyr::select(scientific_name, accepted_name, string_distance) |> 
  gt::gt()
scientific_name accepted_name string_distance
Ascidiogine wurdackii Ascidiogyne wurdackii 1
Onoseris chrysactinioides Onoseris chrysactinoides 1
Otholobium munyensis Otholobium munyense 2
Proboscidea altheaefolia Proboscidea althaeifolia 2
Jaltomata mioneii Jaltomata mionei 1
Solanum chuquidenum Solanum chiquidenum 1
Begonia octopetala subsp. ovatoformis Begonia octopetala subsp. ovatiformis 1
Nototriche pseudo-pichinchensis Nototriche pseudopichinchensis 1
Nototriche tovari Nototriche tovarii 1
Mutisia wurdacki Mutisia wurdackii 1
Parastrephia phylicaeformis Parastrephia phyliciformis 2
Senecio violaefolius Senecio violifolius 2
Cyathostegia mathewsii Cyathostegia matthewsii 1
Pachyrrhizus tuberosus Pachyrhizus tuberosus 1
Peltogyne altisima Peltogyne altissima 1
Aniba rosaeodora Aniba rosodora 2
Acaulimalva parnassiaefolia Acaulimalva parnassiifolia 2
Solanum huancabambese Solanum huancabambense 1
Solanum rachialatum Solanum raquialatum 2
Hesperoxiphion pardale Hesperoxiphion pardalis 2
Salvia opossitiflora Salvia oppositiflora 2
Cycnoches peruviana Cycnoches peruvianum 2
Masdevallia zebraceae Masdevallia zebracea 1
Telipogon alegria Telipogon alegriae 1
Aspasia psitticina Aspasia psittacina 1
Epidendrum micro-cattleya Epidendrum microcattleya 1
Gongora quinquinervis Gongora quinquenervis 1
Masdevallia andreettaeana Masdevallia andreettana 2
Maxillaria rotumdilabia Maxillaria rotundilabia 1
Miltoniopsis bismarkii Miltoniopsis bismarckii 1
Mormodes rolfeanum Mormodes rolfeana 2
Psychopsis versteegianum Psychopsis versteegiana 2
Rodriguezia bockii Rodriguezia bockiae 2
Stanhopea haselowiana Stanhopea haseloffiana 2
Stanhopea jenishiana Stanhopea jenischiana 1
Trichopilia fragans Trichopilia fragrans 1
Trichopilia juninense Trichopilia juninensis 2
Zygopetalum labiosum Zygosepalum labiosum 2
Myrosmodes nubigenum Myrosmodes nubigena 2
Myrosmodes paludosum Myrosmodes paludosa 2
Cumulopuntia sphaericus Cumulopuntia sphaerica 2
Matucana haynei Matucana haynii 1

Variable taxonomic_status

Esta variable describe la relación entre el nombre original y su estado taxonómico según POWO:

Ejemplos de cada categoría:

# Nombres aceptados
threatenedperu |>
filter(taxonomic_status == "Accepted") |>
select(scientific_name, accepted_name) |>
slice_head(n = 5)
#> # A tibble: 5 × 2
#>   scientific_name            accepted_name             
#>   <chr>                      <chr>                     
#> 1 Aphelandra cuscoensis      Aphelandra cuscoensis     
#> 2 Aphelandra formosa         Aphelandra formosa        
#> 3 Aphelandra wurdackii       Aphelandra wurdackii      
#> 4 Tetramerium sagasteguianum Tetramerium sagasteguianum
#> 5 Rauhia decora              Rauhia decora

#Nombres sinónimos

threatenedperu |>
filter(taxonomic_status == "Synonym") |>
select(scientific_name, accepted_name) |>
slice_head(n = 5)
#> # A tibble: 5 × 2
#>   scientific_name         accepted_name               
#>   <chr>                   <chr>                       
#> 1 Pucara leucantha        Stenomesson leucanthum      
#> 2 Ceroxylon weberbaueri   Ceroxylon pityrophyllum     
#> 3 Dyssodia lopez-mirandae Schizotrichia lopez-mirandae
#> 4 Senecio mollendoensis   Lomanthus mollendoensis     
#> 5 Senecio okopanus        Lomanthus okopanus

#Casos sin opinión

threatenedperu |>
filter(taxonomic_status == "No opinion") |>
select(scientific_name, accepted_name) |>
slice_head(n = 5)
#> # A tibble: 2 × 2
#>   scientific_name      accepted_name      
#>   <chr>                <chr>              
#> 1 Otholobium mexicanum <NA>               
#> 2 Otholobium munyensis Otholobium munyense

Análisis cuantitativo de la actualización taxonómica

  1. Proporción de especies según su estatus taxonómico
status_summary <- threatenedperu |>
count(taxonomic_status) |>
mutate(pct = round(100 * n / sum(n), 1), 
       label = paste0(pct, "% (", n, ")"))

gt::gt(status_summary)
taxonomic_status n pct label
Accepted 595 76.7 76.7% (595)
No opinion 2 0.3 0.3% (2)
Synonym 179 23.1 23.1% (179)
ggplot(status_summary, aes(
  x = reorder(taxonomic_status, -pct),
  y = pct,
  fill = taxonomic_status
)) +
  geom_col(width = 0.7, show.legend = FALSE) +
  geom_text(aes(label = label), vjust = -0.4, size = 10, fontface = "bold") +
  scale_fill_manual(
    values = c(
      "Accepted" = "#4CAF50",   # verde para nombres válidos
      "Synonym" = "#2196F3",    # azul para sinónimos
      "No opinion" = "#FFC107"  # amarillo para indeterminados
    )
  ) +
  labs(
    title = "Proporción de nombres por estado taxonómico",
    x = "Estatus taxonómico",
    y = "Porcentaje (%)"
  ) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1))) +
  theme_bw() +
  theme(
    plot.title = element_text(size = 28, face = "bold", hjust = 0.5),
    axis.title.x = element_text(size = 22, margin = margin(t = 10)),
    axis.title.y = element_text(size = 22,margin = margin(r = 10)),
    axis.text = element_text(size = 22, color = "black"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank()
  )

  1. Distribución de especies por categoría de amenaza
category_summary <- threatenedperu |>
count(threat_category, .drop = FALSE) |>
mutate(
    threat_category = factor(threat_category, levels = c("CR","EN","VU","NT")),
    pct   = round(100 * n / sum(n), 1),
    label = paste0(n, " (", pct, "%)")
  )

gt::gt(category_summary)
threat_category n pct label
CR 193 24.9 193 (24.9%)
EN 73 9.4 73 (9.4%)
NT 119 15.3 119 (15.3%)
VU 391 50.4 391 (50.4%)
ggplot(category_summary,
       aes(x = forcats::fct_reorder(threat_category, n),
                                    y = n,
           fill = threat_category)) +
  geom_col(width = 0.7, show.legend = FALSE) +
  geom_text(aes(label = label), vjust = -0.35, size = 10, fontface = "bold") +
  scale_fill_manual(values = c(
    "CR" = "#D32F2F",        
    "EN" = "#F57C00",        
    "VU" = "#FBC02D",        
    "NT" = "#388E3C"        
  )) +
  labs(
    title = "Distribución de especies por categoría de amenaza (IUCN)",
    x = "Categoría IUCN", y = "Número de especies"
  ) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.10))) +
  theme_bw() +
  theme(
    plot.title = element_text(size = 28, face = "bold", hjust = 0.5),
    axis.text  = element_text(size = 22, color = "black"),
    axis.title = element_text(size = 22, color = "black"),
    panel.grid.major.x = element_blank()
  )

Ejemplos de cambios taxonómicos relevantes

Algunos casos de sinónimos actualizados con sus equivalentes aceptados:

threatenedperu |>
filter(taxonomic_status == "Synonym") |>
select(scientific_name, accepted_name, accepted_family, threat_category) |>
  head(n=20) |> 
  gt::gt()
scientific_name accepted_name accepted_family threat_category
Pucara leucantha Stenomesson leucanthum Amaryllidaceae CR
Ceroxylon weberbaueri Ceroxylon pityrophyllum Arecaceae CR
Dyssodia lopez-mirandae Schizotrichia lopez-mirandae Asteraceae CR
Senecio mollendoensis Lomanthus mollendoensis Asteraceae CR
Senecio okopanus Lomanthus okopanus Asteraceae CR
Capparis eucalyptifolia Morisonia flexuosa Capparaceae CR
Capparis scabrida Morisonia scabrida Capparaceae CR
Carica candicans Vasconcellea candicans Caricaceae CR
Carica quercifolia Vasconcellea quercifolia Caricaceae CR
Carica stipulata Vasconcellea stipulata Caricaceae CR
Myrcia fallax Myrcia splendens Myrtaceae CR
Prumnopitys harmsiana Pectinopitys harmsiana Podocarpaceae CR
Huthia longiflora Cantua mediamnis Polemoniaceae CR
Laccopetalum giganteum Ranunculus giganteus Ranunculaceae CR
Hesperomeles heterophylla Hesperomeles obtusifolia var. obtusifolia Rosaceae CR
Larnax dilloniana Deprea dilloniana Solanaceae CR
Larnax kann-rasmussenii Deprea kann-rasmussenii Solanaceae CR
Larnax macrocalyx Deprea macrocalyx Solanaceae CR
Larnax nieva Deprea nieva Solanaceae CR
Larnax purpurea Deprea purpurea Solanaceae CR

Estos ejemplos muestran cómo especies registradas originalmente bajo un nombre hoy obsoleto fueron actualizadas conforme a la nomenclatura moderna (por ejemplo, Pucara leucantha ~ Stenomesson leucanthum).

Evaluación de coincidencias entre nombres originales y aceptados

El siguiente código calcula la proporción de coincidencia directa entre scientific_name y accepted_name:

threatenedperu |>
summarise(
total = n(),
iguales = sum(scientific_name == accepted_name, na.rm = TRUE),
porcentaje_iguales = round(100 * iguales / total, 1)
)
#> # A tibble: 1 × 3
#>   total iguales porcentaje_iguales
#>   <int>   <int>              <dbl>
#> 1   776     554               71.4

Esto permite cuantificar el grado de estabilidad nomenclatural en el decreto original frente a la taxonomía actual.

Conclusiones

threatenedperu |>
  dplyr::count(taxonomic_status) |>
  dplyr::mutate(porcentaje = scales::percent(n / sum(n), accuracy = 0.1)) |> 
  gt::gt()
taxonomic_status n porcentaje
Accepted 595 76.7%
No opinion 2 0.3%
Synonym 179 23.1%

Referencias Ministerio de Agricultura del Perú (2006). Decreto Supremo N° 043-2006-AG: Listado de especies de flora amenazada del Perú.

Plants of the World Online (POWO). Royal Botanic Gardens, Kew. https://powo.science.kew.org