Open Martin-Jung opened 5 months ago
I have worked on this using the ecospat
packages. Here is my approach. x
and y
are the point and range maps. envir
is the stack of predictors.
Source:
library(ecospat)
library(ade4)
library(terra)
compare_niches <- function(x, y, envir) {
# extract values for first object
values_x <- terra::extract(x = envir, y = x, ID = FALSE)
values_x <- values_x[complete.cases(values_x), ]
# extract values for second object
values_y <- terra::extract(x = envir, y = y, ID = FALSE)
values_y <- values_y[complete.cases(values_y), ]
# extract environmental values
values_envir <- terra::as.data.frame(x = envir)
# Calibrating the PCA in the whole study area, including both x and
# y ranges (same as PCAenv in Broenniman et al. 2012)
pca_env <- ade4::dudi.pca(values_envir, center = TRUE, scale = TRUE, scannf = FALSE,
nf = 2)
# predict the global envir scores on the PCA axes
scores_bkg<- pca_env$li
# scores for the two species
scores_x <- ade4::suprow(pca_env, values_x)$lisup
scores_y <- ade4::suprow(pca_env, values_y)$lisup
# calculation of occurence density
suppressMessages(density_x <- ecospat::ecospat.grid.clim.dyn(glob = scores_bkg, glob1 = scores_bkg,
sp = scores_x, R = 100))
suppressMessages(density_y <- ecospat::ecospat.grid.clim.dyn(glob = scores_bkg, glob1 = scores_bkg,
sp = scores_y, R = 100))
# calculate overlap
ecospat::ecospat.niche.overlap(density_x, density_y, cor = TRUE)
}
Sounds good. I think it would be neat if there is a wrapper function for ibis.iSDM objects. So specifically by providing a BiodiversityDistribution-class
object to the function and it then extracts the covariates and any datasets (both ranges and points) to construct the plot.
If at all possible without extra dependencies, e.g. ecospat
, the better (PCA can be created with base R)
Sounds all reasonable 👍
The function above is not exactly Piero's idea, but similar, and based on the first paper listed under the Sources. So in terms of a BiodiversityDistribution-class
would this extract the biodiversity data and the range? Or what would should it be possible to provide two BiodiversityDistribution-class
objects? Or both ?
Sounds all reasonable 👍
The function above is not exactly Piero's idea, but similar, and based on the first paper listed under the Sources. So in terms of a
BiodiversityDistribution-class
would this extract the biodiversity data and the range? Or what would should it be possible to provide twoBiodiversityDistribution-class
objects? Or both ?
We made a sketch in the coffee room today :D But yeah, extract all specified biodiversity data in the object. Can talk tmr or so about it.
I am on leave until next week, but happy to chat during lunch next week (or anytime)
The idea (by Piero) is as follows:
BiodiversityDistribution
object and do a PCA on themThis would allow a visual assessment of the extent to which the data falls within the whole environmental space. It should not replace the existing functionalities of
partial_density()
here but instead looks at all covariates.