Skip to content
This repository has been archived by the owner on Jul 23, 2023. It is now read-only.

forestgeo/AGBfluxes

Repository files navigation

Compute biomass fluxes at ForestGEO sites

Project and contributors

This package was initially developped to test for a directional change in forest dynamics across ForestGEO sites. The main author is Ervan Rutishauser (er.rutishauser@gmail.com), Smithsonian Tropical Research Institute Post-doc (2016-2019), with contribution from Helene Muller-Landau (current administrator; MullerH@si.edu) and Mauro Lepore. To cite this code, please cite the following publication:

Rutishauser, E., Wright, S. J., Condit, R., Hubbell, S. P., Davies, S. J., & Muller‐Landau, H. C. (2019). Testing for changes in biomass dynamics in large-scale forest datasets. Global Change Biology, 0(ja). https://doi.org/10.1111/gcb.14833

Main purpose of the package

This package has a main function data_preparation() that works either at stem (stem=T) or tree (stem=F) levels, and works in 2 steps:

A. Complement the data

  • compiles multiple censuses into a single file to,
  • checks for consistency in stem/tree status (alive/dead) over time,
  • (optional) fills gaps (i.e. missing DBHs or POM values) by simple linear interpolation (fill_missing=T),
  • (optional) corrects POM changes through application of a taper correction (taper_correction=T),
  • allocate wood density from CTFS wood density database and DRYAD
  • estimates stem/tree above-ground dry biomass (AGB)

B. Format the data

  • merges information from stems to single tree for each census interval,
  • codes if a tree is recruited, alive, dead or broken/resprouted
  • computes annual AGB productivity (if alive), ingrowth (if recruited or resprouted) or loss (if dead) at tree-level
  • flags obvious measurement errors (annual AGB growth > X % (X = maxrel) of mean annual AGB growth across all census intervals) The function returns a data.frame where each row correspond to the initial and final measurments (i.e. DBH, POM, status) per tree for a given census intervals. Variables related to the initial and final census are denoted with 1 and 2, respectively.

Variable are defined as follow:

Variable Definition
treeID Unique tree ID
dbh1 Measured dbh at intial census
dbhc1 Corrected dbh at intial census
status1 Status (alive/dead) at intial census
code1 Original CTFS code at intial census
hom1 Original height of measurement at intial census
sp CTFS species name acronym
wsg Wood-density allocated at lowest taxonomic level
agb1 Above-ground tree biomass estimate at initial census
date1 Date of census
...
broken Has the main stem DBH > 10cm broken (i.e. AGB reduction > 20%)?
agbl AGB loss due to main stem breakage
agb1.surv AGB of surving stems (if any) after main stem breakage
interval first, second, third... census interval
year Calendar year of census
gx X coordinate
gy Y coordinate
quadrat 20x20m quadrat
name Genus and species
ID Concatenation of treeID and stem tag
int Census interval length in days
code Corrected tree status, can be: "A" = alive, "AC" = alive, with POM changed, "B" = broken, "Rsp" = resprouted, "R" = recruited or "D" = dead
dHOM hom2-hom1
prod.g annual AGB productivity for trees coded as "A" or "AC"
prod.r annual AGB productivity for trees coded as "Rsp" or "R"
loss annual AGB loss for trees coded as "B" or "D"
ficus Is that tree a large (DBH > 50cm) strangler fig?
prod.rel relative producitivity (prod.g/average-productivity-per-hectare)
error Is prod.rel > maxrel (1), or prod.rel < -maxrel (-1)
error.loss Binary. Was that tree flagged as "error" prior to death?

Resulting data set can further be used to compute AGB fluxes at a site (as described below).

Installation

You can install the released version of AGBfluxes from CRAN with: r # install.packages("devtools") devtools::install_github("AGBfluxes")

Example

data_preparation() outputs a data.table, which has a special print() method.