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.



Definitions

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



Species information

To perform the IUCN conservation assessments, we need different types of species information related to their biology, distribution, population size, threats, among other information.

Occurrence records

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)

Species biology and uses

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 %)

Population sizes

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]



Population metrics

Before we start calculating the population metrics, we need to load ConR to make the functions available in our R workspace.

library(ConR)

Population size decline

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.

Number of spatially valid and unique occurrences

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

Extent of Occurrence (EOO)

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)

Area of occupancy (AOO)

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)

Number of subpopulations

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)

Number of locations

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)

Severe fragmentation

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)

Area of habitat (AOH)

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")



IUCN criteria assessments

Population size reduction (IUCN criterion A)

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)

Species geographic range (IUCN criterion B)

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)

Small and declining populations (IUCN criterion C)

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

Very small population sizes (IUCN criterion D)

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)

Combining the results from all criteria

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),]

Near threatened

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])
}

Consensus assessment

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.



gdauby/ConR documentation built on Jan. 30, 2024, 11:10 p.m.