## ---- echo=FALSE, include=FALSE----------------------------------------------- library(maptools) ## ---- sdm100a, fig.width=9, fig.height=6-------------------------------------- library(dismo) predictors <- stack(list.files(path=file.path(system.file(package="dismo"), 'ex'), pattern='grd$', full.names=TRUE )) ext <- extent(-90, -32, -33, 23) bradypus <- read.csv(file.path(system.file(package="dismo"), "ex/bradypus.csv"))[,-1] set.seed(0) group <- kfold(bradypus, 5) pres_train <- bradypus[group != 1, ] pres_test <- bradypus[group == 1, ] set.seed(0) backgr <- randomPoints(predictors, 500) set.seed(9) nr <- nrow(backgr) s <- sample(nr, 0.25 * nr) back_train <- backgr[-s, ] back_test <- backgr[s, ] set.seed(10) pred_nf <- dropLayer(predictors, 'biome') backg <- randomPoints(pred_nf, n=1000, ext=ext, extf = 1.25) colnames(backg) = c('lon', 'lat') group <- kfold(backg, 5) backg_train <- backg[group != 1, ] backg_test <- backg[group == 1, ] library(maptools) data(wrld_simpl) ## ---- sdm100b, fig.width=9, fig.height=6-------------------------------------- seamask <- crop(predictors[[1]], ext) distm <- geoDist(pres_train, lonlat=TRUE) ds <- predict(seamask, distm, mask=TRUE) e <- evaluate(distm, p=pres_test, a=backg_test) e ## ---- sdm100c, fig.width=9, fig.height=6-------------------------------------- par(mfrow=c(1,2)) plot(ds, main='Geographic Distance') plot(wrld_simpl, add=TRUE, border='dark grey') tr <- threshold(e, 'spec_sens') plot(ds > tr, main='presence/absence') plot(wrld_simpl, add=TRUE, border='dark grey') points(pres_train, pch='+') points(backg_train, pch='-', cex=0.25) ## ---- sdm102, fig.width=9, fig.height=6--------------------------------------- hull <- convHull(pres_train, lonlat=TRUE) e <- evaluate(hull, p=pres_test, a=backg_test) e h <- predict(seamask, hull, mask=TRUE) plot(h, main='Convex Hull') plot(wrld_simpl, add=TRUE, border='dark grey') points(pres_train, pch='+') points(backg_train, pch='-', cex=0.25) ## ---- sdm104, fig.width=9, fig.height=6--------------------------------------- circ <- circles(pres_train, lonlat=TRUE) pc <- predict(seamask, circ, mask=TRUE) e <- evaluate(circ, p=pres_test, a=backg_test) e par(mfrow=c(1,2)) plot(pc, main='Circles') plot(wrld_simpl, add=TRUE, border='dark grey') tr <- threshold(e, 'spec_sens') plot(pc > tr, main='presence/absence') plot(wrld_simpl, add=TRUE, border='dark grey') points(pres_train, pch='+') points(backg_train, pch='-', cex=0.25) ## ---- sdm106, fig.width=9, fig.height=6--------------------------------------- idwm <- geoIDW(p=pres_train, a=data.frame(back_train)) e <- evaluate(idwm, p=pres_test, a=backg_test) e iw <- predict(seamask, idwm, mask=TRUE) par(mfrow=c(1,2)) plot(iw, main='Inv. Dist. Weighted') plot(wrld_simpl, add=TRUE, border='dark grey') tr <- threshold(e, 'spec_sens') pa <- mask(iw > tr, seamask) plot(pa, main='presence/absence') plot(wrld_simpl, add=TRUE, border='dark grey') points(pres_train, pch='+') points(backg_train, pch='-', cex=0.25) ## ---- sdm108, fig.width=9, fig.height=6--------------------------------------- # take a smallish sample of the background training data va <- data.frame(back_train[sample(nrow(back_train), 100), ]) vorm <- voronoiHull(p=pres_train, a=va) e <- evaluate(vorm, p=pres_test, a=backg_test) e vo <- predict(seamask, vorm, mask=T) plot(vo, main='Voronoi Hull') plot(wrld_simpl, add=TRUE, border='dark grey') points(pres_train, pch='+') points(backg_train, pch='-', cex=0.25)