Abstract
StemAnalysis R package is a tool for designed to reconstruct stem growth profiles, construct height-diameter relationships, and consequently to compute growth trends in terms of diameter at breast height (DBH), tree height, stem volume, tree biomass and carbon. This vignette provides an overview of this package functions and options. We provide a working examples that demonstrates the basic functionality and use of the package.
Purpose
Accurate information about age dynamics of timber production and carbon storage in forest ecosystems is frequently required by scientists, stakeholders, and policymakers. Stem analysis is a technique for measuring tree growth (Salas-Eljatib, 2021). The computational burden of reconstructing temporal, radial, and longitudinal patterns of tree growth, fitting height-diameter relationships, and calculating diameter with bark from radial annual-ring increment sequences measured on multiple cross-sectional discs, may present a hindrance to application of stem analysis methodology in forest research investigations and operational forest multifunctional management (Newton, 2019). Therefore, a standardized tool, StemAnalysis R package, is developed to calculate tree growth dynamics and then make the stem analysis technique more conveniently applied to forest multifunctional investigation.
Installation
install.packages("StemAnalysis")
Load the package
require(StemAnalysis)
require(knitr)
Load the stem analysis data stored in the package
Stem analysis data, including stem height (m), age (year), diameter (with and without bark) as well as inner ring diameter (cm) of the ith disc with sequences from the ground to the tip ordered by increasing height, are required inputs.
data(stemdata)
str(stemdata)
#> 'data.frame': 97 obs. of 18 variables:
#> $ No : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ Treeno : int 1 1 1 1 1 1 1 1 1 1 ...
#> $ TreeTH : num 9 9 9 9 9 9 9 9 9 9 ...
#> $ stemheight: num 0 0.5 1.3 1.5 2.5 3.5 4.5 5.5 6.5 7.5 ...
#> $ stemage : int 7 6 5 5 4 4 3 3 2 2 ...
#> $ Dwithbark : num 13.6 11.2 10 10 8.8 7.9 6.5 5.8 4.4 3.1 ...
#> $ Dnobark0 : num 12.3 10.5 9.6 9.3 8.2 7.4 6 5.2 4 2.8 ...
#> $ Dnobark1 : num 11.1 9.1 8 7.8 6.7 5.7 4.5 3.6 2.1 0.7 ...
#> $ Dnobark2 : num 8.3 7.1 6.1 5.8 4.6 3.4 2.2 1.4 0 0 ...
#> $ Dnobark3 : num 6.4 5.4 4.4 3.9 2.4 1.2 0 0 0 0 ...
#> $ Dnobark4 : num 3.7 2.8 1.7 1.4 0 0 0 0 0 0 ...
#> $ Dnobark5 : num 1.2 0.6 0 0 0 0 0 0 0 0 ...
#> $ Dnobark6 : num 0.4 0 0 0 0 0 0 0 0 0 ...
#> $ Dnobark7 : num 0 0 0 0 0 0 0 0 0 0 ...
#> $ Dnobark8 : num 0 0 0 0 0 0 0 0 0 0 ...
#> $ Dnobark9 : num 0 0 0 0 0 0 0 0 0 0 ...
#> $ Dnobark10 : num 0 0 0 0 0 0 0 0 0 0 ...
#> $ Dnobark11 : int 0 0 0 0 0 0 0 0 0 0 ...
Load the parameter data stored in the package
Tree biomass estimated using allometric models [ln(Bi)=βi0+βi1×ln(DBH^2H)] (Xiang et al., 2021). The Parameter data, including parameters a (βi0), b (βi1), and C concentration for each tissues, are optional inputs.
data(parameterdata)
str(parameterdata)
#> 'data.frame': 5 obs. of 4 variables:
#> $ tissues : chr "stem" "branch" "leaf" "root" ...
#> $ a : num -4.29 -6.84 -4.5 -3.43 NA
#> $ b : num 1.006 1.028 0.697 0.705 NA
#> $ Cconcentration: num 0.5 0.5 0.5 0.5 0.5
Load the biomass expansion factor data stored in the package
Total tree biomass estimated using volume model [VWDBEF*(1+R)] (IPCC, 2003). The biomass expansion factor data, including wood density (WD), biomass expansion factor (BEF), root:shoot ratio (R), and C concentration, are optional inputs.
data(BEFdata)
str(BEFdata)
#> 'data.frame': 1 obs. of 4 variables:
#> $ WD : num 0.32
#> $ BEF : num 1.49
#> $ R : num 0.247
#> $ Cconcentration: num 0.5
Application of StemAnalysis package
1. Stem growth analysis
Reconstructed stem growth patterns and calculated DBH and tree height growth trends, and stem volume with bark increment trends using stem analysis data.
stemgrowth <- stemanalysism(xtree = 8, stemgrowth = TRUE, stemdata = stemdata)
knitr::kable(stemgrowth)
0 |
0 |
0.000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
Dnobark9 |
2 |
0.000000 |
0.8387097 |
0.0001815 |
0.0000000 |
0.0000000 |
0.4193548 |
0.4193548 |
0.0000908 |
0.0000908 |
Dnobark8 |
4 |
2.092722 |
2.2000000 |
0.0012679 |
1.0463610 |
0.5231805 |
0.6806452 |
0.5500000 |
0.0005432 |
0.0003170 |
Dnobark7 |
6 |
5.133597 |
4.7875000 |
0.0083903 |
1.5204373 |
0.8555994 |
1.2937500 |
0.7979167 |
0.0035612 |
0.0013984 |
Dnobark6 |
8 |
6.111021 |
6.7200000 |
0.0116100 |
0.4887120 |
0.7638776 |
0.9662500 |
0.8400000 |
0.0016099 |
0.0014513 |
Dnobark5 |
10 |
7.197047 |
8.8258065 |
0.0175425 |
0.5430133 |
0.7197047 |
1.0529032 |
0.8825806 |
0.0029662 |
0.0017542 |
Dnobark4 |
12 |
8.391677 |
10.9076923 |
0.0270252 |
0.5973147 |
0.6993064 |
1.0409429 |
0.9089744 |
0.0047414 |
0.0022521 |
Dnobark3 |
14 |
9.043293 |
11.3333333 |
0.0339367 |
0.3258080 |
0.6459495 |
0.2128205 |
0.8095238 |
0.0034557 |
0.0024240 |
Dnobark2 |
16 |
9.586306 |
12.4461538 |
0.0401266 |
0.2715067 |
0.5991441 |
0.5564103 |
0.7778846 |
0.0030950 |
0.0025079 |
Dnobark1 |
18 |
9.694909 |
12.4666667 |
0.0447629 |
0.0543013 |
0.5386060 |
0.0102564 |
0.6925926 |
0.0023182 |
0.0024868 |
Dnobark0 |
20 |
10.346525 |
12.6000000 |
0.0518571 |
0.3258080 |
0.5173262 |
0.0666667 |
0.6300000 |
0.0035471 |
0.0025929 |
|
2. Estimation Of tree carbon accumulation
If set ‘treecarbon = TRUE’ and provide parameter data, tree biomass and carbon accumulation estimated by allometric models.
allomcarbon <- stemanalysism(xtree = 8, treecarbon = TRUE, stemdata = stemdata, parameterdata = parameterdata)
knitr::kable(allomcarbon)
0 |
0 |
0.000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
Dnobark9 |
2 |
0.000000 |
0.8387097 |
0.0001815 |
0.0000000 |
0.0000000 |
0.4193548 |
0.4193548 |
0.0000908 |
0.0000908 |
Dnobark8 |
4 |
2.092722 |
2.2000000 |
0.0012679 |
1.0463610 |
0.5231805 |
0.6806452 |
0.5500000 |
0.0005432 |
0.0003170 |
Dnobark7 |
6 |
5.133597 |
4.7875000 |
0.0083903 |
1.5204373 |
0.8555994 |
1.2937500 |
0.7979167 |
0.0035612 |
0.0013984 |
Dnobark6 |
8 |
6.111021 |
6.7200000 |
0.0116100 |
0.4887120 |
0.7638776 |
0.9662500 |
0.8400000 |
0.0016099 |
0.0014513 |
Dnobark5 |
10 |
7.197047 |
8.8258065 |
0.0175425 |
0.5430133 |
0.7197047 |
1.0529032 |
0.8825806 |
0.0029662 |
0.0017542 |
Dnobark4 |
12 |
8.391677 |
10.9076923 |
0.0270252 |
0.5973147 |
0.6993064 |
1.0409429 |
0.9089744 |
0.0047414 |
0.0022521 |
Dnobark3 |
14 |
9.043293 |
11.3333333 |
0.0339367 |
0.3258080 |
0.6459495 |
0.2128205 |
0.8095238 |
0.0034557 |
0.0024240 |
Dnobark2 |
16 |
9.586306 |
12.4461538 |
0.0401266 |
0.2715067 |
0.5991441 |
0.5564103 |
0.7778846 |
0.0030950 |
0.0025079 |
Dnobark1 |
18 |
9.694909 |
12.4666667 |
0.0447629 |
0.0543013 |
0.5386060 |
0.0102564 |
0.6925926 |
0.0023182 |
0.0024868 |
Dnobark0 |
20 |
10.346525 |
12.6000000 |
0.0518571 |
0.3258080 |
0.5173262 |
0.0666667 |
0.6300000 |
0.0035471 |
0.0025929 |
|
0 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
2 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
4 |
0.1331846 |
0.0110185 |
0.0539324 |
0.1596293 |
0.3577648 |
0.0665923 |
0.0055092 |
0.0269662 |
0.0798147 |
0.1788824 |
6 |
1.7711820 |
0.1550628 |
0.3239462 |
0.9787521 |
3.2289430 |
0.8855910 |
0.0775314 |
0.1619731 |
0.4893760 |
1.6144715 |
8 |
3.5375253 |
0.3144229 |
0.5231522 |
1.5893409 |
5.9644414 |
1.7687627 |
0.1572114 |
0.2615761 |
0.7946705 |
2.9822207 |
10 |
6.4673847 |
0.5824699 |
0.7946449 |
2.4257489 |
10.2702484 |
3.2336923 |
0.2912350 |
0.3973225 |
1.2128744 |
5.1351242 |
12 |
10.9005432 |
0.9930041 |
1.1409171 |
3.4972747 |
16.5317390 |
5.4502716 |
0.4965020 |
0.5704585 |
1.7486373 |
8.2658695 |
14 |
13.1679477 |
1.2045248 |
1.3005159 |
3.9924912 |
19.6654798 |
6.5839739 |
0.6022624 |
0.6502580 |
1.9962456 |
9.8327399 |
16 |
16.2702026 |
1.4952018 |
1.5058112 |
4.6305166 |
23.9017322 |
8.1351013 |
0.7476009 |
0.7529056 |
2.3152583 |
11.9508661 |
18 |
16.6707835 |
1.5328296 |
1.5314015 |
4.7101201 |
24.4451347 |
8.3353918 |
0.7664148 |
0.7657007 |
2.3550600 |
12.2225673 |
20 |
19.2063346 |
1.7714424 |
1.6892383 |
5.2014306 |
27.8684459 |
9.6031673 |
0.8857212 |
0.8446192 |
2.6007153 |
13.9342230 |
|
If set ‘treecarbon = TRUE’ and provide biomass expansion factor data, tree biomass and carbon accumulation estimated by volume model.
volumecarbon <- stemanalysism(xtree = 8, treecarbon = TRUE, stemdata = stemdata, BEFdata = BEFdata)
knitr::kable(volumecarbon)
0 |
0 |
0.000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
Dnobark9 |
2 |
0.000000 |
0.8387097 |
0.0001815 |
0.0000000 |
0.0000000 |
0.4193548 |
0.4193548 |
0.0000908 |
0.0000908 |
Dnobark8 |
4 |
2.092722 |
2.2000000 |
0.0012679 |
1.0463610 |
0.5231805 |
0.6806452 |
0.5500000 |
0.0005432 |
0.0003170 |
Dnobark7 |
6 |
5.133597 |
4.7875000 |
0.0083903 |
1.5204373 |
0.8555994 |
1.2937500 |
0.7979167 |
0.0035612 |
0.0013984 |
Dnobark6 |
8 |
6.111021 |
6.7200000 |
0.0116100 |
0.4887120 |
0.7638776 |
0.9662500 |
0.8400000 |
0.0016099 |
0.0014513 |
Dnobark5 |
10 |
7.197047 |
8.8258065 |
0.0175425 |
0.5430133 |
0.7197047 |
1.0529032 |
0.8825806 |
0.0029662 |
0.0017542 |
Dnobark4 |
12 |
8.391677 |
10.9076923 |
0.0270252 |
0.5973147 |
0.6993064 |
1.0409429 |
0.9089744 |
0.0047414 |
0.0022521 |
Dnobark3 |
14 |
9.043293 |
11.3333333 |
0.0339367 |
0.3258080 |
0.6459495 |
0.2128205 |
0.8095238 |
0.0034557 |
0.0024240 |
Dnobark2 |
16 |
9.586306 |
12.4461538 |
0.0401266 |
0.2715067 |
0.5991441 |
0.5564103 |
0.7778846 |
0.0030950 |
0.0025079 |
Dnobark1 |
18 |
9.694909 |
12.4666667 |
0.0447629 |
0.0543013 |
0.5386060 |
0.0102564 |
0.6925926 |
0.0023182 |
0.0024868 |
Dnobark0 |
20 |
10.346525 |
12.6000000 |
0.0518571 |
0.3258080 |
0.5173262 |
0.0666667 |
0.6300000 |
0.0035471 |
0.0025929 |
|
0 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
2 |
0.0580816 |
0.0864835 |
0.0213614 |
0.1078449 |
0.0290408 |
0.0432417 |
0.0106807 |
0.0539224 |
4 |
0.4057402 |
0.6041471 |
0.1492243 |
0.7533714 |
0.2028701 |
0.3020736 |
0.0746122 |
0.3766857 |
6 |
2.6848892 |
3.9978000 |
0.9874566 |
4.9852566 |
1.3424446 |
1.9989000 |
0.4937283 |
2.4926283 |
8 |
3.7152064 |
5.5319423 |
1.3663897 |
6.8983320 |
1.8576032 |
2.7659711 |
0.6831949 |
3.4491660 |
10 |
5.6135965 |
8.3586452 |
2.0645854 |
10.4232306 |
2.8067983 |
4.1793226 |
1.0322927 |
5.2116153 |
12 |
8.6480659 |
12.8769701 |
3.1806116 |
16.0575818 |
4.3240330 |
6.4384851 |
1.5903058 |
8.0287909 |
14 |
10.8597316 |
16.1701403 |
3.9940247 |
20.1641650 |
5.4298658 |
8.0850702 |
1.9970123 |
10.0820825 |
16 |
12.8405011 |
19.1195061 |
4.7225180 |
23.8420241 |
6.4202505 |
9.5597531 |
2.3612590 |
11.9210121 |
18 |
14.3241295 |
21.3286289 |
5.2681713 |
26.5968002 |
7.1620648 |
10.6643144 |
2.6340857 |
13.2984001 |
20 |
16.5942791 |
24.7088816 |
6.1030938 |
30.8119754 |
8.2971396 |
12.3544408 |
3.0515469 |
15.4059877 |
|
3. Construction of height-diameter relationship
If set ‘HDmodel = TRUE’, tree height-diameter relationship will be constructed by nonlinear models, and showed the best fit model in a graph.
stemgrowth <- stemanalysism(xtree = 8, HDmodel = TRUE, stemdata = stemdata)
References
IPCC. (2003) Good Practice Guidance for Land Use, Land-Use Change and Forestry; IPCC/IGES: Hayama, Japan.
Newton, P.F. (2019) Examining naturogenic processes and anthropogenic influences on tree growth and development via stem analysis: data processing and computational analytics. Forests 10, 1058.
Salas-Eljatib, C. (2021) A new algorithm for reconstructing the height growth with stem analysis data. Methods Ecol. Evol. 12, 2008–2016.
Xiang, W.H., Li, L.H., Ouyang, S., Xiao, W.F., Zeng, L.X., Chen, L., Lei, P.F., Deng, X.W., Zeng, Y.L., Fang, J.P. & Forrester, D.I. (2021) Effects of stand age on tree biomass partitioning and allometric equations in Chinese fir (Cunninghamia lanceolata) plantations. Eur. J. For. Res. 140, 317–332.