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 ratesThe 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 ratesThe 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.