# The Chapman-Richards growth function

$Latex formula$

What does it mean?

Growth functions in general describe the change in size of an individual or population with time (Burkhart and Tomé, 2012). Assume that $Latex formula$ is a tree growth variable, e.g. tree total height or tree volume, and  $Latex formula$ is the maximum value this growth variable can take (in absolute terms for a given species in general or for a given species on a given site) then the term $Latex formula$ is a modifier reducing the maximum growth variable to its current state at time $Latex formula$.  $Latex formula$ is an empirical growth parameter scaling the absolute growth rate. The empirical parameter $Latex formula$ is related to catabolism (destructive metabolism), which is said to be proportional to an organism’s mass. Therefore it is often restricted to a value of three for theoretical, biological reasons.

The Chapman-Richards growth function can be applied to both, individual organisms as was well as to the growth of whole populations and describes cumulative growth over time. As such the function has an inflection point and an upper asymptote at  $Latex formula$ reflecting a so-called sigmoid growth curve typical of growth processes, which are influenced by biotic and abiotic factors.

Where does it come from?

The Chapman-Richards growth function is based on the seminal work by Bertalanffy for animal growth and was published by Richard in 1959 and Pienaar and Turnbull (1973) introduced it to forestry applications. The model has a reputation of being very flexible on the slight expense of biological realism. It is valued for its accuracy, although there can be problems in the process of parameter estimation when  $Latex formula$ is allowed to vary (Clutter et al., 1983; Pienaar and Turnbull, 1973; Zeide, 1933).

Why is it important?

The Chapman-Richards growth function has been a popular model for describing the growth of various tree and forest stand growth variables, e.g. tree and stand height, diameter at breast height, basal area and volume. As such it has been and is still widely used in many empirical forest growth simulators, particularly where the accuracy of model prediction is crucial (Zeide, 1933). The Chapman-Richards growth function has been used extensively to model site index development, i.e. the mean height development of the most dominant trees of a forest as a population characteristic for describing site quality (Burkhart and Tomé, 2012), leading to a so-called polymorphic height growth model.

How can it be used?

Assume you have access to sample data providing several combinations of a growth variable, e.g. tree height, and age. Using nonlinear regression methods you can estimate the parameters of the Chapman-Richards growth function. After estimating the growth parameters the model can be used for interpolation and for predicting past and future growth.

Absolute growth rate (AGR) is essentially the first derivative of the Chapman-Richards growth function:

$Latex formula$

The AGR function can be employed to model current annual increment or instantaneous growth. For relative growth rate (RGR) we lose one model parameter (Pommerening and Muszta, 2016) and the function terms simplifies to

$Latex formula$.

Also the algebraic difference form (ADA) of the Chapman-Richards growth function is often applied (Burkhart and Tomé, 2012),

$Latex formula$,

where the fracture constitutes a growth multiplier (Pommerening and Muszta, 2016) and the aymptote $Latex formula$ disappears. The algebraic difference form allows estimating the current value of a growth variable from a value in the past (anamorphic model).

R code

In R it is quite straightforward to estimate the parameters of the Chapman-Richards growth function through nonlinear regression. First we need some sample data and I have taken pairs of top height (the mean height of dominant trees, a population characteristic) and the corresponding age (assuming an even-aged forest) from a British yield table. In more interesting applications, similar data would naturally stem from field observations.

```# Using some data from the British yield table for Scots pine, YC 14.
topHeight <- c(8.9, 11.6, 13.9, 15.9, 17.8, 19.6, 21.3, 22.8, 24.2,
+ 25.4, 26.5, 27.4, 28.3, 29.0, 29.7, 30.3, 30.7, 31.1)
age <- c(17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77, 82, 87,
+ 92, 97, 102)```

Then we load a package for robust regression (as we know that the Chapman-Richards model can sometimes “play up”).

`library(robustbase)`

Finally we enter the actual regression code specifying the model, the data and the start parameters. The summary command provides the regression outputs including the estimated model parameters. (Parameter  $Latex formula$ corresponds to parameter  $Latex formula$ in the above equation.)

```nlsout <- nlrob(topHeight ~ A * (1 - exp(-k * age))^p, data =
data.frame(age, topHeight), start = list(A = 83, k = 0.03, p = 4),
trace = TRUE)
summary(nlsout)
summary(nlsout)\$coefficients[1 : 3]```

It is always a good idea to check the value of parameter  $Latex formula$ against the maximum value of the growth variable: Both values shouldn’t be very far off, because $Latex formula$ is the upper asymptote of the growth function.

Literature

Burkhart, H. and Tomé, M., 2012. Modeling forest trees and stands. Springer, Dordrecht.

Clutter, J. L, Fortson, J. C., Pienaar, L. V., Brister, G. H. and Bailey, R. L., 1983. Timber management. A quantitative approach. John Wiley & Sons, New York.

Pienaar, L. V. and Turnbull, K. J., 1973. The Chapman-Richards generalization of von Bertalanffy’s growth model for basal area growth and yield in even-aged stands. Forest Science 19: 2-22.

Pommerening, A. and Muszta, A., 2016. Relative plant growth revisited: Towards a mathematical standardisation of separate approaches. Ecological Modelling 320: 383-392.

Zeide, B., 1993. Analysis of growth equations. Forest Science 39: 594-616.

## 7 thoughts on “The Chapman-Richards growth function”

1. Hello,
I just started to work with R to review some literature on Pinus oocarpain Honduras and attempt to replicate their constants.
While practicing with your code using the C-R functionsI noticed that if I made f = nlsout and asked for a plot it would give me a lattice error.

Would you mind sharing the plot code?

Regards,

Jaime

• Hi Jaime,
Thanks for checking out my blog. You need to give me more information on this error so that I can help you with this issue.
Best wishes,
Arne

2. In response to Jaime.

To produce the plot you should run this code:

# Using some data from the British yield table for Scots pine, YC 14.
topHeight <- c(8.9, 11.6, 13.9, 15.9, 17.8, 19.6, 21.3, 22.8, 24.2,
+ 25.4, 26.5, 27.4, 28.3, 29.0, 29.7, 30.3, 30.7, 31.1)
age <- c(17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77, 82, 87,
+ 92, 97, 102)
install.packages("robustbase",dependencies = TRUE)
library(robustbase)
nlsout <- nlrob(topHeight ~ A * (1 – exp(-k * age))^p, data =
data.frame(age, topHeight), start = list(A = 83, k = 0.03, p = 4),
trace = TRUE)

names(nlsout)

as.function <- function(formula) {
cmd <- tail(as.character(formula),1)
exp <- parse(text=cmd)
function(…) eval(exp, list(…))
}

f <- as.function(nlsout\$formula)
plot(age, nlsout\$fitted.values, ylab="Top height [m]", xlab="Age [year]", pch=16 )

legend(20,30, expression(y[max]=="35.23", "k=0.02", "p=1.24" ))

lines(age, f(A=as.vector(nlsout\$coefficients)[1],
k= as.vector(nlsout\$coefficients)[2],
p=as.vector(nlsout\$coefficients)[3], age=age), col="red")

3. Hi,

I wonder if you have an example of a data set whihc is very difficult to fit with
the method you are using?

Regards,

Dave

• There are a lot of small data sets you can find in the internet or literature. For example growth & yield tables provide a lot of data you use for testing and trying. With many of them you may run into problems of fitting.

4. I Arne, my Name is Luca and in my PhD Project I work about carbon storage in mountainous Forests. I have data about growing stock (merchantable volume, m3) of many forest stands and I would like to estimate the Gross Current Increment of each of them, according to the characteristics of the forest typologies. I would like to use the first derivative of the Richards function, as reported in Federici et al 2008 for Italy. (http://www.sisef.it/iforest/pdf/Federici_457.pdf). For each forest typology I have the parameters (a, k, v and y0) that are used at regional level for the Italian carbon accounting: a = max growing stock, or carrying capacity (m3/ha; >0); k = growth rate (anni-1; >0), v = dimensionless; y0 = m3/ha; >0. I haven’t calibrated my model yet. As you can see, the function correlates volume of growing stock to volume of increment (m3). Do you think is it possibile to recalculate the parameters taking into account the wood basic density in order to obtain a Gross Current Increment in t/ha dry matter insted of m3/ha? I tried but I think I did some mistakes. What do you think? Thank you very much for your attention and collaboration – Luca

• You can use any growth characteristic, Luca.
/Arne