options(java.parameters = "-Xmx50000m") library(rgdal) library(raster) library(dismo) library(rJava) ### MODELLING Syagrus romanzoffiana DISTRIBUTION #### Sciurus aestuans occurence points #### pontos<- read.csv('syagrus_romanzoffiana.csv', h=T) pts.geo<-SpatialPoints(pontos[,1:2]) pts.geo.df<-SpatialPointsDataFrame(pontos[,1:2], as.data.frame(pontos['Especie'])) ##### Before beginning models ans stacks, we excluded those which were correlated #### to avoid colinearity, using a threshold of 0.6. #### After exclusion, we stayed with six: #### climate and biotic predictors bio2<-raster('variaveis_atuais/bio2_var.tif') bio3<-raster('variaveis_atuais/bio3_var.tif') bio8<-raster('variaveis_atuais/bio8_var.tif') bio15<-raster('variaveis_atuais/bio15_var.tif') bio18<-raster('variaveis_atuais/bio18_var.tif') bio19<-raster('variaveis_atuais/bio19_var.tif') #### making a stack with all variables clima <- stack(bio2,bio3,bio8,bio15,bio18,bio19) clima.df <- as.data.frame(clima, xy=T) clima.df<- na.omit(clima.df) gridded(clima.df) <- ~ x+y clima.st<-stack(clima.df) #### Making a raster with all variables clima.mod<-clima.st clim.pts<- extract(clima.mod, pts.geo, cellnumbers=T) syagrus.var<- cbind(pontos[,1:2], clim.pts) ### excluding points in the same pixel # duplicated(syagrus.var[,'cells']) # dup<- which(duplicated(syagrus.var[,'cells']) == TRUE) # syagrus.var <- syagrus.var [-dup,] # syagrus.var.limpo <- na.omit(syagrus.var) write.table(syagrus.var, 'syagrus_clim.txt') ##### making points of background/pseudo-ausence#### syagrus.oc<-read.table('syagrus_clim.txt', h=T) write.table(syagrus.oc, 'syagrus_clim.txt') syagrus.oc<-read.table('syagrus_clim.txt') clima.mod.df<-na.omit(as.data.frame(clima.mod, xy=T)) back.id<-sample(1:nrow(clima.mod.df), nrow(syagrus.oc)) back<-clima.mod.df[back.id,] write.table(back, 'background_syagrus.txt') back<-read.table('background_syagrus.txt') #### cross validation = 10 #### each run is a simulation which will compose the ensemble Sys.setenv(NOAWT=T) library(rJava) ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model1<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict1<-predict(maxent.model1,clima.mod) writeRaster(maxent.predict1,'maxent_atual_syag1.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model2<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict2<-predict(maxent.model2,clima.mod) writeRaster(maxent.predict2,'maxent_atual_syag2.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model3<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict3<-predict(maxent.model3,clima.mod) writeRaster(maxent.predict3,'maxent_atual_syag3.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model4<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict4<-predict(maxent.model4,clima.mod) writeRaster(maxent.predict4,'maxent_atual_syag4.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model5<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict5<-predict(maxent.model5,clima.mod) writeRaster(maxent.predict5,'maxent_atual_syag5.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model6<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict6<-predict(maxent.model6,clima.mod) writeRaster(maxent.predict6,'maxent_atual_syag6.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model7<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict7<-predict(maxent.model7,clima.mod) writeRaster(maxent.predict7,'maxent_atual_syag7.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model8<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict8<-predict(maxent.model8,clima.mod) writeRaster(maxent.predict8,'maxent_atual_syag8.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model9<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict9<-predict(maxent.model9,clima.mod) writeRaster(maxent.predict9,'maxent_atual_syag9.tif') ### Training and test datasets ### sample.ocor <- sample(1:nrow(syagrus.oc), round(0.75*nrow(syagrus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=syagrus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=syagrus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model10<-maxent(teste[,2:7],p=teste[,'pb']) maxent.predict10<-predict(maxent.model10,clima.mod) writeRaster(maxent.predict10,'maxent_atual_syag10.tif') ### Making ensemble of Syagrus romanzoffiana Distribution ens.mean.syagrus<-sum(maxent.predict1,maxent.predict2,maxent.predict3,maxent.predict4,maxent.predict5,maxent.predict6,maxent.predict7,maxent.predict8,maxent.predict9,maxent.predict10) ens.mean.syagrus<-(ens.mean.syagrus/10) writeRaster(ens.mean.syagrus,'syagrus_var.tif') ### MODELLING WITH BIOTIC RESOURCE #### Sciurus aestuans occurence points #### pontos<- read.csv('Sciurus.csv', h=T) pts.geo<-SpatialPoints(pontos[,1:2]) pts.geo.df<-SpatialPointsDataFrame(pontos[,1:2], as.data.frame(pontos['Especie'])) ##### Before beginning models ans stacks, we excluded those which were correlated #### to avoid colinearity, using a threshold of 0.6. #### After exclusion, we stayed with six: #### climate and biotic predictors bio2<-raster('variaveis_atuais/bio2_var.tif') bio3<-raster('variaveis_atuais/bio3_var.tif') bio8<-raster('variaveis_atuais/bio8_var.tif') bio15<-raster('variaveis_atuais/bio15_var.tif') bio18<-raster('variaveis_atuais/bio18_var.tif') bio19<-raster('variaveis_atuais/bio19_var.tif') syagrus<-raster('variaveis_atuais/syagrus_var.tif') #### making a stack with all variables clima <- stack(syagrus,bio2,bio3,bio8,bio15,bio18,bio19) clima.df <- as.data.frame(clima, xy=T) clima.df<- na.omit(clima.df) gridded(clima.df) <- ~ x+y clima.st<-stack(clima.df) #### Making a raster with all variables clima.mod<-clima.st clim.pts<- extract(clima.mod, pts.geo, cellnumbers=T) sciurus.var<- cbind(pontos[,1:2], clim.pts) ### excluding points in the same pixel duplicated(sciurus.var[,'cells']) dup<- which(duplicated(sciurus.var[,'cells']) == TRUE) dup sciurus.var <- sciurus.var [-dup,] dim(sciurus.var) sciurus.var.limpo <- na.omit(sciurus.var) write.table(sciurus.var.limpo, 'sciurus_clim.txt') ##### making points of background/pseudo-ausence#### sciurus.oc<-read.table('sciurus_clim.txt', h=T) write.table(sciurus.oc, 'sciurus_clim_withrec.txt') sciurus.oc<-read.table('sciurus_clim_withrec.txt') clima.mod.df<-na.omit(as.data.frame(clima.mod, xy=T)) back.id<-sample(1:nrow(clima.mod.df), nrow(sciurus.oc)) back<-clima.mod.df[back.id,] write.table(back, 'background_sciurus_comrec.txt') back<-read.table('background_sciurus_comrec.txt') #### cross validation = 10 #### each run is a simulation which will compose the ensemble Sys.setenv(NOAWT=T) library(rJava) sample(1:1000, 20, replace=FALSE) ### Training and test datasets ### set.seed(953) sample.ocor <- sample(1:nrow(sciurus.oc), round(0.75*nrow(sciurus.oc))) sample.back <- sample(1:nrow(back), round(0.75*nrow(back))) treino <- prepareData(x=clima.mod, p=sciurus.oc[sample.ocor,1:2], b=back[sample.back,1:2]) teste<- prepareData (x= clima.mod, p=sciurus.oc[- sample.ocor, 1:2], b=back[-sample.back, 1:2]) #### modelling with maxent #### maxent.model1<-maxent(teste[,2:7],p=teste[,'pb']) maxent.model1@results maxent.predict<-predict(maxent.model1,clima.mod) writeRaster(maxent.predict,'maxent_atual_sci_rec_red1.tif') maxent.eval<-evaluate(p=teste[teste[,'pb']==1,-1], a=teste[teste['pb']==0,-1], model=maxent.model1) maxent.eval maxent.th<-threshold(maxent.eval) maxent.th$spec_sens maxent.th$kappa maxent.th$prevalence maxent.th$sensitivity maxent.pred.bin<-maxent.predict maxent.pred.bin[maxent.pred.bin>=maxent.th$spec_sens]=1 maxent.pred.bin[maxent.pred.bin=maxent.th2$spec_sens]=1 maxent.pred.bin2[maxent.pred.bin2=maxent.th3$spec_sens]=1 maxent.pred.bin3[maxent.pred.bin3=maxent.th4$spec_sens]=1 maxent.pred.bin4[maxent.pred.bin4=maxent.th5$spec_sens]=1 maxent.pred.bin5[maxent.pred.bin5=maxent.th6$spec_sens]=1 maxent.pred.bin6[maxent.pred.bin6=maxent.th7$spec_sens]=1 maxent.pred.bin7[maxent.pred.bin7=maxent.th8$spec_sens]=1 maxent.pred.bin8[maxent.pred.bin8=maxent.th9$spec_sens]=1 maxent.pred.bin9[maxent.pred.bin9=maxent.th10$spec_sens]=1 maxent.pred.bin10[maxent.pred.bin10=maxent.th$spec_sens]=1 maxent.pred.bin[maxent.pred.bin=maxent.th2$spec_sens]=1 maxent.pred.bin2[maxent.pred.bin2=maxent.th3$spec_sens]=1 maxent.pred.bin3[maxent.pred.bin3=maxent.th4$spec_sens]=1 maxent.pred.bin4[maxent.pred.bin4=maxent.th5$spec_sens]=1 maxent.pred.bin5[maxent.pred.bin5=maxent.th6$spec_sens]=1 maxent.pred.bin6[maxent.pred.bin6=maxent.th7$spec_sens]=1 maxent.pred.bin7[maxent.pred.bin7=maxent.th8$spec_sens]=1 maxent.pred.bin8[maxent.pred.bin8=maxent.th9$spec_sens]=1 maxent.pred.bin9[maxent.pred.bin9=maxent.th10$spec_sens]=1 maxent.pred.bin10[maxent.pred.bin10