knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
options(tibble.print_min = 4, tibble.print_max = 4)
library(forestexplorR)
library(dplyr)

The forestexplorR package contains two functions for calculating annual growth rates of trees in a tree census dataset. growth_summary() uses the earliest and most recent measurements of each tree to calculate average annual growth over the entire period. detailed_growth() calculates average annual growth between each pair of consecutive measurements of each tree, thereby detecting any changes in growth rate of a single tree over time.

growth_summary(): Calculate overall growth rates

The growth_summary() function takes a tree census dataset and extracts, for each tree in that dataset, the earliest and most recent measurement records. Using these extracted data, average annual growth rate for each tree is calculated as: $$\frac{(final.size - begin.size)}{(last.record - first.record)}$$ NA values are returned for trees with only a single measurement record. A warning message indicating the number of trees with negative annual growth rates is also returned (a common occurrence due to measurement error, particularly for slow-growing tree species).

For trees that have a non-negative annual growth rate, a size-corrected annual growth rate is also calculated as: $$\sqrt\frac{annual.growth}{begin.size}$$ This transformed growth rate tends to have a more linear relationship with tree size, potentially enabling linear tree growth modeling approaches.

growth <- growth_summary(tree)
growth %>%
  select(tree_id, stand_id, species, begin_size, annual_growth, annual_bai,
         size_corr_growth)

detailed_growth(): Calculate between-census growth rates

The detailed_growth() function works similarly to growth_summary() in that it takes a tree census dataset and calculates average annual growth. The difference is that detailed_growth() calculates a separate growth rate between each pair of consecutive measurements for each tree as: $$\frac{size_2 - size_1}{year_2 - year_1}$$ It is expected that many more cases of negative growth rates will occur when calculating growth rate between each pair of consecutive censuses and this is the main motivation for instead calculating a single average annual growth rate for each tree using growth_summary().

bt_census_growth <- detailed_growth(tree)
bt_census_growth %>%
  select(tree_id, stand_id, species, start_year, end_year, annual_growth,
         annual_bai)


sgraham9319/ForestPlotR documentation built on April 15, 2022, 4:01 p.m.