knitr::opts_chunk$set(collapse = TRUE, comment = "#>", echo = TRUE)
devtools::load_all() # for development library(sf)
This vignette shows how to use ConR
to apply a workflow for conducting
conservation assessments for multiple species using the IUCN criteria A, B, C
and D. Here, we use only three species to make it simple. But ConR
was
developed to perform assessments for many more species at the same time.
We will use as examples three emblematic and threatened arborescent species that are endemic or near-endemic to the Atlantic Forest in South America: Araucaria angustifolia, Euterpe edulis and Paubrasilia echinata. Thus, it is necessary to obtain information for this specific region of the world (e.g. habitat cover maps, protected areas), which should be available to run this tutorial.
spp <- c("Araucaria angustifolia", "Euterpe edulis", "Paubrasilia echinata")
Another more general but important piece of information is the year of the assessment itself (which depends on the information available) and the starting year used to assess recent continuing decline (which depends on the region):
assess.year <- 2018 recent.year <- 2000
To perform the IUCN conservation assessments, we need different types of species information related to their biology, distribution, population size, threats, among other information.
We will use real occurrence data for our target species. This example dataset
data is provided with ConR
within the internal object example_tutorial
,
but users can load a file containing a similar format. We will name it occs
for simplicity.
data(example_tutorial) occs <- example_tutorial$occurrences head(occs, 2)
Then, we need to define objects with the basic species information that are necessary for the IUCN assessments.
gen.length <- c(40, 65, 50) ## generation length in years p.mature <- c(0.4485, 0.3028, 0.4143) ## proportion of mature individuals in the population early.sucession <- c(0.9, 1, 1) ## correction applied to population decline harvest <- c(10, 10, 10) ## levels of exploitation causing reductions in population size (in %)
To assess the IUCN criteria A, C and D, we also need to provide ConR
the
population size information. For this tutorial, this information is also
provided within the internal object example_tutorial
. We will name it
pop.sizes
:
pop.sizes <- example_tutorial$population.sizes years <- names(pop.sizes[,-1]) pop.sizes[, 1:6]
Before we start calculating the population metrics, we need to load ConR
to
make the functions available in our R workspace.
library(ConR)
To match the time frame of 1-3 generation times into the past or into the
future, we need to estimate the population sizes for the years that we do not
have information available. These estimates are produced using the fit of
different statistical models (i.e. quadratic, exponential, logistic, general
logistic) to the population size trends. Here, we will only
estimate population sizes into the past, but one can also use the same ConR
function pop.decline()
to estimate them into the future.
# Vector of years missing from the input data possible.years <- sort(unique(gen.length * rep(c(1:3), each=length(gen.length))), decreasing = TRUE) missing.years <- assess.year - possible.years # Estimating population sizes for the missing years est.pop.sizes <- pop.decline(pop.sizes[,-1], taxa = spp, output = "predictions", show_progress = FALSE) # Re-organizing the information for downstream analyses new.years <- est.pop.sizes[[1]][[1]]$years ncols <- length(new.years) nrows <- length(spp) mean.pop <- matrix(NA, ncol = ncols, nrow = nrows, dimnames = list(spp, new.years)) for(i in seq_along(spp)) mean.pop[i,] <- est.pop.sizes[[1]][[i]]$predicted mean.pop <- cbind.data.frame(tax = spp, mean.pop, row.names = NULL)
We now have a new object called mean.pop
which stores both the input
population sizes and the estimates based on the statistical models that best
describe the input data.
We can begin by expecting how many valid occurrences are available for each species.
nb.occs <- coord.check(XY = occs) nb.occs <- nb.occs$unique_occs
We then use the species occurrences to compute their extent of occurrences (EOO)
in square kilometers using the function EOO.computing()
and the
IUCN-recommended Convex Hull method.
EOO.hull <- EOO.computing(XY = occs[, c(1:3)], method.range = "convex.hull", export_shp = TRUE, show_progress = FALSE)
Another important metric for IUCN assessments is the species' area of occupancy
(AOO), also in square kilometers, which is computed using the function
AOO.computing()
. Here, we also set as defaults the IUCN recommendation of
using 2x2 km grid cells to compute AOO. ConR
allows for computing AOO using
multiple random starting positions of the grid, to make sure the AOO estimate
is not influenced by the grid start position.
AOO <- AOO.computing(occs[, c(1:3)], cell_size_AOO = 2, nbe.rep.rast.AOO = 30, show_progress = FALSE)
The number of subpopulations for each species is also an important
information. The delimitation of subpopulations depends on species dispersal
abilities. If this information is available, it can be directly provided to the
function subpop.comp()
. If it is not available, ConR
offers the possibility
of estimating the maximum distance between species occurrences using the
function subpop.radius()
and the circular buffer method. This distance can be
used as a proxy of species' dispersal abilities:
radius <- subpop.radius(XY = occs[, c(1:3)], quant.max = 0.9) sub <- subpop.comp(XY = occs[, c(1:3)], resol_sub_pop = radius[,c("tax", "radius")], show_progress = FALSE)
One of the conditions to detect threat under the IUCN criterion B (restricted
geographic range) is related to the number of locations where the species occur.
Locations depend on the spatial extent of the threats faced by the species. Here
we used an extent of 10 km that makes sense for the target region, the Atlantic
Forest. This computation is performed using the function locations.comp()
.
locs <- locations.comp(occs[, c(1:3),], method = "fixed_grid", nbe_rep = 30, cell_size_locations = 10, rel_cell_size = 0.05, #threat_list = strict.ucs.spdf, #id_shape = "NAME", method_polygons = "no_more_than_one", show_progress = FALSE)
Another condition to detect threat under the IUCN criterion B is whether the species populations is severely fragmented: more than half of species AOO corresponds to habitat patches separated from others by a large distance. Thus, to assess the level of fragmentation we need the information on the species AOO and the dispersal ability. The function severe_frag()
computes the percentage of AOO that is isolated across a large distance.
sever.frag <- severe_frag(XY = occs, resol_sub_pop = radius[,c("tax", "radius")], dist_isolated = radius$radius, show_progress = FALSE)
The area of habitat (AOH) is currently not an official population metric that is compared against the IUCN Criteria. However, it provides important information on the amount of habitat left for a given species within its EOO and more importantly how this amount is changing through time.
ConR
computes AOH using the function AOH.estimation()
. If habitat maps are
available for different periods in time, the function can be used to infer the
continuing declines of the species AOH, which is an important condition to
assess the IUCN criterion B.
For this example, we do not provide habitat maps for the area of study (i.e. rasters with the Atlantic Forest cover through time), which are demanding in terms of storage and computational time. So we will assume that we already have available a vector containing the relative losses (in %) of AOH previously estimated for each species between 2000 and 2018.
rel.loss <- c(8.5, 8.1, 9.0) declineB <- ifelse(rel.loss >= 1, "Decreasing", "Not Decreasing")
The IUCN criterion A mainly evaluates paste and projects population size reductions. In ConR
, it is assessed using the function criterion_A()
, which requires population sizes through time (mean.pop
) and generation lengths (gen.length
). For this tutorial, we will assess only the subcriterion A2, which makes more sense in the specific context of the Atlantic Forest.
ConR
also allows to include information on exploitation levels for commercial species (e.g. timber), related to the base d of criterion A. These levels are provided using the argument exploitation
.
critA <- criterion_A(x = mean.pop, assess.year = assess.year, project.years = NULL, subcriteria = c("A2"), generation.time = gen.length, exploitation = harvest, show_progress = FALSE)
The function criterion_B()
help to obtain assessments based on the criterion
B, as well as others parameters documenting the species geographic range.
critB <- criterion_B(x = occs, AOO = AOO, EOO = EOO.hull$results, locations = locs$locations, severe.frag = sever.frag, subpops = sub, decline = declineB, show_progress = FALSE)
The IUCN criterion C is about small and declining populations. In ConR
, this criterion is assessed using the function criterion_C()
, which requires subpopulation sizes to apply the sub-criterion C2.
We do not have estimates of subpopulation sizes available. So, we take a simple
approach which is assuming that all subpopulations have the same size. And we store this simplification in the object subpop.sizes
.
id.assess <- which(names(mean.pop) %in% assess.year) df <- merge(data.frame(tax = spp, '2018' = mean.pop[,id.assess]), sub) subpop.sizes <- vector("list", dim(sub)[1]) names(subpop.sizes) <- sub$tax for(i in seq_along(subpop.sizes)) { subpop.sizes[[i]] <- rep(df$X2018[i]/df$subpop[i], df$subpop[i]) }
Now, we apply criterion C itself using criterion_C()
, which requires
information on population sizes through time (mean.pop
), generation lengths
(gen.length
) and proportion of mature individuals (p.mature
), besides the
subpopulation sizes obtained above (subpop.sizes
).
critC <- criterion_C(x = mean.pop, assess.year = assess.year, project = FALSE, recent.year = recent.year, subcriteria = c("C1","C2"), generation.time = gen.length, prop.mature = p.mature, subpop.size = subpop.sizes, correction = early.sucession, show_progress = FALSE)
If C1 is listed within the argument subcriteria
, the function returns the
estimated continuing decline:
est.decline <- critC$cont.decline
The IUCN criterion D is assessed using the function criterion_D()
. We have no
spatially explicit information for future human activities or stochastic events
for the Atlantic Forest. Therefore, here we assess the subcriterion D and not D2.
However, function criterion_D()
can be used to assess D2 only if the AOO and the
number of locations are provided.
# accounting for exploitation of commercial species p.mature.explo <- p.mature - harvest/100 # population sizes at the year of assessment pop.sizes.assess <- mean.pop[[18]] # assessing criterion D critD <- criterion_D(pop.size = pop.sizes.assess, name_sp = mean.pop[[1]], AOO = AOO$aoo, n.Locs = locs$locations$locations, prop.mature = p.mature.explo, subcriteria = c("D", "D2"), AOO.threshold = 20, Loc.threshold = 5)
Because we are assessing multiple criteria for the same set of species, we need
to combine the results from all criteria. We try to avoid duplicated columns in the final object all.crit
.
all.crit <- merge(critA, critB, by = "tax", all = TRUE) rm.dup.columns <- which(names(critC) %in% c("assessment.year", "assessment.period")) all.crit <- merge(all.crit, critC[, -rm.dup.columns], by = "tax", all = TRUE, suffixes = c(".A",".C")) rm.dup.columns <- which(names(critD) %in% c("AOO")) all.crit <- merge(all.crit, critD[, -rm.dup.columns], by = "tax", all = TRUE) all.crit <- all.crit[order(all.crit$tax),]
Next, we try to tell apart the Least Concern (LC) from Near-Threatened (NT)
species using the function near.threatened()
:
subcriteria <- c("A2", "category_B", "C1", "C2", "D") for(i in 1:length(subcriteria)) { all.crit[,subcriteria[i]] <- near.threatened(cats = all.crit[,subcriteria[i]], EOO = all.crit$EOO, AOO = all.crit$AOO, decline = all.crit$any.decline, pop.reduction = all.crit$reduction_A12, pop.size = all.crit$pop.size, pop.size.low = NULL, locations = all.crit$locations, sever.frag = all.crit$severe_frag, ext.fluct = NULL, subpop = all.crit$subpop, subcriteria = subcriteria[i]) }
Finally, we obtained the consensus categories for all four IUCN criteria using
the function cat_mult_criteria()
. Although the criteria resulting in the most
restrictive category for each species prevails, the function returns the
evaluation result using other criteria.
consensus <- cat_mult_criteria(all.crit[, c("tax", subcriteria)]) all.crit <- cbind.data.frame(all.crit, consensus[, c("category","main.criteria","aux.criteria")])
The object all.crit
now contains all relevant population metrics and the
results of the IUCN conservation assessments using the Red List criteria A-D.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.