Descripción y justificación
Este proyecto se enfoca en analizar la distribución espacial y funcional de aves en el cantón de Poás, Costa Rica, utilizando datos de observaciones obtenidos del Global Biodiversity Information Facility (GBIF). A través de técnicas de clustering, el objetivo es agrupar las especies de aves según sus gremios tróficos, es decir, el papel funcional que desempeñan en el ecosistema basado en su dieta y comportamiento alimentario.
La distribución funcional de las especies es clave para la estructura y estabilidad de los ecosistemas. Al estudiar los gremios tróficos de las aves, se puede evaluar cómo se distribuyen las funciones ecológicas en el espacio y si existen áreas de alta concentración de gremios específicos. Además, este enfoque combina técnicas de ciencia de datos con ecología, lo que permite aplicar herramientas modernas a preguntas ecológicas fundamentales.
Antecedentes
En los últimos años, la integración de técnicas de ciencia de datos con estudios ecológicos ha permitido abordar preguntas complejas sobre la biodiversidad y el funcionamiento de los ecosistemas de una forma práctica y accesible. El clustering es una técnica de agrupamiento basada en algoritmos, la cual es una de las herramientas clave para identificar patrones de distribución en especies, como lo demuestra el trabajo de De Adriaenssens et al. (2007), quienes emplearon técnicas de clustering para agrupar especies ecológicas según sus características compartidas. Estos métodos han permitido identificar funciones ecológicas clave y estudiar su distribución espacial, un enfoque alineado con el análisis funcional de gremios tróficos en aves.
Por otro lado, la ciencia de datos ha jugado un rol fundamental en el modelado predictivo de la biodiversidad. Hastie et al. (2009) destacan cómo los modelos predictivos pueden aplicarse al análisis de datos espaciales, como la distribución de especies, utilizando grandes bases de datos. El uso de estos métodos permite evaluar cómo las funciones ecológicas, como los gremios tróficos, se distribuyen en diferentes ecosistemas, y cómo se pueden identificar áreas con alta concentración de ciertos gremios.
Además, la integración de grandes bases de datos de biodiversidad, como el Global Biodiversity Information Facility (GBIF), ha sido potenciada por herramientas de ciencia de datos. Isaac et al. (2020) describen cómo la utilización de bases de datos masivas combinadas con análisis de datos avanzados puede facilitar la comprensión de los patrones espaciales de las especies. Estos enfoques permiten estudiar cómo las aves del cantón de Poás se agrupan funcionalmente en el ecosistema en función de sus gremios tróficos.
Finalmente, la ciencia de datos ha transformado el modelado espacial y temporal de la distribución de especies. Rajamani et al. (2023) aborda cómo las herramientas para el análisis de datos espaciales, como las funciones relacionadas a la librería de GeoPandas y matplotlib, han facilitado la visualización y comprensión de la distribución ecológica en el espacio, un enfoque fundamental en estudios ecologicos, como el presente en el que se busca entender la relación que existe entre la distribucón de gremios tróficos y su organización espacial y cómo estas agrupaciones influyen en la estabilidad y funcionamiento del ecosistema.
Descripción del problema y objetivo
El cantón de Poás ubicado en la provincia de Alajuela en Costa Rica cuenta con gran diversidad de aves, sin embargo, no existen estudios a profundidad de su distribución funcional y espacial en la región. El estudio de las aves según su gremio trófico, es decir, su papel en el ecosistema y sus hábitos alimenticios, es fundamental para evaluar la salud y estabilidad de los ecosistemas locales. No obstante, la falta de información sobre la distribución espacial como funcional genera vacíos de conocimiento sobre la organización de estos gremios enel paisaje y su impoacto en el funcionamiento del ecosistema.
El objetivo del proyecto es analizar la distribución espacial y funcional de las aves en el cantón de Poás utilizando observaciones de la base de datos Global Biodiversity Information Facility (GBIF) mediante en análisis de datos utilizando técnicas de clustering esto para agrupar las especies según sus gremios tróficos y así identificar patrones de distribución funcional y áreas con alta concentración de gremios específicos.
Descripción de los datos
El presente estudio se basa en un conjunto de datos obtenidos de la plataforma Global Biodiversity Information Facility (GBIF), una red internacional dedicada a proporcionar acceso a datos sobre biodiversidad a escala global. Los datos utilizados corresponden a observaciones biológicas de aves realizadas en el cantón de Poás, ubicado en la provincia de Alajuela, Costa Rica.
Las observaciones incluidas en este conjunto de datos abarcan un extenso periodo temporal, desde enero de 2014 hasta abril de 2024 con un total de 34 853 observaciones recopiladas donde se abarcan 21 ordenes taxónomicos dentro de los cuales se identificaron 353 especies diferentes. Cada registro incluye información detallada sobre la taxonomía de la especie, la ubicación geográfica de la observación, así como metadatos adicionales como la fecha y el observador responsable de la recolección de los datos. Para facilitar el análisis espacial y la distribución geográfica de las especies, el área de estudio se dividió en 8 cuadrantes 25 km x 25 km, lo que permitió una caracterización más detallada y organizada de las observaciones en función de su localización.
Procesamiento de datos
Área de estudio
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
poas = gpd.read_file('/content/poas.shp')
cuadricula = gpd.read_file('/content/cuadricula.shp')
fig, ax = plt.subplots(figsize=(10, 10))
poas.plot(ax=ax, color='green', edgecolor='black')
for i in range(1, 9):
cuadricula[cuadricula['id'] == i].plot(ax=ax, color='none', edgecolor='black')
centroid = cuadricula[cuadricula['id'] == i].centroid
plt.text(centroid.x.values[0], centroid.y.values[0], str(i), fontsize=12, ha='center', va='center')
plt.title('Mapa de cantón de Poás con cuadrícula')
plt.xlabel('Longitud')
plt.ylabel('Latitud')
plt.show()
Procesamiento de datos
import pandas as pd
ruta= "/content/BD.xlsx"
df = pd.read_excel(ruta)
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 34852 entries, 0 to 34851 Data columns (total 52 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Cuad 34852 non-null object 1 fid 34852 non-null int64 2 gbifID 34852 non-null int64 3 datasetKey 34852 non-null object 4 occurrenceID 34852 non-null object 5 kingdom 34852 non-null object 6 phylum 34852 non-null object 7 class 34852 non-null object 8 order 34852 non-null object 9 family 34852 non-null object 10 genus 34852 non-null object 11 species 34846 non-null object 12 infraspecificEpithet 15 non-null object 13 taxonRank 34852 non-null object 14 scientificName 34852 non-null object 15 verbatimScientificName 34852 non-null object 16 verbatimScientificNameAuthorship 0 non-null float64 17 countryCode 34852 non-null object 18 locality 34596 non-null object 19 stateProvince 34840 non-null object 20 occurrenceStatus 34852 non-null object 21 individualCount 33002 non-null float64 22 publishingOrgKey 34852 non-null object 23 decimalLatitude 34852 non-null float64 24 decimalLongitude 34852 non-null float64 25 coordinateUncertaintyInMeters 264 non-null float64 26 coordinatePrecision 0 non-null float64 27 elevation 0 non-null float64 28 elevationAccuracy 0 non-null float64 29 depth 0 non-null float64 30 depthAccuracy 0 non-null float64 31 eventDate 34852 non-null datetime64[ns] 32 day 34852 non-null int64 33 month 34852 non-null int64 34 year 34852 non-null int64 35 taxonKey 34852 non-null int64 36 speciesKey 34846 non-null float64 37 basisOfRecord 34852 non-null object 38 institutionCode 34785 non-null object 39 collectionCode 34852 non-null object 40 catalogNumber 34852 non-null object 41 recordNumber 0 non-null float64 42 identifiedBy 252 non-null object 43 dateIdentified 252 non-null datetime64[ns] 44 license 34852 non-null object 45 rightsHolder 323 non-null object 46 recordedBy 34852 non-null object 47 typeStatus 0 non-null float64 48 establishmentMeans 0 non-null float64 49 lastInterpreted 34852 non-null datetime64[ns] 50 mediaType 264 non-null object 51 issue 34852 non-null object dtypes: datetime64[ns](3), float64(14), int64(6), object(29) memory usage: 13.8+ MB
#!pip install ydata-profiling
from ydata_profiling import ProfileReport
nombre = "Aves del Cantón de Poás"
profile = ProfileReport(df, title=nombre, explorative=True)
profile.to_notebook_iframe()
Summarize dataset: 0%| | 0/5 [00:00<?, ?it/s]
Generate report structure: 0%| | 0/1 [00:00<?, ?it/s]
Render HTML: 0%| | 0/1 [00:00<?, ?it/s]