# ----------------- to be used to prepare summary table for publication ----------- # --------- load libraries to be used ----------------------------------- libs <- c('tidyverse','lubridate','purrr','here','SSDM','raster','parallel', 'rworldmap','rworldxtra','sf','raster'); lapply(libs, library,character.only=TRUE) # ------- search and saved SSDM object for each species ------------------ list_no_thin <- list.files('analysis/out_ssdm_no_thin/',pattern = '.RData') list_thin <- list.files('analysis/out_ssdm_thin/',pattern = '.RData') # ------- prepare list of species and season ------------------------------ species_season_no_thin <- str_remove_all(list_no_thin,pattern = '.RData') species_season_thin <-str_remove_all(list_thin,pattern = '.RData') # ------ load actual objects ---------------------------------------------- mod_obj_no_thin <-sapply(here::here('analysis/out_ssdm_no_thin',list_no_thin), function(x) mget(load(x)),simplify = TRUE) mod_obj_thin <- sapply(here::here('analysis/out_ssdm_thin',list_thin), function(x) mget(load(x)),simplify = TRUE) names(mod_obj_no_thin) = species_season_no_thin names(mod_obj_thin) = species_season_thin # --------- list of models considered ------------------------------------- models_sel <- c('CTA', 'SVM','GLM','MARS','GBM','RF','ANN') # --------------------- get source file for data processing -------------- source('R/000_custom_utility_functions.R') # ---------- get occurrence and background data --------------------------- system.time(all_occ_bkgnd_thin <- purrr::map(mod_obj_thin,.f = function(x = .x) get_occ_background(model_object = x))) system.time(all_occ_bkgnd_noThin <- purrr::map(mod_obj_no_thin,.f = function(x = .x) get_occ_background(model_object = x))) # ------ select part of the data to be used for visualization ------------- tmp_sel_fun = function(dat){ lapply(X = dat, function(x = X) { if(nrow(x)==0){ x } else{ x%>%dplyr::rename(lon = X, lat =Y,reps = model_index)%>% dplyr::select(c(reps,lon,lat,Presence,train))%>%as_tibble() }}) } # --- subset the occurrence data ----------------------------------------- sub_occ_thin <- purrr::map(.x = all_occ_bkgnd_thin, .f = ~tmp_sel_fun(dat = .x)%>%purrr::map_df(.f = rbind,.id = 'Model')) sub_occ_noThin <- purrr::map(.x = all_occ_bkgnd_noThin, .f = ~tmp_sel_fun(dat = .x)%>%purrr::map_df(.f = rbind,.id = 'Model')) # ------ process background and occurrence data --------------------------- occAbs_noThin = tibble(species_season = species_season_no_thin, occBkg = sub_occ_noThin) occAbs_thin = tibble(species_season = species_season_thin, occBkg = sub_occ_thin) # ------------ process species and season label --------------------------- occAbs_thin <- occAbs_thin%>% mutate(species_season = species_season%>%str_remove_all(pattern = ".Ensemble.SDM"))%>% separate(col = species_season,into = c('species','season'),sep = '_',remove = FALSE) occAbs_noThin <- occAbs_noThin%>% mutate(species_season = species_season%>%str_remove_all(pattern = ".Ensemble.SDM"))%>% separate(col = species_season,into = c('species','season'),sep = '_',remove = FALSE) # ------ prepare tables of occurrence and background data ---------------- occAbs_thin_df = occAbs_thin%>%unnest(cols = occBkg) occAbs_no_thin_df = occAbs_noThin%>%unnest(cols = occBkg) # ------------- get summary tables ---------------------------------------- summ_occBkgd_thin = occAbs_thin_df%>% group_by(species,season,Model,reps)%>% summarise(Occurrence = sum(Presence==1,na.rm = TRUE), Background = sum(Presence==0,na.rm = TRUE))%>% ungroup() summ_occBkgd_noThin = occAbs_no_thin_df%>% group_by(species,season,Model,reps)%>% summarise(Occurrence = sum(Presence==1,na.rm = TRUE), Background = sum(Presence==0,na.rm = TRUE))%>% ungroup() # -------- combined tables (thinned-unthinned data) ---------------------- comb_sum_table = summ_occBkgd_noThin%>%filter(reps == 1)%>% left_join(summ_occBkgd_thin%>%filter(reps ==1)%>% dplyr::rename(Occurrence_thin = Occurrence,Background_thin = Background))%>% dplyr::select(-reps) # ------- write model table to file ------------------------------------- write_csv(x = comb_sum_table,path = 'analysis/occ-background_table.csv')