Skip to contents
variable_selection_Araucaria.knit

This Rmarkdown is part of the following article:

Esser, L.F., Bailly, D., Lima, M.R., Ré, R. 2024. chooseGCM: a toolkit to select General Circulation Models in R. In prep.

Introduction

chooseGCM is a solution for GCMs selection in Climate Change research. We built this Rmarkdown as a way to test the properties of the methods underlying chooseGCM. Results from each function will be presented side by side with changing variables, allowing better comparison. Here, we have already downloaded GCMs data.

This Rmarkdown will apply different algorithms implemented in chooseGCM in different variables sets. The aim is to understand if different variables sets will affect the GCMs subset selected by algorithms. We expect that results will change with varibles sets, since this change will change the very core of the comparison process, which is values presented. To showcase this, we used four sets of bioclimatic variables: (1) Bio1 and Bio12, which are the main temperature and precipitation variables (Annual Mean Temperature and Annual Precipitation, respectively); (2) Temperature variables (Bio1 to Bio11); (3) Precipitation variables (Bio12 to Bio19); and (4) all bioclimatic variables.

# Install and open CRAN libraries
for(x in c("devtools", "geodata", "terra", "tictoc") ){
  if (!require(x, character.only = TRUE)) {
      install.packages(x, dependencies = TRUE)
      library(x, character.only = TRUE)
  }
}

# Install and open chooseGCM
if (!require("chooseGCM", character.only = TRUE)) {
    devtools::install_github("luizesser/chooseGCM")
    library("chooseGCM", character.only = TRUE)
}

# Install and open caretSDM
if (!require("caretSDM", character.only = TRUE)) {
    devtools::install_github("luizesser/caretSDM")
    library("caretSDM", character.only = TRUE)
}

Preparing data

Import study_area

For this demonstration, we will use Araucaria angustifolia, the brazilian pine, as a study case. This flagship species is a key species for the Atlantic Rainforest biodiversity hotspot. Species records were obtained from GBIF and cleaned by excluding records from outside the native region and NAs. This set of records was then used to build a shape of accessible area by merging buffers of 500 km around each record.

occ_data <- geodata::sp_occurrence("Araucaria", "angustifolia")
## 1932 records found
## 0-300-600-900-1200-1500-1800-1932
## 1932 records downloaded
occ_data <- occ_data |>
  dplyr::filter(lon >= -64) |> 
  dplyr::filter(lon <= -33) |> 
  dplyr::filter(lat <= -19.5) |> 
  dplyr::filter(lat >= -33)

study_area <- na.omit(occ_data[,c("lon", "lat")]) |>
  sf::st_as_sf(coords= c(1,2), crs = 4326) |> 
  sf::st_transform(crs=sf::st_crs(6933)) |>
  sf::st_buffer(dist = 500000) |> 
  sf::st_union()

Download GCMs

To obtain GCMs data, we recommend using geodata package, which links directly to the WorldClim 2.1 database. We have previously downloaded GCMs data, but an example code is supplied below.

gcms <- geodata:::.cmods
for (r in c(10)) {
  for ( g in gcms ) {
    geodata::cmip6_world(model = g,
                         ssp = "585",
                         time = "2081-2100",
                         var = "bioc",
                         res = r,
                         path = ""
    )
  }
}

Import GCMs

The function import_gcms helps the user to import data in the correct way, which is a list of GCMs. Each element of the list is a SpatRaster from terra package, containing all variables. The list should be named with GCMs names to better plot results.

tictoc::tic()
s10 <- chooseGCM::import_gcms(path = "~/storage/WC_data/WC_data_all_gcms_10/", 
                              gcm_names = c("ACCESS-CM2","ACCESS-ESM1-5",
                                            "CanESM5-CanOE","CMCC-ESM2",
                                            "CNRM-CM6-1-HR","CNRM-CM6-1",
                                            "CNRM-ESM2-1","EC-Earth3-Veg",
                                            "EC-Earth3-Veg-LR","FIO-ESM-2-0",
                                            "GISS-E2-1-G","GISS-E2-1-H",
                                            "HadGEM3-GC31-LL","INM-CM5-0",
                                            "INM-CM4-8","IPSL-CM6A-LR",
                                            "MIROC-ES2L","MIROC6",
                                            "MPI-ESM1-2-LR","MPI-ESM1-2-HR",
                                            "MRI-ESM2-0","UKESM1-0-LL"))
tictoc::toc()
## 0.165 sec elapsed

Applying algorithms

First we will set a seed to standardize randomic outputs.

set.seed(1)

Now we will perform the Monte Carlo analysis to each type of algorithm and to different sets of variables.

Hierarchical Clustering selection

tictoc::tic("Hierarchical Clustering Main Bioclimatics")
mc_hclust_main <- montecarlo_gcms(s10, 
                             var_names = c("bio1", "bio12"), 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "hclust")
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
mc_hclust_main
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
## [1] "ACCESS-ESM1-5"    "EC-Earth3-Veg-LR"
## 
## $suggested_gcms$k3
## [1] "ACCESS-ESM1-5"    "EC-Earth3-Veg-LR" "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k4
## [1] "ACCESS-ESM1-5"    "CanESM5-CanOE"    "EC-Earth3-Veg-LR" "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k5
## [1] "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"        "EC-Earth3-Veg-LR"
## [5] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k6
## [1] "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"        "EC-Earth3-Veg-LR"
## [5] "MPI-ESM1-2-LR"    "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k7
## [1] "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"        "INM-CM4-8"       
## [5] "EC-Earth3-Veg-LR" "MPI-ESM1-2-LR"    "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k8
## [1] "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"        "INM-CM4-8"       
## [5] "EC-Earth3-Veg-LR" "GISS-E2-1-H"      "MPI-ESM1-2-LR"    "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k9
## [1] "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"        "INM-CM4-8"       
## [5] "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "GISS-E2-1-H"      "MPI-ESM1-2-LR"   
## [9] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k10
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "INM-CM4-8"        "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "GISS-E2-1-H"     
##  [9] "MPI-ESM1-2-LR"    "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k11
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "INM-CM4-8"        "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "GISS-E2-1-H"     
##  [9] "MPI-ESM1-2-LR"    "IPSL-CM6A-LR"     "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k12
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "INM-CM4-8"        "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "GISS-E2-1-H"     
##  [9] "INM-CM5-0"        "IPSL-CM6A-LR"     "MPI-ESM1-2-LR"    "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k13
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "INM-CM4-8"        "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "MRI-ESM2-0"      
##  [9] "GISS-E2-1-H"      "INM-CM5-0"        "IPSL-CM6A-LR"     "MPI-ESM1-2-LR"   
## [13] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k14
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "INM-CM4-8"        "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "MRI-ESM2-0"      
##  [9] "GISS-E2-1-H"      "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [13] "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k15
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "INM-CM4-8"        "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "MRI-ESM2-0"      
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "INM-CM5-0"        "IPSL-CM6A-LR"    
## [13] "MIROC-ES2L"       "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k16
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "MRI-ESM2-0"      
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "INM-CM4-8"        "INM-CM5-0"       
## [13] "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k17
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "MRI-ESM2-0"      
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "INM-CM4-8"        "INM-CM5-0"       
## [13] "IPSL-CM6A-LR"     "MIROC-ES2L"       "MIROC6"           "MPI-ESM1-2-HR"   
## [17] "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k18
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "MRI-ESM2-0"      
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MIROC6"          
## [17] "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k19
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MIROC6"          
## [17] "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k20
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg"    "EC-Earth3-Veg-LR"
##  [9] "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL" 
## [13] "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [17] "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k21
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg"    "EC-Earth3-Veg-LR"
##  [9] "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL" 
## [13] "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [17] "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## [21] "UKESM1-0-LL"
hclust_main <- mc_hclust_main$suggested_gcms$k5
tictoc::toc()
## Hierarchical Clustering Main Bioclimatics: 15.834 sec elapsed
tictoc::tic("Hierarchical Clustering Temperature Variables")
mc_hclust_temp <- montecarlo_gcms(s10, 
                             var_names = c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11"), 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "hclust")
mc_hclust_temp
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
## [1] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
## 
## $suggested_gcms$k3
## [1] "ACCESS-CM2"       "FIO-ESM-2-0"      "EC-Earth3-Veg-LR"
## 
## $suggested_gcms$k4
## [1] "ACCESS-CM2"       "FIO-ESM-2-0"      "EC-Earth3-Veg-LR" "GISS-E2-1-H"     
## 
## $suggested_gcms$k5
## [1] "ACCESS-CM2"       "CMCC-ESM2"        "FIO-ESM-2-0"      "EC-Earth3-Veg-LR"
## [5] "GISS-E2-1-H"     
## 
## $suggested_gcms$k6
## [1] "ACCESS-CM2"       "CMCC-ESM2"        "CNRM-CM6-1"       "EC-Earth3-Veg-LR"
## [5] "FIO-ESM-2-0"      "GISS-E2-1-H"     
## 
## $suggested_gcms$k7
## [1] "ACCESS-CM2"       "CMCC-ESM2"        "CNRM-CM6-1"       "EC-Earth3-Veg-LR"
## [5] "FIO-ESM-2-0"      "GISS-E2-1-H"      "INM-CM4-8"       
## 
## $suggested_gcms$k8
## [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
## [5] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"      "INM-CM4-8"       
## 
## $suggested_gcms$k9
## [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
## [5] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"      "INM-CM4-8"       
## [9] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k10
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"      "INM-CM4-8"       
##  [9] "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k11
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"      "HadGEM3-GC31-LL" 
##  [9] "INM-CM4-8"        "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k12
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"      "HadGEM3-GC31-LL" 
##  [9] "INM-CM4-8"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k13
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"     
##  [9] "HadGEM3-GC31-LL"  "INM-CM4-8"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [13] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k14
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"     
##  [9] "HadGEM3-GC31-LL"  "INM-CM4-8"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [13] "MPI-ESM1-2-HR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k15
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"     
##  [9] "HadGEM3-GC31-LL"  "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [13] "MIROC-ES2L"       "MPI-ESM1-2-HR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k16
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-H"     
##  [9] "HadGEM3-GC31-LL"  "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [13] "MIROC-ES2L"       "MIROC6"           "MPI-ESM1-2-HR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k17
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-G"     
##  [9] "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"        "INM-CM5-0"       
## [13] "IPSL-CM6A-LR"     "MIROC-ES2L"       "MIROC6"           "MPI-ESM1-2-HR"   
## [17] "MRI-ESM2-0"      
## 
## $suggested_gcms$k18
##  [1] "ACCESS-CM2"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
##  [5] "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-G"     
##  [9] "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"        "INM-CM5-0"       
## [13] "IPSL-CM6A-LR"     "MIROC-ES2L"       "MIROC6"           "MPI-ESM1-2-HR"   
## [17] "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k19
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MIROC6"          
## [17] "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k20
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "CNRM-ESM2-1"      "EC-Earth3-Veg-LR"
##  [9] "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL" 
## [13] "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [17] "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k21
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "CNRM-ESM2-1"      "EC-Earth3-Veg"   
##  [9] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"     
## [13] "HadGEM3-GC31-LL"  "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [17] "MIROC-ES2L"       "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## [21] "MRI-ESM2-0"
hclust_temp <- mc_hclust_temp$suggested_gcms$k5
tictoc::toc()
## Hierarchical Clustering Temperature Variables: 24.27 sec elapsed
tictoc::tic("Hierarchical Clustering Precipitation Variables")
mc_hclust_prec <- montecarlo_gcms(s10, 
                             var_names = c("bio12", "bio13", "bio14", "bio15", "bio16", "bio17", "bio18", "bio19"), 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "hclust")
mc_hclust_prec
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
## [1] "GISS-E2-1-G"   "CanESM5-CanOE"
## 
## $suggested_gcms$k3
## [1] "MRI-ESM2-0"    "CanESM5-CanOE" "GISS-E2-1-G"  
## 
## $suggested_gcms$k4
## [1] "MRI-ESM2-0"    "CanESM5-CanOE" "CMCC-ESM2"     "GISS-E2-1-G"  
## 
## $suggested_gcms$k5
## [1] "MRI-ESM2-0"    "CanESM5-CanOE" "CMCC-ESM2"     "CNRM-CM6-1"   
## [5] "GISS-E2-1-G"  
## 
## $suggested_gcms$k6
## [1] "MRI-ESM2-0"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
## [5] "EC-Earth3-Veg-LR" "GISS-E2-1-G"     
## 
## $suggested_gcms$k7
## [1] "MRI-ESM2-0"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
## [5] "EC-Earth3-Veg-LR" "GISS-E2-1-G"      "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k8
## [1] "MRI-ESM2-0"       "CanESM5-CanOE"    "CMCC-ESM2"        "CNRM-CM6-1"      
## [5] "EC-Earth3-Veg-LR" "GISS-E2-1-G"      "INM-CM5-0"        "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k9
## [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
## [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-G"      "INM-CM5-0"       
## [9] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k10
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-G"      "INM-CM5-0"       
##  [9] "MIROC6"           "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k11
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-G"      "INM-CM5-0"       
##  [9] "IPSL-CM6A-LR"     "MIROC6"           "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k12
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-ESM2-1"      "EC-Earth3-Veg-LR" "GISS-E2-1-G"     
##  [9] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC6"           "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k13
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-ESM2-1"      "EC-Earth3-Veg-LR" "GISS-E2-1-G"     
##  [9] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC6"           "MPI-ESM1-2-HR"   
## [13] "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k14
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-ESM2-1"      "EC-Earth3-Veg-LR" "GISS-E2-1-G"     
##  [9] "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC6"          
## [13] "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k15
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-ESM2-1"      "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [13] "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k16
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-ESM2-1"      "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "INM-CM4-8"        "INM-CM5-0"       
## [13] "IPSL-CM6A-LR"     "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k17
##  [1] "MRI-ESM2-0"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-ESM2-1"      "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "UKESM1-0-LL"      "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC6"           "MPI-ESM1-2-HR"   
## [17] "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k18
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-ESM2-1"      "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "UKESM1-0-LL"      "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC6"           "MPI-ESM1-2-HR"   
## [17] "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k19
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "CNRM-ESM2-1"      "EC-Earth3-Veg-LR"
##  [9] "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"      "UKESM1-0-LL"     
## [13] "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC6"          
## [17] "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k20
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "CNRM-ESM2-1"      "EC-Earth3-Veg"   
##  [9] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"     
## [13] "UKESM1-0-LL"      "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [17] "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k21
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "CNRM-ESM2-1"      "EC-Earth3-Veg"   
##  [9] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"     
## [13] "HadGEM3-GC31-LL"  "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [17] "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## [21] "UKESM1-0-LL"
hclust_prec <- mc_hclust_prec$suggested_gcms$k5
tictoc::toc()
## Hierarchical Clustering Precipitation Variables: 17.778 sec elapsed
tictoc::tic("Hierarchical Clustering All Variables")
mc_hclust_all <- montecarlo_gcms(s10, 
                             var_names = "all", 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "hclust")
mc_hclust_all
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
## [1] "FIO-ESM-2-0"      "EC-Earth3-Veg-LR"
## 
## $suggested_gcms$k3
## [1] "FIO-ESM-2-0"      "EC-Earth3-Veg-LR" "CanESM5-CanOE"   
## 
## $suggested_gcms$k4
## [1] "FIO-ESM-2-0"      "EC-Earth3-Veg-LR" "CanESM5-CanOE"    "GISS-E2-1-H"     
## 
## $suggested_gcms$k5
## [1] "FIO-ESM-2-0"      "EC-Earth3-Veg-LR" "CanESM5-CanOE"    "CNRM-CM6-1"      
## [5] "GISS-E2-1-H"     
## 
## $suggested_gcms$k6
## [1] "FIO-ESM-2-0"      "CMCC-ESM2"        "CanESM5-CanOE"    "CNRM-CM6-1"      
## [5] "EC-Earth3-Veg-LR" "GISS-E2-1-H"     
## 
## $suggested_gcms$k7
## [1] "FIO-ESM-2-0"      "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
## [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-H"     
## 
## $suggested_gcms$k8
## [1] "FIO-ESM-2-0"      "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
## [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-H"      "INM-CM4-8"       
## 
## $suggested_gcms$k9
## [1] "FIO-ESM-2-0"      "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
## [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-H"      "INM-CM4-8"       
## [9] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k10
##  [1] "FIO-ESM-2-0"      "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-H"      "INM-CM4-8"       
##  [9] "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k11
##  [1] "FIO-ESM-2-0"      "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "EC-Earth3-Veg-LR" "GISS-E2-1-H"      "INM-CM4-8"       
##  [9] "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k12
##  [1] "FIO-ESM-2-0"      "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "GISS-E2-1-H"     
##  [9] "INM-CM4-8"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k13
##  [1] "ACCESS-CM2"       "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-H"      "INM-CM4-8"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [13] "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k14
##  [1] "ACCESS-CM2"       "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-H"      "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [13] "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k15
##  [1] "ACCESS-CM2"       "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "INM-CM4-8"        "INM-CM5-0"       
## [13] "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## 
## $suggested_gcms$k16
##  [1] "ACCESS-CM2"       "HadGEM3-GC31-LL"  "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "INM-CM4-8"        "INM-CM5-0"       
## [13] "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k17
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## [17] "MPI-ESM1-2-LR"   
## 
## $suggested_gcms$k18
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MPI-ESM1-2-HR"   
## [17] "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k19
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "EC-Earth3-Veg-LR" "FIO-ESM-2-0"     
##  [9] "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL"  "INM-CM4-8"       
## [13] "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"       "MIROC6"          
## [17] "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k20
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "CNRM-ESM2-1"      "EC-Earth3-Veg-LR"
##  [9] "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"      "HadGEM3-GC31-LL" 
## [13] "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"     "MIROC-ES2L"      
## [17] "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"    "MRI-ESM2-0"      
## 
## $suggested_gcms$k21
##  [1] "ACCESS-CM2"       "ACCESS-ESM1-5"    "CanESM5-CanOE"    "CMCC-ESM2"       
##  [5] "CNRM-CM6-1"       "CNRM-CM6-1-HR"    "CNRM-ESM2-1"      "EC-Earth3-Veg"   
##  [9] "EC-Earth3-Veg-LR" "FIO-ESM-2-0"      "GISS-E2-1-G"      "GISS-E2-1-H"     
## [13] "HadGEM3-GC31-LL"  "INM-CM4-8"        "INM-CM5-0"        "IPSL-CM6A-LR"    
## [17] "MIROC-ES2L"       "MIROC6"           "MPI-ESM1-2-HR"    "MPI-ESM1-2-LR"   
## [21] "MRI-ESM2-0"
hclust_all <- mc_hclust_all$suggested_gcms$k5
tictoc::toc()
## Hierarchical Clustering All Variables: 33.543 sec elapsed

Kmeans selection

tictoc::tic("K-means Clustering Main Variables")
mc_kmeans_main <- montecarlo_gcms(s10, 
                             var_names = c("bio1", "bio12"), 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "kmeans")
mc_kmeans_main
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
##               1               2 
##   "CNRM-ESM2-1" "CanESM5-CanOE" 
## 
## $suggested_gcms$k3
##               1               2               3 
##    "MRI-ESM2-0"   "CNRM-ESM2-1" "CanESM5-CanOE" 
## 
## $suggested_gcms$k4
##               1               2               3               4 
## "CanESM5-CanOE"    "MRI-ESM2-0"   "CNRM-ESM2-1" "MPI-ESM1-2-HR" 
## 
## $suggested_gcms$k5
##               1               2               3               4               5 
##   "UKESM1-0-LL" "CanESM5-CanOE"    "MRI-ESM2-0" "MPI-ESM1-2-HR"    "CNRM-CM6-1" 
## 
## $suggested_gcms$k6
##               1               2               3               4               5 
## "MPI-ESM1-2-HR" "CanESM5-CanOE"     "INM-CM4-8"   "UKESM1-0-LL"    "MRI-ESM2-0" 
##               6 
## "EC-Earth3-Veg" 
## 
## $suggested_gcms$k7
##               1               2               3               4               5 
##   "FIO-ESM-2-0" "MPI-ESM1-2-HR"   "UKESM1-0-LL"    "MRI-ESM2-0" "CanESM5-CanOE" 
##               6               7 
##     "INM-CM4-8" "EC-Earth3-Veg" 
## 
## $suggested_gcms$k8
##               1               2               3               4               5 
## "MPI-ESM1-2-HR"    "MIROC-ES2L" "EC-Earth3-Veg"   "GISS-E2-1-G"   "UKESM1-0-LL" 
##               6               7               8 
##     "INM-CM4-8"   "FIO-ESM-2-0" "CanESM5-CanOE" 
## 
## $suggested_gcms$k9
##               1               2               3               4               5 
##    "MIROC-ES2L"   "GISS-E2-1-G"   "FIO-ESM-2-0" "MPI-ESM1-2-HR"   "CNRM-ESM2-1" 
##               6               7               8               9 
##  "IPSL-CM6A-LR"    "CNRM-CM6-1" "CanESM5-CanOE"   "UKESM1-0-LL" 
## 
## $suggested_gcms$k10
##               1               2               3               4               5 
##  "IPSL-CM6A-LR"   "GISS-E2-1-G"    "CNRM-CM6-1"   "FIO-ESM-2-0"   "GISS-E2-1-H" 
##               6               7               8               9              10 
##   "UKESM1-0-LL" "CanESM5-CanOE" "MPI-ESM1-2-HR"    "MIROC-ES2L"   "CNRM-ESM2-1" 
## 
## $suggested_gcms$k11
##               1               2               3               4               5 
##     "CMCC-ESM2"  "IPSL-CM6A-LR"   "CNRM-ESM2-1"   "GISS-E2-1-H" "CanESM5-CanOE" 
##               6               7               8               9              10 
## "MPI-ESM1-2-HR"   "UKESM1-0-LL"    "ACCESS-CM2"    "CNRM-CM6-1"    "MIROC-ES2L" 
##              11 
##   "GISS-E2-1-G" 
## 
## $suggested_gcms$k12
##               1               2               3               4               5 
##   "UKESM1-0-LL"    "CNRM-CM6-1"    "MIROC-ES2L"    "ACCESS-CM2" "EC-Earth3-Veg" 
##               6               7               8               9              10 
##   "GISS-E2-1-G"     "CMCC-ESM2" "CNRM-CM6-1-HR"  "IPSL-CM6A-LR"   "GISS-E2-1-H" 
##              11              12 
## "MPI-ESM1-2-HR" "CanESM5-CanOE" 
## 
## $suggested_gcms$k13
##               1               2               3               4               5 
##    "CNRM-CM6-1" "EC-Earth3-Veg"  "IPSL-CM6A-LR"   "UKESM1-0-LL"   "GISS-E2-1-H" 
##               6               7               8               9              10 
## "CNRM-CM6-1-HR"    "MIROC-ES2L" "MPI-ESM1-2-HR" "CanESM5-CanOE"     "CMCC-ESM2" 
##              11              12              13 
##   "GISS-E2-1-G"    "ACCESS-CM2"     "INM-CM5-0" 
## 
## $suggested_gcms$k14
##               1               2               3               4               5 
## "MPI-ESM1-2-HR" "CNRM-CM6-1-HR"   "GISS-E2-1-G"   "GISS-E2-1-H" "EC-Earth3-Veg" 
##               6               7               8               9              10 
##     "INM-CM5-0" "MPI-ESM1-2-LR" "CanESM5-CanOE"    "MIROC-ES2L"    "CNRM-CM6-1" 
##              11              12              13              14 
##     "CMCC-ESM2"   "UKESM1-0-LL"  "IPSL-CM6A-LR"    "ACCESS-CM2" 
## 
## $suggested_gcms$k15
##               1               2               3               4               5 
## "CanESM5-CanOE"  "IPSL-CM6A-LR"    "ACCESS-CM2"   "UKESM1-0-LL" "CNRM-CM6-1-HR" 
##               6               7               8               9              10 
## "MPI-ESM1-2-LR"     "INM-CM5-0"     "CMCC-ESM2"    "MIROC-ES2L"   "GISS-E2-1-G" 
##              11              12              13              14              15 
##   "GISS-E2-1-H" "EC-Earth3-Veg" "MPI-ESM1-2-HR"    "CNRM-CM6-1"    "MRI-ESM2-0" 
## 
## $suggested_gcms$k16
##               1               2               3               4               5 
##    "CNRM-CM6-1"     "CMCC-ESM2" "CNRM-CM6-1-HR"  "IPSL-CM6A-LR"    "ACCESS-CM2" 
##               6               7               8               9              10 
## "MPI-ESM1-2-HR" "MPI-ESM1-2-LR"    "MIROC-ES2L"    "MRI-ESM2-0"   "GISS-E2-1-H" 
##              11              12              13              14              15 
## "EC-Earth3-Veg"   "UKESM1-0-LL"        "MIROC6"     "INM-CM5-0"   "GISS-E2-1-G" 
##              16 
## "CanESM5-CanOE" 
## 
## $suggested_gcms$k17
##                 1                 2                 3                 4 
##      "CNRM-CM6-1"    "IPSL-CM6A-LR"   "ACCESS-ESM1-5"   "MPI-ESM1-2-LR" 
##                 5                 6                 7                 8 
##   "EC-Earth3-Veg"      "MRI-ESM2-0"       "INM-CM5-0"      "MIROC-ES2L" 
##                 9                10                11                12 
##   "CNRM-CM6-1-HR"     "GISS-E2-1-G"   "MPI-ESM1-2-HR"   "CanESM5-CanOE" 
##                13                14                15                16 
##     "GISS-E2-1-H"          "MIROC6"      "ACCESS-CM2" "HadGEM3-GC31-LL" 
##                17 
##       "CMCC-ESM2" 
## 
## $suggested_gcms$k18
##                 1                 2                 3                 4 
##   "ACCESS-ESM1-5"   "MPI-ESM1-2-LR"      "CNRM-CM6-1"       "CMCC-ESM2" 
##                 5                 6                 7                 8 
##       "INM-CM5-0"      "MRI-ESM2-0"      "MIROC-ES2L"    "IPSL-CM6A-LR" 
##                 9                10                11                12 
##   "EC-Earth3-Veg"       "INM-CM4-8"          "MIROC6"   "CanESM5-CanOE" 
##                13                14                15                16 
##   "CNRM-CM6-1-HR"     "GISS-E2-1-H"     "GISS-E2-1-G"   "MPI-ESM1-2-HR" 
##                17                18 
##      "ACCESS-CM2" "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k19
##                  1                  2                  3                  4 
##        "INM-CM5-0"       "MRI-ESM2-0" "EC-Earth3-Veg-LR"    "EC-Earth3-Veg" 
##                  5                  6                  7                  8 
##    "ACCESS-ESM1-5"       "ACCESS-CM2"      "GISS-E2-1-G"    "MPI-ESM1-2-LR" 
##                  9                 10                 11                 12 
##        "INM-CM4-8"           "MIROC6"  "HadGEM3-GC31-LL"    "MPI-ESM1-2-HR" 
##                 13                 14                 15                 16 
##       "CNRM-CM6-1"        "CMCC-ESM2"    "CanESM5-CanOE"     "IPSL-CM6A-LR" 
##                 17                 18                 19 
##      "GISS-E2-1-H"    "CNRM-CM6-1-HR"       "MIROC-ES2L" 
## 
## $suggested_gcms$k20
##                  1                  2                  3                  4 
##    "MPI-ESM1-2-HR"        "INM-CM5-0"       "MIROC-ES2L"     "IPSL-CM6A-LR" 
##                  5                  6                  7                  8 
##    "EC-Earth3-Veg"      "GISS-E2-1-H"      "FIO-ESM-2-0"  "HadGEM3-GC31-LL" 
##                  9                 10                 11                 12 
##        "CMCC-ESM2"           "MIROC6"    "CanESM5-CanOE"    "ACCESS-ESM1-5" 
##                 13                 14                 15                 16 
##       "CNRM-CM6-1"    "CNRM-CM6-1-HR"        "INM-CM4-8"    "MPI-ESM1-2-LR" 
##                 17                 18                 19                 20 
##      "GISS-E2-1-G"       "ACCESS-CM2" "EC-Earth3-Veg-LR"       "MRI-ESM2-0" 
## 
## $suggested_gcms$k21
##                  1                  2                  3                  4 
##        "CMCC-ESM2"      "CNRM-ESM2-1"       "CNRM-CM6-1"        "INM-CM5-0" 
##                  5                  6                  7                  8 
##       "MRI-ESM2-0"    "MPI-ESM1-2-LR"    "CanESM5-CanOE"    "EC-Earth3-Veg" 
##                  9                 10                 11                 12 
##       "MIROC-ES2L"    "ACCESS-ESM1-5"           "MIROC6"      "FIO-ESM-2-0" 
##                 13                 14                 15                 16 
##    "CNRM-CM6-1-HR"       "ACCESS-CM2"  "HadGEM3-GC31-LL"      "GISS-E2-1-H" 
##                 17                 18                 19                 20 
##    "MPI-ESM1-2-HR"      "GISS-E2-1-G"        "INM-CM4-8" "EC-Earth3-Veg-LR" 
##                 21 
##     "IPSL-CM6A-LR"
kmeans_main <- mc_kmeans_main$suggested_gcms$k5
tictoc::toc()
## K-means Clustering Main Variables: 23.375 sec elapsed
tictoc::tic("K-means Clustering Temperature Variables")
mc_kmeans_temp <- montecarlo_gcms(s10, 
                             var_names = c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11"), 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "kmeans")
mc_kmeans_temp
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
##             1             2 
## "CNRM-ESM2-1" "UKESM1-0-LL" 
## 
## $suggested_gcms$k3
##                  1                  2                  3 
##      "CNRM-ESM2-1" "EC-Earth3-Veg-LR"      "UKESM1-0-LL" 
## 
## $suggested_gcms$k4
##               1               2               3               4 
## "CanESM5-CanOE"   "CNRM-ESM2-1" "EC-Earth3-Veg"   "UKESM1-0-LL" 
## 
## $suggested_gcms$k5
##               1               2               3               4               5 
## "CanESM5-CanOE"   "CNRM-ESM2-1" "EC-Earth3-Veg"   "UKESM1-0-LL"   "GISS-E2-1-G" 
## 
## $suggested_gcms$k6
##               1               2               3               4               5 
##   "GISS-E2-1-G" "CNRM-CM6-1-HR" "MPI-ESM1-2-LR" "EC-Earth3-Veg" "CanESM5-CanOE" 
##               6 
##   "UKESM1-0-LL" 
## 
## $suggested_gcms$k7
##                 1                 2                 3                 4 
##     "GISS-E2-1-G"       "CMCC-ESM2"     "CNRM-ESM2-1" "HadGEM3-GC31-LL" 
##                 5                 6                 7 
##   "EC-Earth3-Veg"   "MPI-ESM1-2-LR"   "CanESM5-CanOE" 
## 
## $suggested_gcms$k8
##                 1                 2                 3                 4 
## "HadGEM3-GC31-LL"   "MPI-ESM1-2-LR"     "GISS-E2-1-G"       "CMCC-ESM2" 
##                 5                 6                 7                 8 
##   "CanESM5-CanOE"   "EC-Earth3-Veg"      "ACCESS-CM2"       "INM-CM4-8" 
## 
## $suggested_gcms$k9
##                 1                 2                 3                 4 
##       "CMCC-ESM2"   "EC-Earth3-Veg"   "CanESM5-CanOE"   "MPI-ESM1-2-HR" 
##                 5                 6                 7                 8 
##      "ACCESS-CM2"      "MIROC-ES2L"     "GISS-E2-1-G" "HadGEM3-GC31-LL" 
##                 9 
##     "CNRM-ESM2-1" 
## 
## $suggested_gcms$k10
##                 1                 2                 3                 4 
## "HadGEM3-GC31-LL"   "EC-Earth3-Veg"      "ACCESS-CM2"   "MPI-ESM1-2-HR" 
##                 5                 6                 7                 8 
##   "CanESM5-CanOE"      "CNRM-CM6-1"       "CMCC-ESM2"      "MIROC-ES2L" 
##                 9                10 
##     "GISS-E2-1-G"   "CNRM-CM6-1-HR" 
## 
## $suggested_gcms$k11
##                 1                 2                 3                 4 
##   "CNRM-CM6-1-HR" "HadGEM3-GC31-LL"          "MIROC6"   "MPI-ESM1-2-HR" 
##                 5                 6                 7                 8 
##   "CanESM5-CanOE"      "MIROC-ES2L"      "CNRM-CM6-1"      "ACCESS-CM2" 
##                 9                10                11 
##       "CMCC-ESM2"   "EC-Earth3-Veg"     "GISS-E2-1-G" 
## 
## $suggested_gcms$k12
##                 1                 2                 3                 4 
##   "CanESM5-CanOE"     "GISS-E2-1-G"   "EC-Earth3-Veg" "HadGEM3-GC31-LL" 
##                 5                 6                 7                 8 
##      "ACCESS-CM2"   "MPI-ESM1-2-HR"   "CNRM-CM6-1-HR"          "MIROC6" 
##                 9                10                11                12 
##       "CMCC-ESM2"      "MIROC-ES2L"      "CNRM-CM6-1"    "IPSL-CM6A-LR" 
## 
## $suggested_gcms$k13
##                 1                 2                 3                 4 
##       "CMCC-ESM2"   "CanESM5-CanOE"          "MIROC6"     "GISS-E2-1-G" 
##                 5                 6                 7                 8 
##   "EC-Earth3-Veg"   "MPI-ESM1-2-LR"   "MPI-ESM1-2-HR"      "CNRM-CM6-1" 
##                 9                10                11                12 
##      "ACCESS-CM2"    "IPSL-CM6A-LR"   "CNRM-CM6-1-HR" "HadGEM3-GC31-LL" 
##                13 
##       "INM-CM4-8" 
## 
## $suggested_gcms$k14
##                 1                 2                 3                 4 
##   "CNRM-CM6-1-HR" "HadGEM3-GC31-LL"      "CNRM-CM6-1"   "EC-Earth3-Veg" 
##                 5                 6                 7                 8 
##     "FIO-ESM-2-0"      "ACCESS-CM2"   "MPI-ESM1-2-LR"       "CMCC-ESM2" 
##                 9                10                11                12 
##   "MPI-ESM1-2-HR"          "MIROC6"       "INM-CM4-8"    "IPSL-CM6A-LR" 
##                13                14 
##   "CanESM5-CanOE"     "GISS-E2-1-G" 
## 
## $suggested_gcms$k15
##                 1                 2                 3                 4 
##   "MPI-ESM1-2-LR"   "CanESM5-CanOE"    "IPSL-CM6A-LR"     "GISS-E2-1-G" 
##                 5                 6                 7                 8 
## "HadGEM3-GC31-LL"   "EC-Earth3-Veg"          "MIROC6"   "MPI-ESM1-2-HR" 
##                 9                10                11                12 
##       "INM-CM4-8"     "FIO-ESM-2-0"       "CMCC-ESM2"   "CNRM-CM6-1-HR" 
##                13                14                15 
##      "ACCESS-CM2"      "CNRM-CM6-1"       "INM-CM5-0" 
## 
## $suggested_gcms$k16
##                 1                 2                 3                 4 
##       "CMCC-ESM2"          "MIROC6"   "CNRM-CM6-1-HR"   "CanESM5-CanOE" 
##                 5                 6                 7                 8 
##      "MRI-ESM2-0"    "IPSL-CM6A-LR" "HadGEM3-GC31-LL"     "FIO-ESM-2-0" 
##                 9                10                11                12 
##      "CNRM-CM6-1"       "INM-CM4-8"       "INM-CM5-0"   "MPI-ESM1-2-LR" 
##                13                14                15                16 
##   "MPI-ESM1-2-HR"   "EC-Earth3-Veg"      "ACCESS-CM2"     "GISS-E2-1-G" 
## 
## $suggested_gcms$k17
##                 1                 2                 3                 4 
##      "CNRM-CM6-1"   "EC-Earth3-Veg"      "MRI-ESM2-0"   "MPI-ESM1-2-LR" 
##                 5                 6                 7                 8 
##      "MIROC-ES2L"    "IPSL-CM6A-LR"     "GISS-E2-1-G"     "FIO-ESM-2-0" 
##                 9                10                11                12 
##   "MPI-ESM1-2-HR"       "CMCC-ESM2" "HadGEM3-GC31-LL"       "INM-CM4-8" 
##                13                14                15                16 
##   "CNRM-CM6-1-HR"       "INM-CM5-0"          "MIROC6"   "CanESM5-CanOE" 
##                17 
##      "ACCESS-CM2" 
## 
## $suggested_gcms$k18
##                 1                 2                 3                 4 
##      "MIROC-ES2L"     "FIO-ESM-2-0"       "INM-CM4-8"    "IPSL-CM6A-LR" 
##                 5                 6                 7                 8 
##          "MIROC6"      "MRI-ESM2-0"   "MPI-ESM1-2-LR"     "GISS-E2-1-H" 
##                 9                10                11                12 
##      "ACCESS-CM2"       "CMCC-ESM2"   "CanESM5-CanOE"   "MPI-ESM1-2-HR" 
##                13                14                15                16 
##     "GISS-E2-1-G" "HadGEM3-GC31-LL"      "CNRM-CM6-1"       "INM-CM5-0" 
##                17                18 
##   "CNRM-CM6-1-HR"   "EC-Earth3-Veg" 
## 
## $suggested_gcms$k19
##                 1                 2                 3                 4 
##   "CanESM5-CanOE" "HadGEM3-GC31-LL"          "MIROC6"      "MRI-ESM2-0" 
##                 5                 6                 7                 8 
##     "GISS-E2-1-H"   "EC-Earth3-Veg"   "MPI-ESM1-2-LR"       "INM-CM4-8" 
##                 9                10                11                12 
##   "MPI-ESM1-2-HR"     "GISS-E2-1-G"      "ACCESS-CM2"   "ACCESS-ESM1-5" 
##                13                14                15                16 
##       "CMCC-ESM2"      "MIROC-ES2L"   "CNRM-CM6-1-HR"       "INM-CM5-0" 
##                17                18                19 
##    "IPSL-CM6A-LR"     "FIO-ESM-2-0"      "CNRM-CM6-1" 
## 
## $suggested_gcms$k20
##                 1                 2                 3                 4 
##   "MPI-ESM1-2-HR"   "CNRM-CM6-1-HR"   "ACCESS-ESM1-5"       "INM-CM4-8" 
##                 5                 6                 7                 8 
## "HadGEM3-GC31-LL"      "MRI-ESM2-0"       "INM-CM5-0"       "CMCC-ESM2" 
##                 9                10                11                12 
##     "CNRM-ESM2-1"      "ACCESS-CM2"          "MIROC6"     "GISS-E2-1-H" 
##                13                14                15                16 
##      "MIROC-ES2L"   "MPI-ESM1-2-LR"   "CanESM5-CanOE"    "IPSL-CM6A-LR" 
##                17                18                19                20 
##     "GISS-E2-1-G"      "CNRM-CM6-1"     "FIO-ESM-2-0"   "EC-Earth3-Veg" 
## 
## $suggested_gcms$k21
##                 1                 2                 3                 4 
##   "ACCESS-ESM1-5"      "CNRM-CM6-1"   "MPI-ESM1-2-HR"   "CanESM5-CanOE" 
##                 5                 6                 7                 8 
##       "INM-CM5-0"      "ACCESS-CM2"      "MRI-ESM2-0"      "MIROC-ES2L" 
##                 9                10                11                12 
##     "CNRM-ESM2-1"     "GISS-E2-1-G"          "MIROC6"   "CNRM-CM6-1-HR" 
##                13                14                15                16 
##     "FIO-ESM-2-0"   "MPI-ESM1-2-LR" "HadGEM3-GC31-LL"    "IPSL-CM6A-LR" 
##                17                18                19                20 
##   "EC-Earth3-Veg"     "UKESM1-0-LL"       "CMCC-ESM2"     "GISS-E2-1-H" 
##                21 
##       "INM-CM4-8"
kmeans_temp <- mc_kmeans_temp$suggested_gcms$k5
tictoc::toc()
## K-means Clustering Temperature Variables: 31.99 sec elapsed
tictoc::tic("K-means Clustering Precipitation Variables")
mc_kmeans_prec <- montecarlo_gcms(s10, 
                             var_names = c("bio12", "bio13", "bio14", "bio15", "bio16", "bio17", "bio18", "bio19"), 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "kmeans")
mc_kmeans_prec
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
##                 1                 2 
##   "CanESM5-CanOE" "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k3
##               1               2               3 
##        "MIROC6" "CanESM5-CanOE"   "UKESM1-0-LL" 
## 
## $suggested_gcms$k4
##                 1                 2                 3                 4 
## "HadGEM3-GC31-LL"     "GISS-E2-1-G"   "EC-Earth3-Veg"   "CanESM5-CanOE" 
## 
## $suggested_gcms$k5
##                  1                  2                  3                  4 
##      "CNRM-ESM2-1"           "MIROC6"      "GISS-E2-1-G"    "CanESM5-CanOE" 
##                  5 
## "EC-Earth3-Veg-LR" 
## 
## $suggested_gcms$k6
##                  1                  2                  3                  4 
## "EC-Earth3-Veg-LR"      "CNRM-ESM2-1"    "CanESM5-CanOE"      "GISS-E2-1-G" 
##                  5                  6 
##           "MIROC6"  "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k7
##                  1                  2                  3                  4 
##    "CanESM5-CanOE"      "CNRM-ESM2-1"    "MPI-ESM1-2-HR"           "MIROC6" 
##                  5                  6                  7 
## "EC-Earth3-Veg-LR"  "HadGEM3-GC31-LL"      "GISS-E2-1-G" 
## 
## $suggested_gcms$k8
##                 1                 2                 3                 4 
##       "CMCC-ESM2"     "CNRM-ESM2-1"   "EC-Earth3-Veg"     "GISS-E2-1-G" 
##                 5                 6                 7                 8 
##   "CanESM5-CanOE"          "MIROC6"   "MPI-ESM1-2-HR" "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k9
##                 1                 2                 3                 4 
##       "CMCC-ESM2"   "MPI-ESM1-2-HR"     "GISS-E2-1-G"          "MIROC6" 
##                 5                 6                 7                 8 
##     "FIO-ESM-2-0"     "CNRM-ESM2-1"   "EC-Earth3-Veg" "HadGEM3-GC31-LL" 
##                 9 
##   "CanESM5-CanOE" 
## 
## $suggested_gcms$k10
##                 1                 2                 3                 4 
##     "GISS-E2-1-G"       "INM-CM4-8"   "MPI-ESM1-2-HR"   "EC-Earth3-Veg" 
##                 5                 6                 7                 8 
##       "CMCC-ESM2"     "FIO-ESM-2-0"     "CNRM-ESM2-1"   "CanESM5-CanOE" 
##                 9                10 
## "HadGEM3-GC31-LL"      "MIROC-ES2L" 
## 
## $suggested_gcms$k11
##                 1                 2                 3                 4 
##      "MIROC-ES2L"     "GISS-E2-1-G"   "CanESM5-CanOE"   "EC-Earth3-Veg" 
##                 5                 6                 7                 8 
##      "CNRM-CM6-1"     "FIO-ESM-2-0"       "CMCC-ESM2"   "MPI-ESM1-2-HR" 
##                 9                10                11 
## "HadGEM3-GC31-LL"       "INM-CM4-8"   "CNRM-CM6-1-HR" 
## 
## $suggested_gcms$k12
##                 1                 2                 3                 4 
##       "CMCC-ESM2"      "MIROC-ES2L"   "CNRM-CM6-1-HR"     "GISS-E2-1-G" 
##                 5                 6                 7                 8 
##       "INM-CM4-8" "HadGEM3-GC31-LL"   "MPI-ESM1-2-HR"     "FIO-ESM-2-0" 
##                 9                10                11                12 
##   "EC-Earth3-Veg"      "CNRM-CM6-1"   "CanESM5-CanOE"    "IPSL-CM6A-LR" 
## 
## $suggested_gcms$k13
##                 1                 2                 3                 4 
##      "ACCESS-CM2"       "CMCC-ESM2"   "CNRM-CM6-1-HR" "HadGEM3-GC31-LL" 
##                 5                 6                 7                 8 
##   "MPI-ESM1-2-HR"      "MIROC-ES2L"    "IPSL-CM6A-LR"   "CanESM5-CanOE" 
##                 9                10                11                12 
##   "EC-Earth3-Veg"       "INM-CM4-8"      "CNRM-CM6-1"     "GISS-E2-1-G" 
##                13 
##     "FIO-ESM-2-0" 
## 
## $suggested_gcms$k14
##                 1                 2                 3                 4 
##      "ACCESS-CM2" "HadGEM3-GC31-LL"     "GISS-E2-1-G"   "CNRM-CM6-1-HR" 
##                 5                 6                 7                 8 
##   "MPI-ESM1-2-HR"   "CanESM5-CanOE"       "CMCC-ESM2"       "INM-CM4-8" 
##                 9                10                11                12 
##      "MIROC-ES2L"    "IPSL-CM6A-LR"     "GISS-E2-1-H"   "EC-Earth3-Veg" 
##                13                14 
##     "FIO-ESM-2-0"      "CNRM-CM6-1" 
## 
## $suggested_gcms$k15
##                 1                 2                 3                 4 
##     "GISS-E2-1-G"   "MPI-ESM1-2-HR"      "CNRM-CM6-1"     "GISS-E2-1-H" 
##                 5                 6                 7                 8 
##       "INM-CM5-0"   "CNRM-CM6-1-HR"     "FIO-ESM-2-0"   "EC-Earth3-Veg" 
##                 9                10                11                12 
##      "ACCESS-CM2"   "CanESM5-CanOE"    "IPSL-CM6A-LR"       "CMCC-ESM2" 
##                13                14                15 
##       "INM-CM4-8"      "MIROC-ES2L" "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k16
##                 1                 2                 3                 4 
##   "MPI-ESM1-2-HR"   "CanESM5-CanOE"      "ACCESS-CM2"     "GISS-E2-1-H" 
##                 5                 6                 7                 8 
##   "MPI-ESM1-2-LR"     "GISS-E2-1-G"       "CMCC-ESM2"      "CNRM-CM6-1" 
##                 9                10                11                12 
##       "INM-CM4-8"   "EC-Earth3-Veg" "HadGEM3-GC31-LL"      "MIROC-ES2L" 
##                13                14                15                16 
##     "FIO-ESM-2-0"    "IPSL-CM6A-LR"       "INM-CM5-0"   "CNRM-CM6-1-HR" 
## 
## $suggested_gcms$k17
##                 1                 2                 3                 4 
##      "MRI-ESM2-0"    "IPSL-CM6A-LR"   "EC-Earth3-Veg"       "CMCC-ESM2" 
##                 5                 6                 7                 8 
##      "MIROC-ES2L"     "GISS-E2-1-H"   "MPI-ESM1-2-HR"   "CNRM-CM6-1-HR" 
##                 9                10                11                12 
##   "CanESM5-CanOE"     "FIO-ESM-2-0"     "GISS-E2-1-G"   "MPI-ESM1-2-LR" 
##                13                14                15                16 
##      "ACCESS-CM2"       "INM-CM4-8"      "CNRM-CM6-1"       "INM-CM5-0" 
##                17 
## "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k18
##                 1                 2                 3                 4 
##     "GISS-E2-1-H"   "ACCESS-ESM1-5"   "CanESM5-CanOE"   "MPI-ESM1-2-LR" 
##                 5                 6                 7                 8 
##   "CNRM-CM6-1-HR"      "CNRM-CM6-1"      "MIROC-ES2L"   "EC-Earth3-Veg" 
##                 9                10                11                12 
##       "CMCC-ESM2"       "INM-CM4-8" "HadGEM3-GC31-LL"      "MRI-ESM2-0" 
##                13                14                15                16 
##   "MPI-ESM1-2-HR"    "IPSL-CM6A-LR"     "GISS-E2-1-G"      "ACCESS-CM2" 
##                17                18 
##     "FIO-ESM-2-0"       "INM-CM5-0" 
## 
## $suggested_gcms$k19
##                 1                 2                 3                 4 
##      "ACCESS-CM2"     "CNRM-ESM2-1"       "INM-CM4-8"   "CNRM-CM6-1-HR" 
##                 5                 6                 7                 8 
##       "INM-CM5-0"   "MPI-ESM1-2-LR"   "CanESM5-CanOE"      "CNRM-CM6-1" 
##                 9                10                11                12 
##       "CMCC-ESM2"     "FIO-ESM-2-0"    "IPSL-CM6A-LR"     "GISS-E2-1-G" 
##                13                14                15                16 
##   "EC-Earth3-Veg"   "ACCESS-ESM1-5"   "MPI-ESM1-2-HR"      "MRI-ESM2-0" 
##                17                18                19 
##      "MIROC-ES2L" "HadGEM3-GC31-LL"     "GISS-E2-1-H" 
## 
## $suggested_gcms$k20
##                 1                 2                 3                 4 
##     "UKESM1-0-LL"     "GISS-E2-1-G"   "MPI-ESM1-2-HR"      "ACCESS-CM2" 
##                 5                 6                 7                 8 
##   "CanESM5-CanOE"   "MPI-ESM1-2-LR"     "GISS-E2-1-H"   "CNRM-CM6-1-HR" 
##                 9                10                11                12 
##     "FIO-ESM-2-0"    "IPSL-CM6A-LR"   "ACCESS-ESM1-5"       "INM-CM5-0" 
##                13                14                15                16 
##       "INM-CM4-8"   "EC-Earth3-Veg"       "CMCC-ESM2"     "CNRM-ESM2-1" 
##                17                18                19                20 
##      "MRI-ESM2-0"      "MIROC-ES2L"      "CNRM-CM6-1" "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k21
##                 1                 2                 3                 4 
##   "MPI-ESM1-2-HR"       "CMCC-ESM2"      "MIROC-ES2L"     "UKESM1-0-LL" 
##                 5                 6                 7                 8 
##   "MPI-ESM1-2-LR"     "CNRM-ESM2-1"       "INM-CM5-0" "HadGEM3-GC31-LL" 
##                 9                10                11                12 
##          "MIROC6"     "FIO-ESM-2-0"   "CNRM-CM6-1-HR"   "EC-Earth3-Veg" 
##                13                14                15                16 
##      "ACCESS-CM2"       "INM-CM4-8"    "IPSL-CM6A-LR"      "MRI-ESM2-0" 
##                17                18                19                20 
##     "GISS-E2-1-H"      "CNRM-CM6-1"     "GISS-E2-1-G"   "ACCESS-ESM1-5" 
##                21 
##   "CanESM5-CanOE"
kmeans_prec <- mc_kmeans_prec$suggested_gcms$k5
tictoc::toc()
## K-means Clustering Precipitation Variables: 29.385 sec elapsed
tictoc::tic("K-means Clustering All Variables")
mc_kmeans_all <- montecarlo_gcms(s10, 
                             var_names = "all", 
                             study_area = study_area, 
                             scale = TRUE,
                             perm = 10000, 
                             dist_method = "euclidean", 
                             clustering_method = "kmeans")
mc_kmeans_all
## $montecarlo_plot

## 
## $suggested_gcms
## $suggested_gcms$k2
##              1              2 
## "IPSL-CM6A-LR"  "CNRM-ESM2-1" 
## 
## $suggested_gcms$k3
##               1               2               3 
##   "UKESM1-0-LL"   "CNRM-ESM2-1" "CanESM5-CanOE" 
## 
## $suggested_gcms$k4
##                  1                  2                  3                  4 
##      "GISS-E2-1-G" "EC-Earth3-Veg-LR"    "CanESM5-CanOE"      "CNRM-ESM2-1" 
## 
## $suggested_gcms$k5
##               1               2               3               4               5 
##   "GISS-E2-1-G" "CanESM5-CanOE"   "UKESM1-0-LL"   "CNRM-ESM2-1" "EC-Earth3-Veg" 
## 
## $suggested_gcms$k6
##                 1                 2                 3                 4 
##     "GISS-E2-1-G"     "CNRM-ESM2-1" "HadGEM3-GC31-LL"       "CMCC-ESM2" 
##                 5                 6 
##   "CanESM5-CanOE"   "EC-Earth3-Veg" 
## 
## $suggested_gcms$k7
##                 1                 2                 3                 4 
##     "GISS-E2-1-G"   "EC-Earth3-Veg"     "FIO-ESM-2-0"       "CMCC-ESM2" 
##                 5                 6                 7 
##   "CanESM5-CanOE" "HadGEM3-GC31-LL"   "CNRM-CM6-1-HR" 
## 
## $suggested_gcms$k8
##                 1                 2                 3                 4 
##       "CMCC-ESM2"   "CNRM-CM6-1-HR"     "FIO-ESM-2-0"     "GISS-E2-1-G" 
##                 5                 6                 7                 8 
##   "MPI-ESM1-2-HR"   "CanESM5-CanOE" "HadGEM3-GC31-LL"   "EC-Earth3-Veg" 
## 
## $suggested_gcms$k9
##                 1                 2                 3                 4 
##      "MRI-ESM2-0"     "CNRM-ESM2-1"      "MIROC-ES2L"   "EC-Earth3-Veg" 
##                 5                 6                 7                 8 
## "HadGEM3-GC31-LL"   "MPI-ESM1-2-HR"       "CMCC-ESM2"   "CanESM5-CanOE" 
##                 9 
##     "GISS-E2-1-G" 
## 
## $suggested_gcms$k10
##                 1                 2                 3                 4 
##      "MRI-ESM2-0"   "MPI-ESM1-2-HR"   "EC-Earth3-Veg"      "CNRM-CM6-1" 
##                 5                 6                 7                 8 
##       "CMCC-ESM2"   "CanESM5-CanOE"     "GISS-E2-1-G"   "CNRM-CM6-1-HR" 
##                 9                10 
##      "MIROC-ES2L" "HadGEM3-GC31-LL" 
## 
## $suggested_gcms$k11
##                 1                 2                 3                 4 
##   "CanESM5-CanOE"      "MRI-ESM2-0" "HadGEM3-GC31-LL"   "MPI-ESM1-2-HR" 
##                 5                 6                 7                 8 
##   "CNRM-CM6-1-HR"      "MIROC-ES2L"     "GISS-E2-1-G"       "INM-CM4-8" 
##                 9                10                11 
##      "CNRM-CM6-1"       "CMCC-ESM2"   "EC-Earth3-Veg" 
## 
## $suggested_gcms$k12
##                 1                 2                 3                 4 
##     "GISS-E2-1-G"      "MRI-ESM2-0"   "CNRM-CM6-1-HR"    "IPSL-CM6A-LR" 
##                 5                 6                 7                 8 
## "HadGEM3-GC31-LL"       "INM-CM4-8"   "CanESM5-CanOE"   "EC-Earth3-Veg" 
##                 9                10                11                12 
##      "MIROC-ES2L"   "MPI-ESM1-2-HR"      "CNRM-CM6-1"       "CMCC-ESM2" 
## 
## $suggested_gcms$k13
##                 1                 2                 3                 4 
##     "FIO-ESM-2-0"       "CMCC-ESM2"      "MIROC-ES2L"   "MPI-ESM1-2-HR" 
##                 5                 6                 7                 8 
##    "IPSL-CM6A-LR"       "INM-CM4-8"     "GISS-E2-1-G"      "ACCESS-CM2" 
##                 9                10                11                12 
##   "EC-Earth3-Veg"   "CanESM5-CanOE"      "CNRM-CM6-1" "HadGEM3-GC31-LL" 
##                13 
##   "CNRM-CM6-1-HR" 
## 
## $suggested_gcms$k14
##                 1                 2                 3                 4 
##   "CanESM5-CanOE" "HadGEM3-GC31-LL"     "GISS-E2-1-G"   "EC-Earth3-Veg" 
##                 5                 6                 7                 8 
##      "CNRM-CM6-1"      "MIROC-ES2L"       "CMCC-ESM2"   "CNRM-CM6-1-HR" 
##                 9                10                11                12 
##      "ACCESS-CM2"     "FIO-ESM-2-0"       "INM-CM4-8"   "MPI-ESM1-2-HR" 
##                13                14 
##       "INM-CM5-0"    "IPSL-CM6A-LR" 
## 
## $suggested_gcms$k15
##                 1                 2                 3                 4 
##     "GISS-E2-1-G"       "INM-CM4-8"   "CNRM-CM6-1-HR"   "EC-Earth3-Veg" 
##                 5                 6                 7                 8 
##   "MPI-ESM1-2-HR" "HadGEM3-GC31-LL"     "FIO-ESM-2-0"      "CNRM-CM6-1" 
##                 9                10                11                12 
##    "IPSL-CM6A-LR"      "MIROC-ES2L"      "ACCESS-CM2"       "INM-CM5-0" 
##                13                14                15 
##   "CanESM5-CanOE"       "CMCC-ESM2"     "GISS-E2-1-H" 
## 
## $suggested_gcms$k16
##                 1                 2                 3                 4 
##    "IPSL-CM6A-LR"   "MPI-ESM1-2-HR"     "GISS-E2-1-H"     "FIO-ESM-2-0" 
##                 5                 6                 7                 8 
##       "INM-CM5-0"       "CMCC-ESM2"   "MPI-ESM1-2-LR"     "GISS-E2-1-G" 
##                 9                10                11                12 
## "HadGEM3-GC31-LL"   "EC-Earth3-Veg"      "ACCESS-CM2"   "CanESM5-CanOE" 
##                13                14                15                16 
##      "MIROC-ES2L"   "CNRM-CM6-1-HR"       "INM-CM4-8"      "CNRM-CM6-1" 
## 
## $suggested_gcms$k17
##                 1                 2                 3                 4 
##       "CMCC-ESM2"   "CanESM5-CanOE"      "MIROC-ES2L"   "CNRM-CM6-1-HR" 
##                 5                 6                 7                 8 
##   "MPI-ESM1-2-HR" "HadGEM3-GC31-LL"     "GISS-E2-1-H"     "FIO-ESM-2-0" 
##                 9                10                11                12 
##   "MPI-ESM1-2-LR"      "CNRM-CM6-1"     "GISS-E2-1-G"       "INM-CM4-8" 
##                13                14                15                16 
##   "EC-Earth3-Veg"       "INM-CM5-0"    "IPSL-CM6A-LR"   "ACCESS-ESM1-5" 
##                17 
##      "ACCESS-CM2" 
## 
## $suggested_gcms$k18
##                 1                 2                 3                 4 
##     "FIO-ESM-2-0"   "ACCESS-ESM1-5" "HadGEM3-GC31-LL"       "CMCC-ESM2" 
##                 5                 6                 7                 8 
##     "GISS-E2-1-H"   "MPI-ESM1-2-LR"      "ACCESS-CM2"   "MPI-ESM1-2-HR" 
##                 9                10                11                12 
##   "CanESM5-CanOE"      "MRI-ESM2-0"   "CNRM-CM6-1-HR"       "INM-CM4-8" 
##                13                14                15                16 
##       "INM-CM5-0"      "CNRM-CM6-1"      "MIROC-ES2L"   "EC-Earth3-Veg" 
##                17                18 
##     "GISS-E2-1-G"    "IPSL-CM6A-LR" 
## 
## $suggested_gcms$k19
##                 1                 2                 3                 4 
##       "INM-CM5-0"      "ACCESS-CM2"   "CNRM-CM6-1-HR"     "GISS-E2-1-G" 
##                 5                 6                 7                 8 
##   "ACCESS-ESM1-5" "HadGEM3-GC31-LL"      "MIROC-ES2L"   "MPI-ESM1-2-HR" 
##                 9                10                11                12 
##   "MPI-ESM1-2-LR"   "EC-Earth3-Veg"     "FIO-ESM-2-0"      "MRI-ESM2-0" 
##                13                14                15                16 
##      "CNRM-CM6-1"   "CanESM5-CanOE"       "CMCC-ESM2"     "GISS-E2-1-H" 
##                17                18                19 
##          "MIROC6"       "INM-CM4-8"    "IPSL-CM6A-LR" 
## 
## $suggested_gcms$k20
##                 1                 2                 3                 4 
##   "MPI-ESM1-2-LR"   "CNRM-CM6-1-HR"    "IPSL-CM6A-LR"      "CNRM-CM6-1" 
##                 5                 6                 7                 8 
## "HadGEM3-GC31-LL"     "GISS-E2-1-G"      "MRI-ESM2-0"   "EC-Earth3-Veg" 
##                 9                10                11                12 
##   "CanESM5-CanOE"     "CNRM-ESM2-1"      "ACCESS-CM2"       "CMCC-ESM2" 
##                13                14                15                16 
##       "INM-CM4-8"     "GISS-E2-1-H"   "MPI-ESM1-2-HR"          "MIROC6" 
##                17                18                19                20 
##     "FIO-ESM-2-0"       "INM-CM5-0"      "MIROC-ES2L"   "ACCESS-ESM1-5" 
## 
## $suggested_gcms$k21
##                 1                 2                 3                 4 
##   "MPI-ESM1-2-LR"   "EC-Earth3-Veg"     "FIO-ESM-2-0"      "MIROC-ES2L" 
##                 5                 6                 7                 8 
##    "IPSL-CM6A-LR"   "MPI-ESM1-2-HR"      "MRI-ESM2-0"     "UKESM1-0-LL" 
##                 9                10                11                12 
##   "CanESM5-CanOE"       "INM-CM5-0"   "ACCESS-ESM1-5"     "GISS-E2-1-H" 
##                13                14                15                16 
##          "MIROC6"   "CNRM-CM6-1-HR"     "CNRM-ESM2-1"       "CMCC-ESM2" 
##                17                18                19                20 
##       "INM-CM4-8"      "CNRM-CM6-1"      "ACCESS-CM2" "HadGEM3-GC31-LL" 
##                21 
##     "GISS-E2-1-G"
kmeans_all <- mc_kmeans_all$suggested_gcms$k5
tictoc::toc()
## K-means Clustering All Variables: 39.324 sec elapsed

Closestdist selection

tictoc::tic("Closestdist Main Variables")
mc_closestdist_main <- closestdist_gcms(s10, 
                             var_names = c("bio1", "bio12"), 
                             study_area = study_area, 
                             method = "euclidean")
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist_main
## $suggested_gcms
## [1] "CNRM-CM6-1"    "MPI-ESM1-2-HR" "MPI-ESM1-2-LR" "MIROC-ES2L"   
## [5] "MIROC6"        "INM-CM5-0"    
## 
## $best_mean_diff
## [1] 0.0008346833
## 
## $global_mean
## [1] 38.9711
closestdist_main <- mc_closestdist_main$suggested_gcms
tictoc::toc()
## Closestdist Main Variables: 2.326 sec elapsed
tictoc::tic("Closestdist Temperature Variables")
mc_closestdist_temp <- closestdist_gcms(s10, 
                             var_names = c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11"), 
                             study_area = study_area, 
                             method = "euclidean")
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist_temp
## $suggested_gcms
## [1] "CMCC-ESM2"        "EC-Earth3-Veg-LR" "HadGEM3-GC31-LL"  "CNRM-CM6-1-HR"   
## [5] "INM-CM4-8"       
## 
## $best_mean_diff
## [1] 0.001303225
## 
## $global_mean
## [1] 118.7889
closestdist_temp <- mc_closestdist_temp$suggested_gcms
tictoc::toc()
## Closestdist Temperature Variables: 3.732 sec elapsed
tictoc::tic("Closestdist Precipitation Variables")
mc_closestdist_prec <- closestdist_gcms(s10, 
                             var_names = c("bio12", "bio13", "bio14", "bio15", "bio16", "bio17", "bio18", "bio19"), 
                             study_area = study_area, 
                             method = "euclidean")
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist_prec
## $suggested_gcms
## [1] "CNRM-CM6-1"  "GISS-E2-1-G" "MRI-ESM2-0"  "UKESM1-0-LL" "GISS-E2-1-H"
## 
## $best_mean_diff
## [1] 0.0009509144
## 
## $global_mean
## [1] 115.8417
closestdist_prec <- mc_closestdist_prec$suggested_gcms
tictoc::toc()
## Closestdist Precipitation Variables: 2.939 sec elapsed
tictoc::tic("Closestdist All Variables")
mc_closestdist_all <- closestdist_gcms(s10, 
                             var_names = "all", 
                             study_area = study_area, 
                             method = "euclidean")
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist_all
## $suggested_gcms
## [1] "EC-Earth3-Veg" "MIROC6"        "UKESM1-0-LL"  
## 
## $best_mean_diff
## [1] 0.003716754
## 
## $global_mean
## [1] 166.5351
closestdist_all <- mc_closestdist_all$suggested_gcms
tictoc::toc()
## Closestdist All Variables: 4.7 sec elapsed

Closestdist selection with fixed k

tictoc::tic("Closestdist3 Main Variables")
mc_closestdist3_main <- closestdist_gcms(s10, 
                             var_names = c("bio1", "bio12"), 
                             study_area = study_area, 
                             method = "euclidean",
                             k = 3)
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist3_main
## $suggested_gcms
## [1] "ACCESS-ESM1-5" "CNRM-CM6-1"    "FIO-ESM-2-0"  
## 
## $best_mean_diff
## [1] 0.003674818
## 
## $global_mean
## [1] 38.9711
closestdist3_main <- mc_closestdist3_main$suggested_gcms
tictoc::toc()
## Closestdist3 Main Variables: 2.203 sec elapsed
tictoc::tic("Closestdist3 Temperature Variables")
mc_closestdist3_temp <- closestdist_gcms(s10, 
                             var_names = c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11"), 
                             study_area = study_area, 
                             method = "euclidean",
                             k = 3)
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist3_temp
## $suggested_gcms
## [1] "CNRM-CM6-1-HR"   "GISS-E2-1-H"     "HadGEM3-GC31-LL"
## 
## $best_mean_diff
## [1] 0.006257591
## 
## $global_mean
## [1] 118.7889
closestdist3_temp <- mc_closestdist3_temp$suggested_gcms
tictoc::toc()
## Closestdist3 Temperature Variables: 3.07 sec elapsed
tictoc::tic("Closestdist3 Precipitation Variables")
mc_closestdist3_prec <- closestdist_gcms(s10, 
                             var_names = c("bio12", "bio13", "bio14", "bio15", "bio16", "bio17", "bio18", "bio19"), 
                             study_area = study_area, 
                             method = "euclidean",
                             k = 3)
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist3_prec
## $suggested_gcms
## [1] "EC-Earth3-Veg-LR" "INM-CM5-0"        "IPSL-CM6A-LR"    
## 
## $best_mean_diff
## [1] 0.002350225
## 
## $global_mean
## [1] 115.8417
closestdist3_prec <- mc_closestdist3_prec$suggested_gcms
tictoc::toc()
## Closestdist3 Precipitation Variables: 3.334 sec elapsed
tictoc::tic("Closestdist3 All Variables")
mc_closestdist3_all <- closestdist_gcms(s10, 
                             var_names = "all", 
                             study_area = study_area, 
                             method = "euclidean",
                             k = 3)
## CRS from s and study_area are not identical. Reprojecting study area.
mc_closestdist3_all
## $suggested_gcms
## [1] "EC-Earth3-Veg" "MIROC6"        "UKESM1-0-LL"  
## 
## $best_mean_diff
## [1] 0.003716754
## 
## $global_mean
## [1] 166.5351
closestdist3_all <- mc_closestdist3_all$suggested_gcms
tictoc::toc()
## Closestdist3 All Variables: 3.936 sec elapsed

Results

As we expected, the change in variables affected the outputs in every algorithm implemented. It is possible to see that in the following chunks it was rare a GCM to be selected more than 2 times in the same algorithm.

table(c(hclust_main, hclust_temp, hclust_prec, hclust_all))
## 
##       ACCESS-CM2    ACCESS-ESM1-5    CanESM5-CanOE        CMCC-ESM2 
##                1                1                3                3 
##       CNRM-CM6-1 EC-Earth3-Veg-LR      FIO-ESM-2-0      GISS-E2-1-G 
##                2                3                2                1 
##      GISS-E2-1-H    MPI-ESM1-2-HR       MRI-ESM2-0 
##                2                1                1
table(c(kmeans_main, kmeans_temp, kmeans_prec, kmeans_all))
## 
##    CanESM5-CanOE       CNRM-CM6-1      CNRM-ESM2-1    EC-Earth3-Veg 
##                4                1                3                2 
## EC-Earth3-Veg-LR      GISS-E2-1-G           MIROC6    MPI-ESM1-2-HR 
##                1                3                1                1 
##       MRI-ESM2-0      UKESM1-0-LL 
##                1                3
table(c(closestdist_main, closestdist_temp, closestdist_prec, closestdist_all))
## 
##        CMCC-ESM2       CNRM-CM6-1    CNRM-CM6-1-HR    EC-Earth3-Veg 
##                1                2                1                1 
## EC-Earth3-Veg-LR      GISS-E2-1-G      GISS-E2-1-H  HadGEM3-GC31-LL 
##                1                1                1                1 
##        INM-CM4-8        INM-CM5-0       MIROC-ES2L           MIROC6 
##                1                1                1                2 
##    MPI-ESM1-2-HR    MPI-ESM1-2-LR       MRI-ESM2-0      UKESM1-0-LL 
##                1                1                1                2
table(c(closestdist3_main, closestdist3_temp, closestdist3_prec, closestdist3_all))
## 
##    ACCESS-ESM1-5       CNRM-CM6-1    CNRM-CM6-1-HR    EC-Earth3-Veg 
##                1                1                1                1 
## EC-Earth3-Veg-LR      FIO-ESM-2-0      GISS-E2-1-H  HadGEM3-GC31-LL 
##                1                1                1                1 
##        INM-CM5-0     IPSL-CM6A-LR           MIROC6      UKESM1-0-LL 
##                1                1                1                1