Conservation practitioners the world over have to make decisions based on limited amounts of empirical data. Estimating whether or not a specific wildlife population is in need of an intervention to remain viable in the face of a harvest is one such dilemma. In much of the world harvested wildlife remains nutritionally important for many forest fringing human communities. The productivity of such species, and the potentially sustainability (or unsustianability) of the harvest only emerges slowly over time. The reality is, however, important wildlife management decisions will preceded good ecological data. This package "harvest" attempts to aid conservation practitioners in visualising the possible sustainability of the population in question given the knowledge at hand.

Concept

The basic concept is to build a simple to use package in R to help wildlife practitioners visualise graphically the possibility of a population being sustainably harvested based on knowledge at hand using estimates of:

  1. population growth (finite rate of growth, $\lambda$, "lambda")
  2. density
  3. biomass
  4. offtake

The package's main function is harvest.tolerance() which is arranged in such a way that existing knowledge (real data, surrogates, and informed guestimates) can be used to make a visual estimate using a simple Monte Carlo recombination technique.

How to download the 'harvest' package

First install the "devtools" package then run:

library("devtools") 
install_github("NathanWhitmore/harvest", build_vignettes = TRUE)

The argument build_vignettes = TRUE allows you to access the tutorial vignette.

Then load the 'harvest package'

library(harvest)

To get help

You can get help on the package by checking the tutorial vignette:

vignette("harvest")

There is also help available on all the harvest functions via:

?lambda_PM()
?lambda_matrix()
?harvest_tolerance()
?buffer_req()

First steps: estimating growth from life history parameters

Most ecologists and conservationists are very poor at estimating growth rates of wildlife populations. Additionally, much of the literature has been based on the approaches of Cole (1954) and Robinson and Redford (1991). Both of the approaches are based upon the unrealistic assumption of individuals in the population being immortal. Robinson and Redford attempted to resolved this issue (unsuccessfully) by the additional of an abitrary age based conversion factor. Slade et al. (1998) showed that more accurate estimates could be obtained by the addition of crude survival rates using their "PM" methodology.

This method executed in the package by function lambda_PM(). Such a function delivers a reasonable estimate of finite growth rate e.g. life history data from Ochotona princeps (Slade et al. 1998):

lambda_PM(
  a = 1,        # age of first reproduction
  b = 3.25,     # number of female offspring per female
  w = 6,        # max age of reproduction
  la = 0.11,    # survival rate to adult (not annual)
  p = 0.7       # annual survival rate as adult
  )

The "PM" methodology of Slade et al. (1998) is highly robust and is equivalent to a simplified population projection matrix in which the stages of matrix are set to represent age and there is obligate death of adults at the final stage (terminal = TRUE). This is demonstrated by the lambda_matrix() function which allows a straight forward transition from the Slade et al. (1998) methodology to a population projection matrix approach.

lambda_matrix(
  r.stage = 1 ,    # stage of first reproduction
  b = 3.25,  # number of female offspring per female
  stages = 6 , # number of stages
  S = c(0.11,rep(0.7,5)),  # survival rate vector
  terminal =TRUE
)

A comparison between the impact of the assumption of on population growth of obligate and non-obligate death of adults is undertaken simply by changing the argument terminal = TRUE to terminal = FALSE e.g.:

lambda_matrix(
  r.stage = 1 ,    # stage of first reproduction
  b = 3.25,  # number of female offspring per female
  stages = 6 , # number of stages
  S = c(0.11,rep(0.7,5)),  # survival rate vector
  terminal =FALSE
)

The function lambda_matrix() will also return a matrix object named pop.matrix which is then available to the dependency package popbio for additional analyses such as elasticity. Elasticities (and their cousin sensitivity) are particularly useful in identifying key life stages which are have a disproportionate effect on the finite rate of growth.

elasticity(pop.matrix)

From this analysis we can see the first stage (in this case first year) survival rate is most critical in our estimation. Therefore we might choose to prioritise any field data collection to establish this rate robustly.

Once we have established a defensible population growth rate we now in a position to combine this with our current knowledge to estimate the sustainability of a harvest.

Estimating the sustainability of a harvest

For example if we are interested in the sustainability of hunting of the Admiralty cuscus (Spilocuscus kraemeri) a little known marsupial species present on Manus Island, Papua New Guinea we could use a obtain a defensible demographic estimates from existing information (sensu Whitmore et al. 2016) giving:

lambda_matrix(
  r.stage = 2 ,    # stage of first reproduction
  b = 0.7,  # number of female offspring per female
  stages = 2 , # number of stages
  S = c(0.65, 0.82),  # survival rate vector
  terminal =FALSE
)

Giving an annual growth rate of ~15 % per year.

elasticity(pop.matrix)

With the analysis of elasticity informing us that adult survival is the critical parameter required for accurate estimation of the finite rate of growth.

We now are in a position to use the harvest_tolerance() function. For the parameters of:

  1. growth = 100,000 samples drawn from a normal distribution based around our estimation of lambda
  2. density = 100,000 samples drawn from a uniform distribution based around preliminary field data
  3. biomass = 100,000 samples drawn from a normal distribution based around empirical field results
  4. offtake = 100,000 samples drawn from a normal distribution based around a guestimate of 1 kg per week.

Warning: it is important to note in the estimation below that the harvest is modelled as an instantaneous harvest occuring after the population has reproduced. Mathematicality, a population subject to continual harvest should have its growth modelled through a matrix multiplication process (see Caswell 2001 for guidance). However, even though the assumption of instantaneous harvest will typically be violated such an analysis maybe a useful first step to gauge a maximal (inflated) estimate of net production.

harvest_tolerance(
  seed = 0,
  name = "Admiralty cuscus",
  site = "Welei",
  iterations = 100000,
  area = 21,
  units ="ha",
  threshold = 0,
  growth = rnorm(100000, mean=1.15, sd =0.03),
  density = runif(100000, min=3, max=10),
  biomass = rnorm(100000, mean=2.28, sd =0.39),
  offtake = rnorm(100000, mean=52, sd =6)
)

The function then produces a report. The left graphics panel depicts the distribution function of the gross productivity (grey: background = "no harvest" scenario) and net productivity (foreground: black / red = "harvest" scenario) grey distribution shown in the background of the left graphics panel represents the gross productivity (no harvest). The difference between the two graphical peaks represents the impact of the harvest. If net productivity is unsustainable (i.e. < 0 by default, or the value of a set threshold) those elements display as red.

The right graphics panel depicts the distribution of each parameter contributing to the net productivity standardised by dividing by the median (not mean, as some distributions may not be normally distributed). The distributions shown represent the intervals between the 1st and 99th percentiles. As a rule of thumb the measurement of offtake is the most important parameter (as it is the value which differentiates net productivity from gross productivity). Thereafter the most variable (imprecise component) of gross productivity should be prioritised to improve the overall precision of estimate (i.e. density in the example).

The harvest_threshold() function also returns the likelihood of sustainability given the knowledge at hand, as well as the minimum intervention (offset) required to attain that goal.

Adding a buffer

In advance of better data or a more refined approch a safety margin or buffer could be introduced (represented by a threshold value for sustainability in kilograms) should we be concerned that we may have overestimated production by a specific amount. In the example below we take a pessimistic viewpoint - and interpret the outcome as warning that if our estimates overestimate production by 20 kg per year ~ 90 % of the time the harvest will be unsustainable.

harvest_tolerance(
  seed = 0,
  name = "Admiralty cuscus",
  site = "Welei",
  iterations = 100000,
  area = 21,
  units ="ha",
  threshold = 20,
  growth = rnorm(100000, mean=1.15, sd =0.03),
  density = runif(100000, min=3, max=10),
  biomass = rnorm(100000, mean=2.28, sd =0.39),
  offtake = rnorm(100000, mean=52, sd =6)
)

Under such circumstances the likelihood of unsustainability increases as a greater intervention would be required to ensure the additional buffer is also meet.

Setting a safety buffer

The harvest_tolerance() function sends a dataframe called "Monte.Carlo" to the R global environment which allows the user to undertake further graphing. The buffer_req() function then uses this dataframe to assess the probability of obtaining a particular productivity value (or lower) e.g. for a value of 20 kg:

# empirical cumulative distribution function for net production of 20 kg
buffer_req(20, net=TRUE)

# empirical cumulative distribution function for net production of 20 kg (default)
buffer_req(20)

As a consequence 88.2 % of the time the expected net productivity of the population under harvest would be less than 20 kg per year (i.e. it exactly mirrors the harvest_threshold() example above). In the same manner we can also examine what happens when we reduce the harvest by a given amount:

# empirical cumulative distribution function for net production under a 20 kg per year reduction in harvest
buffer_req(-20)

By comparison if we can reduce the current harvest by 20 kg then only ~26 % of the scenarios might be unsustainable.

Disclaimer

There is a vast array of mathematical tools to assess sustainability. However, the reality is that most field practitioners are not mathematical experts and do not have the time to become proficient in esoteric mathematical techniques. They require assistance and access to usable tools. The package harvest is my attempt to begin to bridge this gap. It is not designed to be a panecea but rather a tool to encourage evidence based decision making.

The package, while functional, is still in a development stage and as such I welcome any and all feedback. I can be contacted through nwhitmore.work@gmail.com or via my github site.

References

Caswell, H. (2001). Matrix population models. John Wiley & Sons, Ltd.

Cole L.C. (1954). The population consequences of life history phenomena. The Quarterly Review of Biology, 29(2), 103-137.

Robinson J.G., & Redford, K.H. (1991). Neotropical wildlife use and conservation. University of Chicago Press Ltd.

Slade N.A., Gomulkiewicz R. & Alexander, H. M. (1998). Alternatives to Robinson and Redford’s method of assessing overharvest from incomplete demographic data. Conservation Biology, 12(1), 148-155.

Whitmore, N., Lamaris J., Takendu W., Charles D., Chuwek T., Mohe B., Kanau L., & Pe-eu S. (2016). The context and potential sustainability of traditional terrestrial periodic tambu areas: insights from Manus Island, Papua New Guinea. Pacific Conservation Biology, 22(2), 151-158.



NathanWhitmore/harvest documentation built on Feb. 15, 2023, 2:28 p.m.