Comparación de técnicas para la obtención de modelos de distribución de especies con R VII...

Post on 25-Jan-2016

217 views 0 download

Transcript of Comparación de técnicas para la obtención de modelos de distribución de especies con R VII...

 

Comparación de técnicas para la obtención de modelos de distribución de especies con RVII JORNADAS DE USUARIOS DE R

SALAMANCA 2015

Jennifer Morales Barbero*Dolores Ferrer Castán

Comparación de técnicas para la obtención de modelos de distribución de especies con RVII JORNADAS DE USUARIOS DE R

SALAMANCA 2015

Jennifer Morales Barbero*Dolores Ferrer Castán

Introducción

Hutchinson (1957) definía el nicho ecológico de una especie como un hipervolumen de n-dimensiones en el que se dan las condiciones ambientales necesarias para que la especie puede sobrevivir.

Áreas con una combinación similar de valores de esas mismas variables permitirían la presencia de la especie, generando su distribución potencial.

Los modelos de distribución de especies son una representación parcial de la realidad que  trata  de  generar mapas  que  representen  la  idoneidad  de  un  espacio  para  una especie.

Nicho potencial Nicho realizado

Introducción

Variable 3

Variable 2

Variable 1

Datos de entrada Modelado de nicho Predicción de la distribución potencial de

la especie

Evaluación del modelo

Esquema Modelado de distribución de especies

Introducción

Asunciones:Las variables ambientales determinan el nicho ecológico.La especie se encuentra en equilibrio o pseudoequilibrio con el ambiente.

Incertidumbres:Calidad de capas y datos disponibles.Exactitud, complejidad y naturaleza del modelo.No consideran interacciones bióticas, barreras geográficas, capacidad de

                  dispersión, etc.

Aplicaciones:Cartografía automática de especies.Análisis de distribución de especies.Localizaciones de poblaciones desconocidas.Predicción de invasiones biológicas.Reconstrucción de distribuciones del pasado.Predicción de efectos del cambio climático.…

Datos de entrada

library(raster)library(maps)library(mapdata)

Importar los datos de las variables predictoras.WorldClim – Global Climate Data http://www.worldclim.org/

Confirmar extensión, resolución, formato y proyección.

bio1<-raster(“C:/.../bio1.asc") # extensión Península Ibérica, formato .asc...predictores <- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)class : RasterStack dimensions : 240, 336, 80640, 7 (nrow, ncol, ncell, nlayers)resolution : 0.04166667, 0.04166667 (x, y)extent : -10, 4, 35, 45 (xmin, xmax, ymin, ymax)coord. ref. : +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs names : bio1, bio5, bio7, bio14, bio15, bio3, bio12 min values : -7, 113, 123, 0, 11, 26, 219 max values : 193, 364, 335, 105, 86, 50, 1757

predictores_6k <- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)predictores_2070<- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)

# extensión Península Ibérica, formato.asc, renombrado a bio1,...

Variables ambientales

Datos de entrada

library(raster)library(maps)library(mapdata)

Environmental data

WorldClim – Global Climate Data http://www.worldclim.org/

bio1<-raster(“C:/.../bio1.asc")  # extension Península IbéricaI, format .asc...predictors <- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)class       : RasterStack dimensions  : 240, 336, 80640, 7  (nrow, ncol, ncell, nlayers)resolution  : 0.04166667, 0.04166667  (x, y)extent      : -10, 4, 35, 45  (xmin, xmax, ymin, ymax)coord. ref. : +proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs names       :    bio1, bio5, bio7, bio14, bio15, bio3, bio12 min values  :   -7,    113,   123,     0,         11,      26,   219 max values  : 193,  364,   335,    105,      86,       50,  1757  

predictors_6k <- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)# extensión PI, format.asc, renombrado a bio1,...

3640

44

bio1

050100150

bio5

150200250300350

bio7

150200250300

3640

44

bio14

020406080100

bio15

20304050607080

bio3

3035404550

-10 -6 -2 2 4

3640

44

bio12

4006008001000120014001600

Variables ambientales

Importar datos de ocurrencia de la especieGlobal Biodiversity Information Facility (http://www.gbif.org)

Limpieza de datosEliminar registros duplicados

sp.occ <-read.csv("C:/…/Sorex_granarius.csv", header=T, sep=",") # formato.csv. 2 columnas (Longitude/Latitude). 2 decimales.coordinates(sp.occ)<-c("longitude","latitude")presclim <- extract(predictores, sp.occ,

method='bilinear', buffer=NULL, fun=NULL, df=TRUE)

#Extraer valores del raster.pres=rep(1, nrow(presclim))presclim = data.frame(presclim, pres)presencias<-cbind(presclim,sp.occ)

Datos de entradaVariable respuesta (Presencias)

Datos de entradaVariable respuesta (“background points”)

https://ecologicaconciencia.wordpress.com/library(dismo) #cf Dolores Ferrer Castán

abs <-read.csv("C:/…/backgroundpoints.csv", header=T) # 500 puntos background, formato .csv; latitud y longitud, redondeado a 2 dígitos; sin duplicados

coordinates(abs)<- c("longitude","latitude")

absclim <- extract(predictores, abs, method='bilinear', buffer=NULL, fun=NULL, df=TRUE) # extraer valores del raster

pres = rep(0, nrow(absclim))absclim = data.frame(absclim, pres)ausencias <- cbind(absclim, background)

presabs <- rbind(presencias, ausencias)presabs = data.frame(presabs)presabs[!duplicated(presabs[,8:9]),] # [,columna longitude:latitude] ID bio1 bio2 bio7 bio12 bio15 pres longitude latitude1 1 85.96 83.48 252.97 706.28 14.49 1 8.02 49.502 2 100.66 88.00 265.91 694.94 18.25 1 8.09 48.993 3 86.74 77.66 233.66 821.35 14.02 1 7.31 50.634 4 93.74 87.31 262.12 713.20 16.31 1 8.00 49.125 5 84.49 87.96 255.04 714.50 15.63 1 7.51 49.396 6 86.78 89.00 257.97 659.96 16.00 1 7.65 49.47

Estudio de correlación entre variablescor.test(variable1, variable2, alternative="two.sided", method="pearson")

Variable respuesta (“background points”)Datos de entrada

Métodos basados en árboles de decisión:

Random Forest (RF; Breiman, 2001).

Selecciona puntos al azar (muestreo con reemplazo) para crear diferentes sets de datos

Al crear los árboles, las variables se eligen  en cada nodo del árbol

Crea un árbol de decisión con cada set de datos, obteniendo diferentes árboles (cada set contiene diferentes puntos y diferentes variables)

Predice los nuevos datos usando el "voto mayoritario", donde clasificará como "positivo" si la mayoría de los árboles predicen la observación como positiva

Datos de presencia y “ausencia”

500 “background points”

500 árboles.

Modelado de nicho

Métodos de regresión:

Modelos Aditivos Generalizados (GAMs; Hastie y Tibshirani, 1990; Yee y Mitchell, 1991)

Modelos Lineales Generalizados (GLM; McCullagh y Nelder, 1989))

Distribución binomial de los errores y vinculación logística.

Selección de variables paso a paso hacia delante

Datos de presencia y “ausencia”.

500 “background points”

Tipos de algoritmo

Modelado de nichoGAMs

Relación entre la presencia de Sorex granarius con las variables ambientales más relevantes. Las líneas de regresión han sido generadas mediante modelos aditivos generalizados (GAMs) del paquete “gam”.

15 20 25 30 35

0.0

0.2

0.4

0.6

0.8

1.0

bio5[ord1]

f[or

d1]

15 20 25 30

0.0

0.2

0.4

0.6

0.8

1.0

bio7[ord1]

f[or

d1]

400 600 800 1200 1600

0.0

0.2

0.4

0.6

0.8

1.0

musaraña$bio12[ord1]

f[or

d1]

0 20 40 60 80

0.0

0.2

0.4

0.6

0.8

1.0

musaraña$bio14[ord1]

f[or

d1]

20 30 40 50 60 70

0.0

0.2

0.4

0.6

0.8

1.0

musaraña$bio15[ord1]

f[or

d1]

BIO1 BIO5 BIO7

BIO12 BIO14 BIO15

5 10 15

0.0

0.2

0.4

0.6

0.8

1.0

bio1[ord1]

f[or

d1]

Probabilidad de ocurrencia de la especie

P < 0,0001P < 0,0001

P < 0,0001P < 0,0001P < 0,0001

P < 0,01

Matriz de confusión Curva ROC (Receiver Operating Characteristic)

AUC (Area under the curve) (0.5-1)[0.5, 0.6): Test malo.[0.6, 0.75): Test regular.[0.75, 0.9): Test bueno.[0.9, 0.97): Test muy bueno.[0.97, 1): Test excelente.

Modelado de nicho

Presencia real Ausencia real

Presencia predicha AVerdadero positivo

BFalso negativoError Comisión(sobrepredicción)

Ausencia predichaC

Falso negativoError Omisión(subpredicción)

DVerdadero negativo

Evaluación

A/(A+C) SENSIBILIDAD (Fracción de verdaderos positivos)C/(A+C) TASA OMISIÓN (Fracción de falsos positivos)D/(D+B) ESPECIFICIDAD (Fracción de verdaderos negativos)

GLMs (paso a paso hacia adelante)

modelo <- glm (pres ~ I(bio14^2)+bio1+I(bio7^2)+I(bio7^3)+bio5+bio15+I(bio15^2)+I(bio15^3), binomial, data=presabs)presencias <-read.table("C:/…/sorex_granarius.txt", header=T, dec=",")# 2 columnas (longitude;latitude)ausencias <-read.table("C:/…/backgroundpoints.txt", header=T, dec=",")coordinates(presencias)<-c(“longitude", “latitude")coordinates(ausencias)<-c(“longitude", “latitude")

e <- evaluate(presencias, ausencias, modelo, predictores)eclass : ModelEvaluation n presences : 172 n absences : 469 AUC : 0.9437571 cor : 0.4896901 max TPR+TNR at : -1.190812plot(e, 'ROC', col='blue', cex=0.1)

Modelado de nicho

0.0 0.2 0.4 0.6 0.8 1.0

0.0

0.2

0.4

0.6

0.8

1.0

AUC= 0.944

False postive rate

Tru

e po

sitiv

e ra

te

Métodos de modelado y Evaluación

Random Forest

library(randomForest)

modelo <- pres ~ bio1 + bio3 + bio5 + bio7 + bio12 + bio14 + bio15 #variables no correlacionadasRF <- randomForest(modelo, data=presabs)

e <- evaluate(presencias, ausencias, RF, predictores)eclass : ModelEvaluation n presences : 172 n absences : 469 AUC : 0.9945331 cor : 0.9196274 max TPR+TNR at : 0.3918667plot(e, 'ROC', col=‘red', cex=0.1)

Modelado de nicho

0.0 0.2 0.4 0.6 0.8 1.0

0.0

0.2

0.4

0.6

0.8

1.0

AUC= 0.995

False postive rate

Tru

e p

ositi

ve r

ate

Métodos de modelado y Evaluación

numerador <- exp(3.432890e+01-(4.965115e-03*bio14*bio14)-(5.533876e-01*bio1)-(1.517093e-03*bio7*bio7)+(2.042169e-06*bio7*bio7*bio7)+(4.720571e-01*bio5)-(2.435548e+00*bio15)+(7.346630e-02*bio15*bio15)-(7.257137e-04*bio15*bio15*bio15))denominador <- 1+numeradorcociente <- numerador/denominadorplot(cociente)

GLMs (paso a paso hacia adelante)

modelo <- glm (pres ~ I(bio14^2)+bio1+I(bio7^2)+I(bio7^3)+bio5+bio15+I(bio15^2)+I(bio15^3), binomial, data=presabs)predictores <- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)summary(modelo)

Coefficients:                      Estimate       Std. Error      z value      Pr(>|z|)    (Intercept) 3.433e+01 1.178e+01 2.914 0.003568 ** I(bio14^2) -4.965e-03 7.089e-04 -7.004 2.49e-12 ***bio1 -5.534e-01 8.140e-02 -6.798 1.06e-11 ***I(bio7^2) -1.517e-03 2.236e-04 -6.784 1.17e-11 ***I(bio7^3) 2.042e-06 3.657e-07 5.585 2.34e-08 ***bio5 4.721e-01 8.952e-02 5.273 1.34e-07 ***bio15 -2.436e+00 7.020e-01 -3.469 0.000522 ***I(bio15^2) 7.347e-02 1.978e-02 3.714 0.000204 ***I(bio15^3) -7.257e-04 1.797e-04 -4.039 5.36e-05 ***---    Null deviance: 745.60  on 640  degrees of freedomResidual deviance: 327.97  on 632  degrees of freedomAIC: 345.97

(745.6-327.97)*100/745.6[1] 56.01261 # %varianza explicado

Modelado de nicho

-10 -8 -6 -4 -2 0 2 4

3638

4042

44

0.0

0.2

0.4

0.6

0.8

Predicción de Modelos

p<-predict(predictores, RF)plot(p)

Random Forest

modelo <- pres ~ bio1 + bio3 + bio5 + bio7 + bio12 + bio14 + bio15predictores <- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)RF <- randomForest(modelo, data=presabs)

Coefficients:(Intercept) bio1 bio5 bio7 bio14 bio15 4.06898 -0.04518 0.03665 -0.02849 -0.01953 -0.00980

Degrees of Freedom: 640 Total (i.e. Null); 635 ResidualNull Deviance: 125.8 Residual Deviance: 80.2 AIC: 500.8

RFCall: randomForest(formula = model, data = presabs) Type of random forest: regression Number of trees: 500No. of variables tried at each split: 2

Mean of squared residuals: 0.06779842 % Var explained: 65.47

Modelado de nicho

-10 -8 -6 -4 -2 0 2 4

3638

4042

44

0.0

0.2

0.4

0.6

0.8

Predicción de Modelos

GLMs (modelo hacia adelante)

modelo <- glm (pres ~ I(bio14^2)+bio1+I(bio7^2)+I(bio7^3)+bio5+bio15+I(bio15^2)+I(bio15^3), binomial, data=presabs)predictores_6k <- stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)summary(modelo)

Coefficients:                      Estimate        Std. Error      z value     Pr(>|z|)    (Intercept) 3.433e+01 1.178e+01 2.914 0.003568 ** I(bio14^2)  -4.965e-03   7.089e-04 -7.004 2.49e-12 ***Bio1 -5.534e-01 8.140e-02 -6.798 1.06e-11 ***I(bio7^2)  -1.517e-03 2.236e-04 -6.784 1.17e-11 ***I(bio7^3)  2.042e-06 3.657e-07 5.585 2.34e-08 ***bio5  4.721e-01 8.952e-02  5.273 1.34e-07 ***bio15 -2.436e+00  7.020e-01 -3.469  0.000522 ***I(bio15^2)  7.347e-02      1.978e-02  3.714     0.000204 ***I(bio15^3)  -7.257e-04     1.797e-04 -4.039    5.36e-05 ***

Modelado de nicho

-10 -8 -6 -4 -2 0 2 4

3638

4042

44

0.0

0.2

0.4

0.6

0.8

Proyección de modelos en espacio y tiempo

#Opción 1: modelo con coeficientes de presente.numerador <- exp(3.432890e+01-(4.965115e-03*bio14*bio14)-(5.533876e-01*bio1)-(1.517093e-03*bio7*bio7)+(2.042169e-06*bio7*bio7*bio7)+(4.720571e-01*bio5)-(2.435548e+00*bio15)+(7.346630e-02*bio15*bio15)-(7.257137e-04*bio15*bio15*bio15))denominador <- 1+numeradorcociente <- numerador/denominadorplot(cociente)

#Opción 2: función predictpred <- predict(predictores_6k, modelo, type="response")plot(pred)

Random Forest

modelo <- pres ~ bio1+bio3+bio5+bio7+bio12+bio14+bio15RF <- randomForest(modelo, data=presabs)predictors_6k <-stack(bio1, bio3, bio5, bio7, bio12, bio14, bio15)

pred <- predict(predictores_6k, RF, type="response")plot(pred)

Modelado de nichoProyección de modelos en espacio y tiempo

-10 -8 -6 -4 -2 0 2 4

3638

4042

44

0.0

0.2

0.4

0.6

0.8

Modelos consenso:models<-(stack(pred1, pred2, predN))plot(mean(models))

Modelado de nichoBinario

e=evaluate(presencias, ausencias, modelo, predictores)pr <-predict(predictores, modelo)tr<-threshold(e, 'spec_sens') # umbral en el cual la suma de sensibibidad y especificidad es mayor.bin<-pr > trplot(bin)

-10 -8 -6 -4 -2 0 2 4

3638

4042

44

0.0

0.2

0.4

0.6

0.8

1.0

-10 -8 -6 -4 -2 0 2 4

3638

4042

44

0.0

0.2

0.4

0.6

0.8

1.0

GLMs(paso a paso hacia delante)

Random Forest

Modelado de nichoResumen Resultados

-10 -8 -6 -4 -2 0 2 4

36

38

40

42

44

0.0

0.2

0.4

0.6

0.8

-10 -8 -6 -4 -2 0 2 4

36

38

40

42

44

0.0

0.2

0.4

0.6

0.8

-10 -8 -6 -4 -2 0 2 4

36

38

40

42

44

0.0

0.2

0.4

0.6

0.8

-10 -8 -6 -4 -2 0 2 4

36

38

40

42

44

0.0

0.2

0.4

0.6

0.8

AUC=0.94356.01 %varianza 

explicado

 AUC=0.99465.47 %varianza 

explicado

GLM

s(p

aso

a pa

so h

acia

ade

lant

e)Ra

ndom

For

est

-10 -8 -6 -4 -2 0 2 4

3638

4042

44

0.0

0.2

0.4

0.6

0.8

-10 -8 -6 -4 -2 0 2 4

36

38

40

42

44

0.0

0.2

0.4

0.6

0.8

Medio Holoceno Presente 2070

¡¡MUCHAS GRACIASpor su atención!!