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
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:
- 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)
- 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).
You can install the released version of AGBfluxes from CRAN with: r # install.packages("devtools") devtools::install_github("AGBfluxes")
data_preparation()
outputs a data.table, which has a special print()
method.