Qué son los modelos de distribución de especies??

Los modelos de distribución de especies son represetaciones cartográficas de la idoneidad de un espacio para la presencia de una especie en función de las variables empleadas para generar dicha representación (Mateo, Felicisimo, and Munoz 2011).

La idioneidad no es mas que la relación matemática entre la distribucion real y unas varibles independientes que suelen ser topográficas, ambientales y geológicas.

La variable dependiente es dicotómica (presencia/ausencia) y las independientes pueden ser cuantitativas (e.g., temperatura o elevación) o nominales (e.g., litología o uso del suelo).

Pasos para la construcción de los modelos

Pasos para la realización de un modelo de distribución de especies

Pasos para la realización de un modelo de distribución de especies

Los datos conocidos sobre la distribucion de la especies se realacionan con los datos disponibles, si existe la realación se extrapola, comunmente la interperetación es erronea, pues se toma como la probabilidad de la especie en un punto, realmente es la similitud del lugar según las variables utilizadas (ej. condiciónes ambientales)

Iterpretaciónes de los modelos

Variables dependientes

Generalmenete se cuentan con datos de precensia, pocas veces con datos de ausencia y casi nunca cpn datos de abundancias.

Variables Independientes

Son los datos climaticos, son buenos para determinar el patron general de la distribución de una especie a escalas grandes,sin embargo, a una escala mas reducida las causas de distribución puede ser atribuida la distribución de rescursos y a condiciónes microtopográficas en el ambiente; las variabes cambian según el objetivo, en todo caso es recomendable que tengan estas tres condiciónes:

Métodos de modelación

Preparacón de datos

En la mayoría de los casos, tendrá un archivo con datos de localidad de puntos que representan la distribución conocida de una especie.

library(dismo)

file<- paste0(system.file(package = "dismo"), "/ex/bradypus.csv")

datasp<- read_csv(file)

Importante: las coordenadas deben estar en longitud-latitud

# Variable Dependiente
datasp<- datasp %>% dplyr::select(lon, lat)

Datos de distribución de especies del Global Biodiversity Inventory Facility (GBIF)

#datad<- gbif("solanum", "acaule*", geo = TRUE)

#save(datad, file = "datad.Rdata")

load("datad.Rdata")

datad<- datad %>% filter(lat != "NA" & lon != "NA")



library(maptools)
data(wrld_simpl)

plot(wrld_simpl, xlim=c(-80,70), ylim=c(-60,60), axes=TRUE, col="light yellow")
box()
points(datad$lon, datad$lat, col='orange', pch=20, cex=0.75)

Depurar los datos

Tener en cuenta la distribución de especie, en este caso Solanum acaule es una especie que se encuentra en las partes más altas de las montañas de los Andes del sur de Perú, Bolivia y el norte de Argentina.

datap<- datad %>% dplyr::select(c(country, acceptedScientificName, lon, lat))
# Hice el filtro anterior para que no mostrara las columnas completas

coordinates(datap)<- ~lon+lat
raster(datap)
# Este modo se pueden encontrar las anomalias, no encontré en Rmarkdown como hacer para que corriera, se puede copiar en un script para que pueda depurar....
filas<- tibble()
plot(wrld_simpl, xlim=c(-150,150), ylim=c(-80,80), axes=TRUE, col="light yellow")
points(datap$lon, datap$lat, col='orange', pch=20, cex=0.75)
a= row.names(click(datap, n= Inf))
filas<- rbind(filas, a)

load("filas.Rdata")

datad<- datad %>% slice(-as.numeric(c(filas$x)))

Comprobación cruzada

Verificar que los puntos si estan dentro de los poligonos de los paises

coordinates(datad)<- ~lon+lat
crs(datad) <- crs(wrld_simpl)

#class(datad)

ovr<- over(datad, wrld_simpl) # Contiene para cada punto, el registro correspondiente de wrld_simpl

ovr<- ovr$NAME

i<- which(ovr != datad$country)

#r<- raster(datad)

#plot(r)
#click(r)

plot(datad)
plot(wrld_simpl, add=T, border='blue', lwd=2)
points(datad[i, ], col='red', pch=20, cex=2)

#click(r)

Datos Ambientales (variables independientes)

Estas variables generalmenete se presentan en archivos raster, pueden incluir clima, suelo, terreno, vegetación, uso del suelo y otras.

path <- file.path(system.file(package="dismo"), 'ex')
capas <- list.files(path, pattern='grd$', full.names=TRUE )

El $ signo indica que los archivos deben terminar con los caracteres ‘grd’. Al usar full.names=TRUE, se vuelven a ajustar los nombres de ruta completos.

conjunto<- stack(capas) # Unir capas
plot(conjunto)

plot(conjunto, 1)
plot(wrld_simpl, add= TRUE)
points(datasp, col= "red")

Extraer valores

Se extraen los valores de predictoras con las respuesta..

ocurrencia<- extract(conjunto, datasp)

set.seed(0)
i<- randomPoints(conjunto, 500) # Puntos de fondo (ausencia)

ausencia<- extract(conjunto, i)

ocurrencia<- as.tibble(ocurrencia) %>% mutate(ap= 1)
ausencia<- as.tibble(ausencia) %>% mutate(ap= 0)

conjunto<- rbind(ocurrencia, ausencia) %>% mutate(biome= as.factor(biome), 
                                                  ap= as.factor(ap))
library(GGally)
conjunto[, 1:8] %>% ggpairs(., ggplot2::aes(colour= conjunto$ap)) + theme(legend.position = "top")

Ajuste del modelo

El modelo es muy parecido a una formula para r ~ depende del modelo que se vaya a emplear hay unos que emplean datos de ausencia y presencia glm y otros solo de presencia bioclim del paquete dismo, para este caso se utiliza conjunto y presencia data..

conjunto<- conjunto %>% mutate(ap= as.numeric(as.character(ap)))
model<- glm(ap ~ bio16 + bio12+ bio5, data=conjunto)

broom::tidy(model)
## # A tibble: 4 x 5
##   term          estimate std.error statistic p.value
##   <chr>            <dbl>     <dbl>     <dbl>   <dbl>
## 1 (Intercept)  0.0126    0.105         0.121 0.904  
## 2 bio16        0.0000951 0.000112      0.850 0.396  
## 3 bio12        0.000124  0.0000411     3.01  0.00274
## 4 bio5        -0.000285  0.000340     -0.838 0.402
broom::augment(model)
## # A tibble: 616 x 11
##       ap bio16 bio12  bio5 .fitted .se.fit .resid    .hat .sigma .cooksd
##    <dbl> <dbl> <dbl> <dbl>   <dbl>   <dbl>  <dbl>   <dbl>  <dbl>   <dbl>
##  1     1   724  1639   338   0.188  0.0179  0.812 0.00256  0.353 0.00338
##  2     1   724  1639   338   0.188  0.0179  0.812 0.00256  0.353 0.00338
##  3     1  1547  3624   329   0.514  0.0367  0.486 0.0107   0.354 0.00517
##  4     1   775  1693   318   0.205  0.0178  0.795 0.00252  0.353 0.00319
##  5     1   775  1693   318   0.205  0.0178  0.795 0.00252  0.353 0.00319
##  6     1  1081  2501   326   0.332  0.0226  0.668 0.00408  0.353 0.00366
##  7     1   516  1214   317   0.121  0.0156  0.879 0.00194  0.352 0.00300
##  8     1   956  2259   335   0.287  0.0196  0.713 0.00307  0.353 0.00313
##  9     1   807  2212   327   0.270  0.0184  0.730 0.00271  0.353 0.00290
## 10     1   877  2233   329   0.278  0.0173  0.722 0.00240  0.353 0.00251
## # … with 606 more rows, and 1 more variable: .std.resid <dbl>
modelb<- bioclim(ocurrencia[,c("bio16", "bio12", "bio5")])

pairs(modelb)

ggpairs(ocurrencia[,c("bio16", "bio12", "bio5")])

Prediccón del modelo

conjunto

names(conjunto)

i<- predict(conjunto, model)

plot(i)

Mateo, Ruben G, Angel M Felicisimo, and Jesus Munoz. 2011. “Species Distributions Models: A Synthetic Revision.” Revista Chilena de Historia Natural 84 (2): 217–40.