CTFS Tutorials

Source file: http://ctfs.si.edu/ctfsdev/CTFSRPackageNew/files/tutorials/biomass Estimating Above-Ground Biomass in CTFS Plots

ESTIMATING ABOVE-GROUND BIOMASS IN CTFS PLOTS

R. CONDIT

Biomass

CTFS Biomass Package

This package provides a main function and a series of subroutines for calculating above-ground-biomass (AGB) from tree diameter. The base functions can be used with any tables having diameter and wood density for trees. The top-level functions are designed to CTFS R Analytical tables, and to consult the CTFS wood-density database, to fill in the agb column with the biomass (dry weight, in Mg) for each tree and stem.

The top level function is biomass.CTFSdb. It must be passed two tables, one with trees, the other with stems. These are the two standard CTFS R Analytical tables, described in the Data Format section. The function also requires the name of the CTFS wood-density table, available for download at http://ctfs.arnarb.harvard.edu/Public/Datasets.

Please note that the CTFS R Analytical Tables already have the agb column filled in, using this function and the default values for the Chave calculation (in the function Chave.AGB).

0.1. Sample calculations.

Here is a sample with BCI data, using the function CTFSplot (in the Utilities Package) to load the Full table and the Stem table.

  > CTFSplot("bci", "full", census = 1)

  [1] 7

  > CTFSplot("bci", "stem", census = 1)

  [1] 6

  > attach_if_needed("biomass/wsg.ctfs.Rdata")

  [1] 2

  > args(biomass.CTFSdb)

  function (RStemTable, RTreeTable, whichtable = "tree", dbhunit = "mm",
      plot = "bci", wsgdata = wsg.ctfs2, forest = "moist", ht.param = NULL,
      htmodel = predht.asym)
  NULL

  > newtable = biomass.CTFSdb(RStemTable = bci.stem1, RTreeTable = bci.full1, plot = "bci", dbhunit = "mm")
  > head(newtable[, c("sp", "dbh", "agb")])

        sp dbh          agb
  1 swars1  90 0.0426371077
  2 hybapr  35 0.0028894861
  3 aegipa  10 0.0001466688
  4 beilpe  NA 0.0000000000
  5 faraoc  NA 0.0000000000
  6 hybapr  NA 0.0000000000

  > sum(newtable$agb)/50

  [1] 411.0447

To run at Lambir:

  > CTFSplot("lambir", "full", census = 1)

  [1] 4

  > CTFSplot("lambir", "stem", census = 1)

  [1] 3

  > newtable = biomass.CTFSdb(RStemTable = lambir.stem1, RTreeTable = lambir.full1, plot = "lambir", dbhunit = "cm")
  > head(newtable[, c("sp", "dbh", "agb")])

        sp dbh          agb
  1 MEMECO 1.0 0.0001715131
  2 ANI2DI 1.1 0.0001839861
  3 DACRBM 1.3 0.0002307484
  4 DRYOAR 1.3 0.0002705326
  5 CANALL 1.4 0.0002329130
  6 DIOSMI 1.5 0.0003842751

  > sum(newtable$agb)/52

  [1] 490.6625

0.2. CTFS Wood Density table.

The calculations depend on the table wsg.ctfs2 (attached from file wsg.ctfs.Rdata) having values of wood density for many CTFS species taken from the literature (assembled by Chave et al., thanks to Nate Swenson for the data). The table has columns with plot name, species code, and the species’ wood density. One other important column is idlevel, which indicates whether the wood density value comes from the species itself, or from a mean for its genus or family.

To use the table, you must use one of the plot names included in the table and use the CTFS species codes.

The function density.ind matches species code and plot names in a table with species names and returns a vector of one density value per individual. If a species code is not found in the plot, the mean wood density for all other species in the plot is assigned to that species. If the plot is not found, however, nothing is assigned.

  > colnames(wsg.ctfs2)

   [1] "wsg"     "idlevel" "site"    "sp"      "genus"   "species" "genwood" "famwood" "spwood"  "count"   "groupID"

  > head(wsg.ctfs2[, c("site", "sp", "idlevel", "wsg")])

         site       sp idlevel      wsg
  1 amacayacu abarbarb   genus 0.566750
  2 amacayacu abarjupu species 0.585143
  3 amacayacu abutgran   genus 0.450000
  4 amacayacu acalcune   genus 0.300000
  5 amacayacu aegicord   genus 0.656667
  6 amacayacu aegiglan   genus 0.656667

  > data.frame(table(wsg.ctfs2$site))

            Var1 Freq
  1    amacayacu 1663
  2          bci 1089
  3   bukittimah  562
  4      cardoso  116
  5     changbai   53
  6          crc   39
  7       fushan  110
  8       gutian  154
  9   haliburton   18
  10      hawaii   20
  11         hkk  334
  12       ituri  845
  13   khaochong  609
  14       korup  494
  15      lambir 1641
  16   laplanada  241
  17 lienhuachih  145
  18    luquillo  157
  19      manaus  915
  20    mosingto  265
  21   mudumalai   74
  22  nanjenshan  129
  23     palanan  335
  24     pantree 2719
  25       pasoh  937
  26        serc   19
  27   sinharaja  223
  28     wabikon   38
  29      wytham   23
  30        xtbg  469
  31      yasuni 1134

0.3. Allometry.

The function Chave.AGB applies the equations given in Chave (2005, Oecologia) to estimate above-ground biomass (in Mg) for individual diameters. A wood density for each stem (or one single value) must be submitted. Check inside the function to see the parameter values.

  > args(Chave.AGB)

  function (dbh, density = 0.62, htparam = c(41.7, 0.057, 0.748),
      heightmodel = predht.asym, forest = "moist")
  NULL

  > testdbh = c(1, 2, 5, 10, 20, 30, 50, 100, 200)
  > AGBmoist = Chave.AGB(dbh = testdbh, density = 0.61, htparam = NULL, forest = "moist")
  > AGBwet = Chave.AGB(dbh = testdbh, density = 0.61, htparam = NULL, forest = "wet")
  > data.frame(testdbh, AGBwet, AGBmoist)

    testdbh       AGBwet     AGBmoist
  1       1 1.767010e-01 1.362456e-01
  2       2 7.627926e-01 6.607892e-01
  3       5 6.504111e+00 6.572012e+00
  4      10 3.588317e+01 4.073561e+01
  5      20 2.004350e+02 2.556408e+02
  6      30 5.391914e+02 7.361778e+02
  7      50 1.804600e+03 2.684672e+03
  8     100 8.354351e+03 1.396356e+04
  9     200 3.249528e+04 6.102064e+04

0.4. Appendix.

Output created by

  > Sweave("~/programs/CTFSRpackage/biomass.CTFSdb.Rnw")
  > system("htlatex biomass.CTFSdb.tex")
  > system("pdflatex biomass.CTFSdb.tex")
  > system("mv biomass.CTFSdb* ~/programs/CTFSRpackage/biomass")
  > system("mv ~/programs/CTFSRpackage/biomass/biomass.CTFSdb.html ~/programs/CTFSRpackage/biomass/index.html")
  > system("cp ~/programs/CTFSRpackage/biomass/* /var/www/Public/CTFS_RPackage/files/tutorials/biomass")