Workflow escalonado para modelamiento de distribución de especies

Nivel regional, nivel local, comparación de modelos y ensamble final

Autor/a

Diego Ocampo Melgar

Fecha de publicación

22 de junio de 2026

1 Objetivo

Este documento presenta un workflow reproducible para modelar la distribución potencial de una especie mediante un enfoque escalonado. El análisis separa dos preguntas distintas: primero identifica la señal ambiental regional con predictores bioclimáticos de escala gruesa; luego refina la predicción en un área local usando predictores de mayor resolución espacial.

  1. Nivel regional: estima la distribución potencial amplia usando ocurrencias de GBIF, un límite regional definido por shapefile y variables bioclimáticas. Este nivel también cumple una función de filtrado: selecciona un subconjunto de variables bioclimáticas informativas y reduce colinealidad mediante correlación de Pearson.
  2. Nivel local: usa ocurrencias locales y predictores de mayor resolución, incluyendo capas satelitales, DEM y variables bioclimáticas seleccionadas en el Nivel 1. El objetivo no es repetir el análisis regional, sino mejorar la representación de gradientes ambientales finos dentro del área de estudio.

El flujo compara GLM, Random Forest y MaxEnt en el nivel regional. En el nivel local incorpora además CART, GAM y BRT, y genera ensambles por media, mediana, media ponderada por desempeño y committee averaging. La evaluación incluye matriz de confusión, ROC-AUC, PR-AUC, TSS, sensibilidad, especificidad y comparación visual de mapas.

Cómo leer este informe

El HTML está diseñado para lectura y auditoría. Los resultados, tablas y figuras quedan visibles; el código queda plegado por defecto y puede abrirse en cada sección con Mostrar código. La evaluación debe interpretarse junto con los mapas y las curvas de respuesta, no solo a partir de una métrica aislada.

Nota técnica

maxnet implementa una formulación tipo MaxEnt en R sin depender de Java. Si se requiere el MaxEnt clásico de Phillips et al. con maxent.jar, se puede reemplazar el bloque de maxnet por dismo::maxent().

2 Configuración

Esta sección define parámetros, carga paquetes y prepara carpetas de salida. El bloque se mantiene oculto en el HTML porque es infraestructura de ejecución, no un resultado interpretativo.

3 Funciones auxiliares

Las funciones auxiliares concentran operaciones repetidas del workflow: lectura de límites, extracción de valores raster, muestreo de background, evaluación de modelos, predicción espacial y generación de ensambles. Mantenerlas agrupadas facilita revisar el análisis sin duplicar código en cada sección.

4 Nivel 1: distribución regional

El nivel regional estima la distribución potencial amplia de la especie. Trabaja con predictores climáticos de escala gruesa y ocurrencias públicas, por lo que se usa principalmente para capturar restricciones ambientales generales y seleccionar variables bioclimáticas que luego alimentan el nivel local.

4.1 Límite regional y datos GBIF

Se carga el límite regional desde un shapefile y se descargan ocurrencias georreferenciadas desde GBIF. Los registros se depuran para mantener coordenadas válidas, remover duplicados espaciales y reducir sobre-representación dentro de una misma celda raster.

Reading layer `regiones' from data source 
  `G:\My Drive\Programming\R projects\ColoColo_SDM\input\shp\regiones.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 13 features and 3 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -109.4549 ymin: -40.68094 xmax: -66.9905 ymax: -17.4984
Geodetic CRS:  SIRGAS-Chile 2002

4.2 Predictores bioclimáticos gruesos

Se descargan las 19 variables bioclimáticas y se recortan al área regional. Estas variables resumen gradientes de temperatura y precipitación, por lo que son adecuadas para representar restricciones climáticas de primer orden.

[1] TRUE
 [1] "bio1"      "bio2"      "bio3"      "bio4"      "bio5"      "bio6"     
 [7] "bio7"      "bio8"      "bio9"      "bio10"     "bio11"     "bio12"    
[13] "bio13"     "bio14"     "bio15"     "bio16"     "bio17"     "bio18"    
[19] "bio19"     "elevation" "slope_deg" "northness" "eastness" 

4.3 Contribución de variables y reducción por colinealidad

La selección se hace en dos pasos. Primero se ajusta un Random Forest exploratorio con las 19 variables bioclimáticas para estimar importancia relativa. Luego se ordenan las variables por importancia y se retiene un subconjunto de hasta 10 predictores, evitando pares con correlación de Pearson absoluta mayor o igual al umbral definido (params$pearson_threshold). Este criterio busca reducir redundancia sin eliminar de antemano variables ecológicamente relevantes.

 [1] "bio3"      "bio13"     "elevation" "bio2"      "bio18"     "bio15"    
 [7] "bio8"      "bio7"      "bio17"     "slope_deg"
           bio3 bio13 elevation  bio2 bio18 bio15  bio8  bio7 bio17 slope_deg
bio3       1.00 -0.70      0.10  0.32 -0.03 -0.31  0.37 -0.54 -0.58     -0.25
bio13     -0.70  1.00     -0.23  0.00 -0.01  0.51 -0.08  0.59  0.39      0.12
elevation  0.10 -0.23      1.00  0.03  0.69 -0.56 -0.61 -0.06  0.51      0.45
bio2       0.32  0.00      0.03  1.00  0.33 -0.20  0.41  0.63  0.02     -0.11
bio18     -0.03 -0.01      0.69  0.33  1.00 -0.52 -0.28  0.31  0.64      0.23
bio15     -0.31  0.51     -0.56 -0.20 -0.52  1.00  0.24  0.07 -0.38     -0.12
bio8       0.37 -0.08     -0.61  0.41 -0.28  0.24  1.00  0.07 -0.65     -0.50
bio7      -0.54  0.59     -0.06  0.63  0.31  0.07  0.07  1.00  0.49      0.10
bio17     -0.58  0.39      0.51  0.02  0.64 -0.38 -0.65  0.49  1.00      0.40
slope_deg -0.25  0.12      0.45 -0.11  0.23 -0.12 -0.50  0.10  0.40      1.00

4.4 Entrenamiento regional de GLM, Random Forest y MaxEnt

Con el subconjunto seleccionado de variables bioclimáticas se entrenan tres algoritmos con supuestos distintos. GLM entrega una referencia paramétrica interpretable, Random Forest captura relaciones no lineales e interacciones, y MaxEnt/maxnet representa un enfoque habitual para datos de presencia-background.

4.5 Curvas ROC, precision-recall y matriz de confusión

La evaluación combina métricas de ranking y clasificación. ROC-AUC resume la separación general entre presencias y background; PR-AUC es más exigente cuando las presencias son escasas; TSS, sensibilidad y especificidad permiten revisar el balance entre omisiones y falsas presencias.

4.6 Predicción espacial regional y comparación visual

Los modelos regionales se proyectan sobre el stack ambiental regional. La comparación visual permite detectar diferencias en extensión, continuidad espacial y zonas de extrapolación potencial que no siempre son evidentes en las métricas.

5 Nivel 2: distribución local

El nivel local refina la predicción dentro de un área acotada. Usa ocurrencias locales y predictores de mayor resolución para capturar heterogeneidad ambiental fina, manteniendo coherencia con la señal bioclimática seleccionada en el nivel regional.

5.1 Límite local y ocurrencias locales

Se carga un límite local contenido dentro del área regional y una base de ocurrencias construida para el estudio. A diferencia del Nivel 1, aquí no se consulta GBIF: el objetivo es usar información local controlada y consistente con el diseño de muestreo.

5.2 Predictor de referencia Sentinel 2

Se usa un raster Landsat 8 como referencia de resolución, extensión, CRS y grilla. Todas las capas locales se alinean a esta referencia para evitar errores por diferencias de resolución, desplazamiento de celdas o extensión espacial.

Los predictores deben estar en params$sentinel_predictors_dir y pueden corresponder a bandas, índices espectrales o texturas ya calculadas.

5.3 DEM 30 m y derivados topográficos

El DEM local aporta variables topográficas relevantes para la distribución de hábitat. A partir de la elevación se derivan pendiente, rugosidad, TRI, curvatura aproximada y variables asociadas a aspecto. Estas capas representan condiciones microtopográficas que no están capturadas por las bioclimáticas gruesas.

[1] TRUE

5.4 Verdor asociado a oasis de niebla

La capa generada corresponde a un mapa de frecuencia temporal de verdor, construido con imágenes Sentinel 2 L2A entre 2017 y 2025. Representa una síntesis temporal de cuántas veces cada pixel mostró una señal espectral compatible con vegetación escasa, efímera o vegetación más persistente.

El criterio está basado en el enfoque de Moat et al. 2021, quienes usaron NDVI en composiciones de 16 días para distinguir vegetación efímera y núcleos verdantes de oasis de niebla. En el estudio original se usó MODIS a 250 m; aquí se adapta la lógica a Landsat 8, con resolución espacial de 30 m. El paper define NDVI entre 0.10 y 0.15 como vegetación escasa o efímera, y NDVI > 0.15 como vegetación herbácea/leñosa de oasis de niebla.

El procesamiento realiza los siguientes pasos:

  1. Excluye coberturas no deseadas usando ESA WorldCover: urbano, cuerpos de agua, agricultura, nieve/hielo.

  2. Filtra pixeles problemáticos de Landsat 8 usando las bandas de calidad.

  3. Calcula NDVI para cada escena Landsat 8 válida.

  4. Agrupa las imágenes en ventanas de 16 días, imitando la lógica temporal del producto MODIS usado en el paper.

  5. Para cada ventana de 16 días, identifica si el pixel tuvo:

-   NDVI entre 0.10 y 0.15 → vegetación escasa/efímera.

-   NDVI mayor a 0.15 → vegetación verdante más clara.
  1. Cuenta cuántas veces ocurrió cada condición durante todo el periodo.

  2. Convierte esa frecuencia en clases finales:

  • 0: Sin clasificación (No mostró señal suficiente o quedó fuera de la máscara)

  • 1: Vegetación efímera (Señal débil y muy ocasional, NDVI 0.10–0.15)

  • 2: Oasis verdante muy ocasional (NDVI > 0.15 entre 2–4% de los periodos válidos)

  • 3: Oasis verdante ocasional (NDVI > 0.15 entre 4–8% de los periodos válidos)

  • 4: Oasis verdante estacional/intermitente (NDVI > 0.15 entre 8–25% de los periodos válidos)

  • 5: Oasis verdante persistente (NDVI > 0.15 entre 25–50% de los periodos válidos)

  • 6: Oasis verdante muy persistente (NDVI > 0.15 en más del 50% de los periodos válidos)

Posteriormente, el raster fue sometido a una limpieza espacial para reducir pixeles aislados y ruido tipo “sal y pimienta”. Las bandas categóricas fueron suavizadas mediante una ventana focal de moda, asignando a cada pixel la clase dominante en su vecindad local. Las bandas continuas fueron suavizadas mediante mediana focal, reduciendo valores extremos locales sin modificar fuertemente la estructura espacial general. Se mantuvieron bandas auxiliares para identificar los pixeles rellenados o modificados durante el suavizado.

[1] TRUE

5.5 Frecuencia de niebla y nubosidad

La capa de frecuencia de niebla costera fue generada como un proxy satelital de recurrencia de nubosidad baja o niebla potencial, usando imágenes Landsat 8 Collection 2 Level 2 entre 2013 y 2025. El análisis fue restringido a una franja costera dentro del área de estudio y excluyó áreas urbanas, agrícolas, cuerpos de agua y nieve/hielo. Para cada imagen se identificaron pixeles con señal tipo nube/fog mediante las banderas de calidad QA_PIXEL de Landsat 8, combinadas con criterios espectrales de brillo y blancura en las bandas visibles. Posteriormente, la serie fue agregada en ventanas de 16 días y se calculó el porcentaje de periodos válidos en que cada pixel presentó señal compatible con niebla o nube baja.

  • La banda principal anual es: all_fog_pct

    Representa el porcentaje de periodos válidos de 16 días en que cada pixel tuvo señal compatible con niebla/nube baja costera.

    La banda estacional es: season_fog_pct

    Representa lo mismo, pero solo para los meses definidos como temporada de niebla. Por defecto mayo a noviembre.

Posteriormente, el raster fue sometido a una limpieza espacial para reducir pixeles aislados y ruido tipo “sal y pimienta”. Las bandas categóricas fueron suavizadas mediante una ventana focal de moda, asignando a cada pixel la clase dominante en su vecindad local. Las bandas continuas fueron suavizadas mediante mediana focal, reduciendo valores extremos locales sin modificar fuertemente la estructura espacial general. Se mantuvieron bandas auxiliares para identificar los pixeles rellenados o modificados durante el suavizado.

[1] TRUE

5.6 Frecuencia de humedad

Se generó una capa complementaria de humedad superficial y agua superficial potencial a partir de imágenes Landsat 8 Collection 2 Level 2, manteniendo la misma lógica temporal aplicada a las capas de verdor y nubosidad/niebla. El análisis se restringió a la franja costera del área de estudio y se aplicaron máscaras de calidad para excluir nubes, sombras, nieve, saturación radiométrica y coberturas no objetivo como urbano y agricultura. Para agua superficial se utilizaron índices espectrales orientados a realzar cuerpos de agua, principalmente MNDWI y AWEI, debido a su capacidad de reducir confusiones con suelo, vegetación, sombras y superficies construidas. Para humedad superficial se utilizó NDMI/LSWI, basado en la relación entre NIR y SWIR, sensible a contenido de agua en vegetación y superficies húmedas.

La serie temporal fue agregada en ventanas de 16 días, siguiendo la lógica de frecuencia temporal utilizada para mapear oasis de niebla. Para cada pixel se calculó la recurrencia de condiciones compatibles con agua superficial y la frecuencia de señales de humedad superficial relativa. El resultado debe interpretarse como un proxy óptico de humedad superficial y agua expuesta, no como una medición directa de humedad volumétrica del suelo. Por esta razón, la capa se utiliza como variable auxiliar para interpretar la relación entre niebla costera, respuesta vegetal y disponibilidad superficial de humedad.

Banda Interpretación
surface_water_pct Porcentaje de periodos válidos con agua superficial detectada
surface_water_count Número de periodos de 16 días con agua superficial
water_valid_count Número de periodos válidos para agua
surface_water_class Clase ordinal de recurrencia de agua
surface_wetness_freq Porcentaje de periodos con NDMI alto relativo
surface_wetness_count Número de periodos con señal alta de humedad superficial
wetness_valid_count Número de periodos válidos para humedad
surface_wetness_class Clase ordinal de humedad superficial relativa
surface_wetness_mean NDMI medio temporal
surface_wetness_p75 Percentil 75 temporal de NDMI
surface_wetness_p90 Percentil 90 temporal de NDMI
NDMI_median NDMI mediano del periodo completo
elevation Elevación
[1] TRUE

5.7 Sentinel 2 Indices for summer 2025

[1] TRUE

5.8 Predictores de proximidad

[1] TRUE
 [1] "elevation"             "slope_deg"             "TRI"                  
 [4] "curvature_laplacian"   "northness"             "eastness"             
 [7] "roughness"             "twi_approx"            "fog_oasis_class_final"
[10] "all_fog_pct"           "surface_wetness_class" "SAVI"                 
[13] "NDMI"                  "NBR2"                  "NDRE"                 
[16] "costa_prox_0_1"        "quebradas_prox_0_1"    "rios_prox_0_1"        

5.9 Variables bioclimáticas seleccionadas del Nivel 1 remuestreadas a Sentinel-2

Las variables bioclimáticas seleccionadas en el Nivel 1 se incorporan al Nivel 2 después de ser remuestreadas a la grilla de referencia. Este paso preserva la señal climática regional, pero evita reinterpretar la resolución original de las bioclimáticas como si fuera información climática local fina.

[1] TRUE

5.10 Ensamble de predictores locales

Aquí se integran los predictores locales en un único stack ambiental: capas satelitales, topográficas, proxies de humedad/niebla/verdor y variables bioclimáticas seleccionadas. Luego se remueven capas sin variación o con problemas de nombres para asegurar compatibilidad con los modelos.

 [1] "bio15"                 "bio3"                  "SAVI"                 
 [4] "NDMI"                  "TRI"                   "NBR2"                 
 [7] "surface_wetness_class" "rios_prox_0_1"         "twi_approx"           
[10] "fog_oasis_class_final" "quebradas_prox_0_1"    "eastness"             
[13] "northness"             "curvature_laplacian"   "bio18"                

5.11 Entrenamiento y evaluación local

El nivel local compara seis modelos: GLM, RF, MaxEnt, CART, GAM y BRT. La evaluación se realiza sobre datos de prueba separados del entrenamiento; si se activa el aumento de presencias por buffer, esos puntos adicionales se usan solo para entrenamiento y no para evaluar desempeño.

[1] "GLM"    "RF"     "MaxEnt" "SVM"    "GAM"    "BRT"   
$roc


$pr


$curves
# A tibble: 2,722 × 8
   model threshold sensitivity specificity     FPR    TPR precision recall
   <chr>     <dbl>       <dbl>       <dbl>   <dbl>  <dbl>     <dbl>  <dbl>
 1 BRT       0.877      0            0.998 0.00196 0          0     0     
 2 BRT       0.783      0            0.996 0.00392 0          0     0     
 3 BRT       0.783      0            0.994 0.00588 0          0     0     
 4 BRT       0.717      0.0833       0.994 0.00588 0.0833     0.25  0.0833
 5 BRT       0.704      0.0833       0.992 0.00784 0.0833     0.2   0.0833
 6 BRT       0.691      0.0833       0.990 0.00980 0.0833     0.167 0.0833
 7 BRT       0.660      0.0833       0.988 0.0118  0.0833     0.143 0.0833
 8 BRT       0.659      0.0833       0.986 0.0137  0.0833     0.125 0.0833
 9 BRT       0.645      0.0833       0.984 0.0157  0.0833     0.111 0.0833
10 BRT       0.644      0.0833       0.982 0.0176  0.0833     0.1   0.0833
# ℹ 2,712 more rows

5.12 Predicción espacial local y comparación visual

Los modelos locales se proyectan sobre la grilla ambiental de alta resolución. La comparación visual es parte de la evaluación: un modelo puede tener buenas métricas y aun así producir artefactos espaciales, bordes abruptos o patrones ecológicamente poco plausibles.

5.13 Ensamble local de modelos

El ensamble se calcula usando todos los modelos disponibles en models_local: GLM, RF, MaxEnt, CART, GAM y BRT. Se generan cuatro salidas complementarias: media de probabilidades, mediana de probabilidades, media ponderada por TSS y committee averaging de predicciones binarias. La media y la mediana resumen consenso probabilístico; la media ponderada favorece modelos con mejor desempeño; el committee averaging expresa la proporción de modelos que clasifican cada celda como presencia.

6 Comparación global y decisión de modelo

Esta sección resume el desempeño de los modelos regionales y locales, identifica el mejor modelo individual y contrasta esa decisión con los ensambles. La selección final no debe basarse únicamente en la métrica máxima, sino en el equilibrio entre desempeño, estabilidad espacial e interpretabilidad ecológica.

La decisión de modelo se basa en tres criterios:

  1. Desempeño predictivo: prioridad a modelos con AUC-ROC, AUC-PR y TSS altos en datos de prueba.
  2. Balance de errores: revisión explícita de sensibilidad y especificidad para distinguir entre omisiones y falsas presencias.
  3. Plausibilidad ecológica: revisión de mapas, curvas parciales y superficies de respuesta para descartar artefactos, extrapolaciones no justificadas o respuestas incompatibles con el conocimiento de la especie.

El ensamble no reemplaza automáticamente al mejor modelo individual. Debe interpretarse como una predicción compuesta que puede ser más estable cuando los modelos coinciden, pero también puede ocultar desacuerdos importantes entre algoritmos.

[1] "RF"

En Nivel 1 regional, el set de prueba tiene 26 presencias y 299 negativos aleatorios. La prevalencia es ~8%. Por eso la precisión parece baja incluso en buenos modelos.

Esto no significa necesariamente que el modelo sea malo. Significa que, al haber muchos negativos, incluso una cantidad moderada de falsos positivos baja mucho la precisión.

En Nivel 2 local, el problema es más severo: solo hay 11 presencias y 191 negativos. La prevalencia es ~5.4%. El AUC-PR base esperado por azar está cerca de 0.054.

Todos superan el azar, pero no por mucho. Esto indica que el modelo local detecta alguna estructura ambiental, pero la señal es débil o el test tiene pocas presencias.

  • Para el modelo regional: Random Forest. Tiene el mejor AUC_ROC = 0.9098, mejor AUC_PR = 0.5652, alta especificidad 0.8528, buena sensibilidad 0.8462 y menos falsos positivos que MaxEnt. MaxEnt tiene un TSS levemente mayor, pero RF es más equilibrado.

  • Para el modelo local: MaxEnt. Tiene el mejor TSS = 0.5669, sensibilidad alta 0.8182 y especificidad aceptable 0.7487. Es el mejor compromiso para presencia-background/pseudoausencia, especialmente si el objetivo es delimitar hábitat potencial.

7 Curvas de respuesta parcial e inflated response curves

Las curvas de respuesta parcial muestran la predicción esperada al variar un predictor y mantener los demás constantes. Las inflated response curves extienden esta lógica incorporando el rango observado de los datos de calibración, lo que permite visualizar zonas donde el modelo extrapola o depende de supuestos fuera del dominio ambiental observado.

7.1 Función para curvas parciales e inflated response curves

7.2 Curvas para predictores principales

7.3 Superficies de respuesta 3D para dos predictores

Estas superficies no son mapas espaciales. Representan la predicción en el espacio ambiental definido por dos variables continuas, manteniendo el resto de predictores en su mediana. La altura corresponde a la probabilidad predicha.

8 Exportación final

Los productos finales se exportan como rasters para uso posterior en SIG, validación de campo o priorización espacial. Se guarda el mapa del mejor modelo local y el ensamble ponderado por desempeño, que suele ser una alternativa más estable cuando varios algoritmos entregan señales complementarias.

$selected_model_local
[1] "RF"

$models_local
[1] "GLM"    "RF"     "MaxEnt" "SVM"    "GAM"    "BRT"   

$selected_bioclim_level1
 [1] "bio3"      "bio13"     "elevation" "bio2"      "bio18"     "bio15"    
 [7] "bio8"      "bio7"      "bio17"     "slope_deg"

$selected_predictors_level2
 [1] "bio15"                 "bio3"                  "SAVI"                 
 [4] "NDMI"                  "TRI"                   "NBR2"                 
 [7] "surface_wetness_class" "rios_prox_0_1"         "twi_approx"           
[10] "fog_oasis_class_final" "quebradas_prox_0_1"    "eastness"             
[13] "northness"             "curvature_laplacian"   "bio18"                

$final_selected_model_raster
[1] "output_sdm/rasters/FINAL_level2_selected_model_RF.tif"

$final_weighted_ensemble_raster
[1] "output_sdm/rasters/FINAL_level2_ensemble_weighted_TSS.tif"

$output_directory
[1] "G:\\My Drive\\Programming\\R projects\\ColoColo_SDM\\output_sdm"

9 Referencias operativas

  • Barbosa, A. M. modEvA: paquete para evaluación y análisis de modelos de distribución de especies.
  • Zurell, D. et al. Protocolo ODMAP para reporte de modelos de distribución de especies.
  • Zurell, D. SDM Intro: respuesta parcial, superficies de respuesta e inflated response curves.
  • Zurell, D. EEC-MGC: ensemble species distribution modelling, model averaging, weighted means and committee averaging.
  • Phillips, S. J. et al. MaxEnt para modelamiento de distribución con datos de presencia y background.
  • Elith, J., Leathwick, J. R., & Hastie, T. Boosted regression trees for ecological modelling.
  • Wood, S. N. Generalized additive models: an introduction with R.