Appendix C — Additional Reading
Allometric Uncertainty:
- Aholoukpè, H. N. S., Dubos, B., Deleporte, P., Flori, A., Amadji, L. G., Chotte, J.-L., & Blavet, D. (2018). Allometric equations for estimating oil palm stem biomass in the ecological context of benin, west africa. Trees, 32(6), 1669–1680.
- Andersen, H.-E., Reutebuch, S. E., & McGaughey, R. J. (2006). A rigorous assessment of tree height measurements obtained using airborne lidar and conventional field methods. Canadian Journal of Remote Sensing, 32(5), 355–366. https://doi.org/10.5589/m06-030
- Baskerville, G. (1972). Use of logarithmic regression in the estimation of plant biomass. Canadian Journal of Forest Research, 2(1), 49–53.
- Duncanson, L., Disney, M., Armston, J., Nickeson, J., Minor, D., & Camacho, F. (2021). Aboveground woody biomass product validation good practices protocol. https://doi.org/10.5067/DOC/CEOSWGCV/LPV/AGB.001
- Dutcă, I., Stăncioiu, P. T., Abrudan, I. V., & Ioraș, F. (2018). Using clustered data to develop biomass allometric models: The consequences of ignoring the clustered data structure. PloS One, 13(8), e0200123.
- Martin, A. (2022). Accuracy and precision in urban forestry tools for estimating total tree height. Arboric. Urban For, 48(6), 319–332.
- Martı́nez-Sánchez, J. L., Martı́nez-Garza, C., Cámara, L., & Castillo, O. (2020). Species-specific or generic allometric equations: Which option is better when estimating the biomass of mexican tropical humid forests? Carbon Management, 11(3), 241–249.
- McRoberts, R. E., & Westfall, J. A. (2016). Propagating uncertainty through individual tree volume model predictions to large-area volume estimates. Annals of Forest Science, 73(ue 3), 625–633. https://doi.org/10.1007/s13595-015-0473-x
- Nickless, A., Scholes, R. J., & Archibald, S. (2011). A method for calculating the variance and confidence intervals for tree biomass estimates obtained from allometric equations. South African Journal of Science, 107(5), 1–10.
- Ojoatre, S., Zhang, C., Hussin, Y. A., Kloosterman, H. E., & Ismail, M. H. (2019). Assessing the uncertainty of tree height and aboveground biomass from terrestrial laser scanner and hypsometer using airborne LiDAR data in tropical rainforests. IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing, 12(10), 4149–4159.
- Parresol, B. R. (1993). Modeling multiplicative error variance: An example predicting tree diameter from stump dimensions in baldcypress. Forest Science, 39(4), 670–679.
- Picard, N., Bosela, F. B., & Rossi, V. (2015). Reducing the error in biomass estimates strongly depends on model selection. Annals of Forest Science, 72(6), 811–823. https://doi.org/10.1007/s13595-014-0434-9
- Picard N., Saint-André L., Henry M. 2012. Manual for building tree volume and biomass allometric equations: from field measurement to prediction. Food and Agricultural Organization of the United Nations, Rome, and Centre de Coopération Internationale en Recherche Agronomique pour le Développement, Montpellier, 215 pp.
- Ploton, P., Mortier, F., Réjou-Méchain, M., Barbier, N., Picard, N., Rossi, V., Dormann, C., Cornu, G., Viennois, G., Bayol, N., & al., et. (2020). Spatial validation reveals poor predictive performance of large-scale ecological mapping models. Nature Communications, 11(1), 4540.
- Roxburgh, S., Paul, K., Clifford, D., England, J., & Raison, R. (2015). Guidelines for constructing allometric models for the prediction of woody biomass: How many individuals to harvest? Ecosphere (Washington, D.C), 6(3), 1–27.
- Shang, Y., Xia, Y., Ran, X., Zheng, X., Ding, H., & Fang, Y. (2025). Allometric equations for aboveground biomass estimation in natural forest trees: Generalized or species-specific? Diversity, 17(7), 493.
- Vorster, A. G., Evangelista, P. H., Stovall, A. E., & Ex, S. (2020). Variability and uncertainty in forest biomass estimates from the tree to landscape scale: The role of allometric equations. Carbon Balance and Management, 15(1), 8.
- Wayson, C. A., Johnson, K. D., Cole, J. A., Olguín, M. I., Carrillo, O. I., & Birdsey, R. A. (2015). Estimating uncertainty of allometric biomass equations with incomplete fit error information using a pseudo-data approach: methods. Annals of Forest Science, 72(6), 825–834.
- White, G. W., Yamamoto, J. K., Elsyad, D. H., Schmitt, J. F., Korsgaard, N. H., Hu, J. K., Gaines III, G. C., Frescino, T. S., & McConville, K. S. (2025). Small area estimation of forest biomass via a two-stage model for continuous zero-inflated data. Canadian Journal of Forest Research, 55, 1–19.
- Yanai, R. D., Battles, J. J., Richardson, A. D., Blodgett, C. A., Wood, D. M., & Rastetter, E. B. (2010). Estimating uncertainty in ecosystem budget calculations. Ecosystems (New York, N.Y.), 13(ue 2), 239–248. https://doi.org/10.1007/s10021-010-9315-8
- Yokelson, R.J., et al. (2013). Coupling field and laboratory measurements to estimate the emission factors of identified and unidentified trace gases for prescribed fires. Atmospheric Chemistry and Physics, 13, 89-116.
- Zapata-Cuartas, M., Sierra, C. A., & Alleman, L. (2012). Probability distribution of allometric coefficients and bayesian estimation of aboveground tree biomass. Forest Ecology and Management, 277, 173–179.
Emission Factor Uncertainty:
- Andreae, M.O. (2019). Emission of trace gases and aerosols from biomass burning – an updated assessment. Atmospheric Chemistry and Physics, 19, 8523-8546. doi:10.5194/acp-19-8523-2019
- Brown, J.K. (1974). Handbook for inventorying downed woody material. USDA Forest Service General Technical Report INT-16.
- IPCC. (2019). 2019 Refinement to the 2006 IPCC Guidelines for National Greenhouse Gas Inventories (Agriculture, Forestry and Other Land Use, Vol. 4). Intergovernmental Panel on Climate Change. https://www.ipcc-nggip.iges.or.jp/public/2019rf/vol4.html
- IPCC. (2006). 2006 IPCC Guidelines for National Greenhouse Gas Inventories, Volume 4: Agriculture, Forestry and Other Land Use. Intergovernmental Panel on Climate Change.
- Köhler, P., & Huth, A. (2010). Towards ground-truthing of spaceborne estimates of above-ground life biomass and leaf area index in tropical rain forests. Biogeosciences (Online), 7(8), 2531–2543.
- Pelletier, J., Martin, D., & Potvin, C. (2013). REDD+ emissions estimation and reporting: Dealing with uncertainty. Environmental Research Letters, 8(3), 034009.
- Pelletier, J., Busch, J., & Potvin, C. (2015). Addressing uncertainty upstream or downstream of accounting for emissions reductions from deforestation and forest degradation. Climatic Change, 130(4), 635-648
- Pelletier, N., Thiagarajan, A., Durnin-Vermette, F., Liang, B. C., Choo, D., Cerkowniak, D., … & VandenBygaart, A. J. (2025). Approximate Bayesian inference for calibrating the IPCC tier-2 steady-state soil organic carbon model for Canadian croplands using long-term experimental data. Environmental Modelling & Software, 190, 106481
- Seiler, W., & Crutzen, P.J. (1980). Estimates of gross and net fluxes of carbon between the biosphere and the atmosphere from biomass burning. Climatic Change, 2(3), 207-247.
- van Leeuwen, T.T., & van der Werf, G.R. (2011). Spatial and temporal variability in the ratio of trace gases emitted from biomass burning. Atmospheric Chemistry and Physics, 11, 3611-3629.
Activity Data Uncertainty:
- Butler, B. J., Sass, E. M., Gamarra, J. G., Campbell, J. L., Wayson, C., Olguín, M., Carrillo, O., & Yanai, R. D. (2024). Uncertainty in REDD+ carbon accounting: A survey of experts involved in REDD+ reporting. Carbon Balance and Management, 19(1), 22.
- Chen, Q., Laurin, G. V., & Valentini, R. (2015). Uncertainty of remotely sensed aboveground biomass over an African tropical forest: Propagating errors from trees to plots to pixels. Remote Sensing of Environment, 160, 134–143. https://doi.org/10.1016/j.rse.2015.01.009
- GOFC-GOLD (2016). Integration of remote-sensing and ground-based observations for estimation of emissions and removals of greenhouse gases in forests: Methods and Guidance from the Global Forest Observations Initiative. Edition 2.0. Rome: Food and Agriculture Organization.
- GOFC-GOLD (2016). A sourcebook of methods and procedures for monitoring and reporting anthropogenic greenhouse gas emissions and removals associated with deforestation, gains and losses of carbon stocks in forests remaining forests, and forestation. GOFC-GOLD Report version COP22-1. Alberta, Canada: GOFC-GOLD Land Cover Project Office.
- Köhler, P., & Huth, A. (2010). Towards ground-truthing of spaceborne estimates of above-ground life biomass and leaf area index in tropical rain forests. Biogeosciences, 7(8), 2531–2543.
- Olofsson, P., Foody, G.M., Herold, M., Stehman, S.V., Woodcock, C.E., & Wulder, M.A. (2014). Good practices for estimating area and assessing accuracy of land change. Remote Sensing of Environment, 148, 42-57.
- Pontius Jr., R.G., & Millones, M. (2011). Death to Kappa: birth of quantity disagreement and allocation disagreement for accuracy assessment. International Journal of Remote Sensing, 32(15), 4407-4429.
- Sheng, J., Zhou, W., & De Sherbinin, A. (2018). Uncertainty in estimates, incentives, and emission reductions in REDD+ projects. International Journal of Environmental Research and Public Health, 15(7), 1544.
- Stehman, S.V. (2014). Estimating area and map accuracy for stratified random sampling when the strata are different from the map classes. International Journal of Remote Sensing, 35(13), 4923-4939.
Monte Carlo Methods:
- Holdaway, R. J., McNeill, S. J., Mason, N. W. H., & Carswell, F. E. (2014). Propagating uncertainty in plot-based estimates of forest carbon stock and carbon stock change. Ecosystems (New York, N.Y.), 17(ue 4), 627–640. https://doi.org/10.1007/s10021-014-9749-5
- Keller, M., Palace, M., & Hurtt, G. (2001). Biomass estimation in the tapajos national forest, brazil. Forest Ecology and Management, 154(ue 3), 371–382.
- Molto, Q., Rossi, V., & Blanc, L. (2013). Error propagation in biomass estimation in tropical forests. Methods in Ecology and Evolution, 4(2), 175–183. https://doi.org/10.1111/j.2041-210x.2012.00266.x
- Yanai, R. D., Battles, J. J., Richardson, A. D., Blodgett, C. A., Wood, D. M., & Rastetter, E. B. (2010). Estimating uncertainty in ecosystem budget calculations. Ecosystems, 13(2), 239–248. https://doi.org/10.1007/s10021-010-9315-8
Biostatistical Theory:
- Buchanan, M. (2000). Ubiquity: Why Catastrophes Happen. Three Rivers Press.
- Mandelbrot, B. B., & Hudson, R. L. (2004). The Misbehavior of Markets: A Fractal View of Financial Turbulence. Basic Books.
- Strogatz, S. H. (2003). Sync: How Order Emerges from Chaos in the Universe, Nature, and Daily Life. Hyperion.
- Taleb, N. N. (2007). The Black Swan: The Impact of the Highly Improbable. Random House.
IPCC Guidelines & Key Sections
| Resource | Description | Source |
|---|---|---|
| IPCC 2006, Vol. 4 | ||
| Ch.2 Generic Methodologies | Eq.2.9 Calculation of biomass retention & growth post-conversion | Link |
| Ch.3 Representation of Lands | S.3.2 Six land-use categories recommended for estimating GHG emissions from LULC | Link |
| IPCC 2019, Vol. 4 | ||
| Ch.2 Generic Methodologies | Eq 2.25 Annual SOC stock change in mineral soils | Link |
| Tbl.2.3 Default reference condition of SOC stocks to soil & climate | Link | |
| Ch.3 Representation of Lands | Tb.3.1 List of IPCC categories: land, climate, soil, mgt, activity | Link |
| Pg.3.1 Tier 1 sampling approaches decision tree | Link | |
| Tb.3.6X Approach 1-3 to IPCC land-use classification & sampling | Link | |
| Tb.3.4 Approach 2 land change matrix to avoid double-counting | Link | |
| Pg.3A5 Climate zone delineation & updated datasets | Link | |
| Tb.3A.1 Global land-cover datasets listed by IPCC in 2017 | Link | |
| Ch.4 Forest Land | Tb.4.4 R:S below to above-ground biomass ratio by climate & region | Link |
| Ch.5 Cropland | Tb.5.5 Relative stock change factors for mgt. activity in croplands | Link |
| Tb.5.8 Default AGB carbon stocks retained on cropland in year 1 | Link | |
| Tb.5.10 Soil stock change factors for conversion to cropland | Link | |
| Ch.6 Grasslands | Tbl 6.4 Default biomass stocks on converted grasslands | Link |
| Ch.9 Other Land | Ch.9: Near-zero SOC retention assigned to mining in “Other Lands” | Link |
| IPCC 2013 Wetland Supplement | Tb.1.1 Look-up table for wetlands by vegetation and soil type | Link |
| IPCC 2023 AR6 Updated GWPs | Tb.7.15 Updated GWPs for N₂O and fossil-specific CH₄ *** | Link |
Combustion Emissions
In this chapter, we derive estimates and examples using equation 2.27 (IPCC, 2019):
\[ E_{fire} = A \times M_B \times C_f \times G_{ef} \times 10^{-3} \]
Where:
Efire: Fire emissions (tonnes CO2-equivalent)
A: Burned area (hectares)
MB: Biomass density (tonnes dry matter ha-1)
Cf: Combustion factor (fraction of biomass consumed)
Gef: Emission factor (g gas per kg dry matter burned)
10-3: Unit conversion factor
Uncertainty propagates through this chain, meaning small uncertainties in each parameter compound to large total uncertainty.
Sources of Uncertainty
Three primary components:
Default value variance: IPCC Table 2.5 provides emission factors with confidence intervals typically ±30-50%
Combustion completeness: The combustion factor (Cf) varies with:
Fire intensity and duration
Fuel moisture content
Weather conditions (temperature, humidity, wind)
Fuel load and structure
Gas-specific variability:
CH4: ±30-40% (incomplete combustion, temperature-dependent)
N2O: ±50-60% (nitrogen content, soil conditions)
CO2: ±5% (stoichiometric, relatively invariant)
Typical contribution to total uncertainty: Emission factors contribute 20-30% of total REDD+ uncertainty when properly quantified (often underestimated when omitted from reporting).
IPCC Default Factors
The IPCC 2019 Refinement Table 2.5 provides emission factors stratified by:
Vegetation type:
Tropical forest
Savanna/grassland
Peatland (separate chapter in this ebook series)
Temperate forest
Boreal forest
Gas species:
CO2 (carbon dioxide)
CH4 (methane)
N2O (nitrous oxide)
CO (carbon monoxide)
NOx (nitrogen oxides)
NMHC (non-methane hydrocarbons)
Fire type:
Flaming combustion (high intensity)
Smoldering combustion (low intensity)
Mixed (typical field conditions)
Tropical Emission Factors
IPCC 2019 default values for tropical forests:
{r} #| echo: false #| label: tbl-ipcc-ef #| tbl-cap: “IPCC 2019 default emission factors for tropical forest fires”
library(tidyverse) library(kableExtra)
ipcc_ef <- tribble( ~Gas, ~Mean_g_kg, ~Lower_CI, ~Upper_CI, ~Uncertainty_pct, ~Combustion_Type,
# CO2 “CO₂”, 1580, 1510, 1650, “±4.4%”, “Mixed”, “CO₂”, 1703, 1650, 1756, “±3.1%”, “Flaming”, “CO₂”, 1390, 1310, 1470, “±5.8%”, “Smoldering”,
# CH4 “CH₄”, 6.8, 4.8, 8.8, “±29.4%”, “Mixed”, “CH₄”, 4.7, 3.2, 6.2, “±31.9%”, “Flaming”, “CH₄”, 12.8, 8.9, 16.7, “±30.5%”, “Smoldering”,
# N2O “N₂O”, 0.20, 0.07, 0.33, “±65.0%”, “Mixed”, “N₂O”, 0.16, 0.05, 0.27, “±68.8%”, “Flaming”, “N₂O”, 0.29, 0.10, 0.48, “±65.5%”, “Smoldering”,
# CO “CO”, 93, 71, 115, “±23.7%”, “Mixed”, “CO”, 65, 48, 82, “±26.2%”, “Flaming”, “CO”, 149, 114, 184, “±23.5%”, “Smoldering”,
# NOx “NO_x”, 3.9, 1.0, 6.8, “±74.4%”, “Mixed”, “NO_x”, 3.4, 0.8, 6.0, “±76.5%”, “Flaming”, “NO_x”, 4.9, 1.3, 8.5, “±73.5%”, “Smoldering” )
knitr::kable(ipcc_ef, digits = 1, col.names = c(“Gas”, “Mean”, “Lower 95% CI”, “Upper 95% CI”, “Uncertainty”, “Type”), align = “lrrrrr”, format=“simple”) # kable_styling(bootstrap_options = c(“striped”, “condensed”), full_width = FALSE), column_spec(1, bold = TRUE)row_spec(0, bold = TRUE, background = “#f0f0f0”)
Key observations:
CO2 is relatively precise (±3-6%): Stoichiometric relationship, minimal variation
CH4 is moderately uncertain (±30-32%): Temperature and oxygen availability effects
N2O is highly uncertain (±65-69%): Nitrogen content and combustion temperature
Combustion type matters: Smoldering produces more CH4 and N2O (incomplete combustion)
Converting to CO2-e
Global Warming Potentials (GWP-100):
CO2: 1 (reference gas)
CH4: 28 (IPCC AR6, 100-year horizon)
N2O: 265 (IPCC AR6, 100-year horizon)
Total emissions calculation:
\[ E_{total} = E_{CO_2} + 28 \times E_{CH_4} + 265 \times E_{N_2O} \]
Example: 1 tonne dry matter burned in tropical forest:
{r} #| echo: false #| eval: false #| label: tbl-co2e-example #| tbl-cap: “CO₂-equivalent emissions from 1 tonne biomass burned”
co2e_example <- tribble( ~Gas, ~EF_g_kg, ~Emissions_kg, ~GWP, ~CO2e_kg, ~Percent_Total, “CO₂”, 1580, 1580, 1, 1580, “98.3%”, “CH₄”, 6.8, 6.8, 28, 190.4, “1.2%”, “N₂O”, 0.20, 0.20, 265, 53.0, “0.3%”, “Total”, “—”, “—”, “—”, “1823.4”, “100%” )
kable(co2e_example, digits = 1, col.names = c(“Gas”, “EF (g/kg)”, “Emissions (kg)”, “GWP-100”, “CO₂e (kg)”, “% Total”), align = “lrrrrr”), format=“simple”) # kable_styling(bootstrap_options = c(“striped”, “condensed”), full_width = FALSE),row_spec(4, bold = TRUE, background = “#e6f2ff”)
Strategic insight: Despite high uncertainty in N2O (±65%), it contributes only 0.3% to total CO2e. CH4 and CO2 dominate (99.7%), so uncertainty reduction efforts should prioritize these gases.
Combustion Factors
Definition and Importance
Combustion factor (Cf): Fraction of available biomass actually consumed during fire
\[ C_f = \frac{\text{Biomass burned}}{\text{Total biomass available}} \]
Typical ranges:
Tropical forest fires: 0.4-0.6 (40-60% consumption)
Savanna fires: 0.8-0.95 (80-95% consumption)
Peatland fires: 0.3-0.5 (30-50%, depends on depth)
Critical distinction: Cf is not an emission factor. Rather, it’s a consumption efficiency that modifies the effective fuel load.
Combustion Completeness
- Fuel moisture content:
{r} #| label: fig-moisture-cf #| fig-cap: “Relationship between fuel moisture and combustion factor” #| echo: false #| warning: false
library(ggplot2)
Simulate relationship
moisture_cf <- data.frame( moisture_pct = seq(10, 60, by = 2) ) %>% mutate( cf_mean = 0.9 * exp(-0.025 * moisture_pct), cf_lower = cf_mean - 0.05, cf_upper = cf_mean + 0.05 )
ggplot(moisture_cf, aes(x = moisture_pct, y = cf_mean)) + geom_ribbon(aes(ymin = cf_lower, ymax = cf_upper), fill = “steelblue”, alpha = 0.3) + geom_line(color = “darkblue”, size = 1.2) + geom_hline(yintercept = 0.5, linetype = “dashed”, color = “red”) + annotate(“text”, x = 50, y = 0.52, label = “Typical tropical forest (50%)”, color = “red”, hjust = 0) + labs( title = “Fuel Moisture Reduces Combustion Completeness”, subtitle = “Exponential decay relationship with high uncertainty at intermediate moisture”, x = “Fuel Moisture Content (%)”, y = “Combustion Factor (fraction)” ) + scale_y_continuous(limits = c(0, 1), breaks = seq(0, 1, 0.2)) + theme_minimal() + theme( plot.title = element_text(face = “bold”, size = 14), plot.subtitle = element_text(size = 10, color = “gray40”) )
Key threshold: Below 30% moisture, combustion is nearly complete (Cf > 0.8). Above 40% moisture, combustion is incomplete and variable (Cf = 0.3-0.6).
- Fire intensity and residence time:
Fire Type
Temperature (°C)
Duration
Cf
CH4/CO2 Ratio
High-intensity crown fire
800-1200
Minutes
0.6-0.8
Low (0.01-0.02)
Moderate surface fire
400-700
Hours
0.4-0.6
Moderate (0.03-0.05)
Low-intensity smoldering
200-400
Days
0.3-0.5
High (0.08-0.12)
Fire intensity effects on combustion factor and emission ratios
- Fuel load and structure:
Fine fuels (leaves, twigs <6mm): Nearly complete combustion (Cf > 0.9)
Medium fuels (branches 6-25mm): Partial combustion (Cf = 0.5-0.7)
Coarse fuels (logs >25mm): Incomplete combustion (Cf = 0.2-0.4)
Standing dead wood: Minimal combustion (Cf < 0.1)
Implication for uncertainty: Total Cf is a weighted average across fuel classes, each with different uncertainty ranges.
Field Measurement Protocols
Pre- and post-fire sampling approach:
Step 1: Establish plots before fire (or immediately after, using unburned reference):
Pre-fire biomass estimation
pre_fire_survey <- function(plot_size_m2 = 400) { # Measure all fuel components fuel_components <- data.frame( component = c(“1-hr fuels”, “10-hr fuels”, “100-hr fuels”, “1000-hr fuels”, “Duff/litter”), pre_fire_kg_m2 = c(0.5, 0.8, 1.2, 2.5, 1.0) # Example values )
return(fuel_components) }
Step 2: Measure post-fire residual biomass:
Post-fire residual measurement
post_fire_survey <- function(plot_size_m2 = 400) { fuel_components <- data.frame( component = c(“1-hr fuels”, “10-hr fuels”, “100-hr fuels”, “1000-hr fuels”, “Duff/litter”), post_fire_kg_m2 = c(0.05, 0.15, 0.50, 1.80, 0.20) # Residual )
return(fuel_components) }
Step 3: Calculate combustion factor:
Calculate combustion factor by component
calculate_combustion_factor <- function(pre_fire, post_fire) { results <- pre_fire %>% left_join(post_fire, by = “component”) %>% mutate( biomass_consumed = pre_fire_kg_m2 - post_fire_kg_m2, cf = biomass_consumed / pre_fire_kg_m2, cf_uncertainty = sqrt((0.1 * pre_fire_kg_m2)^2 + (0.1 * post_fire_kg_m2)^2) / pre_fire_kg_m2 )
# Weighted average total_cf <- sum(results\(biomass_consumed) / sum(results\)pre_fire_kg_m2)
return(list( by_component = results, total_cf = total_cf )) }
Example usage
pre <- pre_fire_survey() post <- post_fire_survey() cf_results <- calculate_combustion_factor(pre, post)
cat(sprintf(“Total combustion factor: %.2f”, cf_results$total_cf)) # Output: Total combustion factor: 0.53
Typical uncertainty: Field measurements of Cf have ±15-25% uncertainty (95% CI) due to: - Spatial variability in fire behavior (30-50% of total) - Measurement error in pre/post biomass (20-30%) - Plot representativeness (20-30%)
Gas-Specific Emission Factors
CO2 Emissions:
Stoichiometric basis: CO2 production is relatively invariant because it’s determined by carbon content of biomass:
\[ G_{ef,CO_2} = C_{content} \times \frac{44}{12} \times 1000 \]
Where: - Ccontent: Carbon fraction of dry biomass (typically 0.47-0.50) - 44/12: Molecular weight ratio (CO2/C) - 1000: Conversion to g/kg
Example calculation:
\[ G_{ef,CO_2} = 0.48 \times 3.67 \times 1000 = 1762 \text{ g/kg} \]
IPCC default: 1580 g/kg (±4.4%) for tropical forests
Why low uncertainty? - Carbon content relatively invariant (0.45-0.50, ±5%) - Complete oxidation in flaming combustion - Well-established stoichiometry
Strategic implication: CO2 uncertainty is not a priority target for reduction—focus on CH4 and combustion completeness instead.
CH4 Emissions:
Modified Combustion Efficiency (MCE): Ratio of CO2 to total carbon emitted:
\[ MCE = \frac{[CO_2]}{[CO_2] + [CO]} \]
Relationship to CH4:
\[ G_{ef,CH_4} = \alpha \times (1 - MCE)^\beta \]
Where α and β are empirically derived constants (typically α = 200-300, β = 1.5-2.0).
MCE ranges:
Flaming (high intensity): MCE > 0.95 → Gef,CH4 = 4-6 g/kg
Mixed (typical field): MCE = 0.90-0.95 → Gef,CH4 = 6-9 g/kg
Smoldering (low oxygen): MCE < 0.90 → Gef,CH4 = 10-15 g/kg
{r} #| label: fig-mce-ch4 #| fig-cap: “Modified Combustion Efficiency controls CH₄ emissions” #| echo: false #| warning: false
MCE vs CH4 relationship
mce_ch4 <- data.frame( mce = seq(0.85, 0.98, by = 0.005) ) %>% mutate( ch4_gkg = 250 * (1 - mce)^1.8, combustion_type = case_when( mce > 0.95 ~ “Flaming”, mce > 0.90 ~ “Mixed”, TRUE ~ “Smoldering” ) )
ggplot(mce_ch4, aes(x = mce, y = ch4_gkg, color = combustion_type)) + geom_line(size = 1.5) + geom_hline(yintercept = 6.8, linetype = “dashed”, color = “gray30”) + annotate(“text”, x = 0.87, y = 7.5, label = “IPCC default (6.8 g/kg)”, color = “gray30”, size = 3.5) + scale_color_manual( values = c(“Flaming” = “#d73027”, “Mixed” = “#fee08b”, “Smoldering” = “#1a9850”), name = “Combustion Type” ) + labs( title = “Modified Combustion Efficiency Controls CH₄ Production”, subtitle = “Higher MCE (complete combustion) → Lower CH₄ emissions”, x = “Modified Combustion Efficiency (MCE)”, y = “CH₄ Emission Factor (g/kg)” ) + theme_minimal() + theme( legend.position = “bottom”, plot.title = element_text(face = “bold”, size = 14) )
Field measurement: Portable FTIR (Fourier Transform Infrared Spectroscopy) can measure MCE and CH4 in real-time during fires.
Cost-benefit trade-off: Field measurement of CH4 costs $50-100k per campaign. Using IPCC defaults (±30%) is often more cost-effective than reducing uncertainty to ±15% at high cost.
N2O Emissions:
N2O production depends on:
Nitrogen content of fuel: Varies by vegetation type
Legume-rich forests: 1.5-2.5% N
Non-legume forests: 0.5-1.0% N
Grasses/savanna: 0.8-1.5% N
Combustion temperature:
Low temp (200-400°C): Incomplete N oxidation → More N2O
High temp (800-1200°C): Complete oxidation → NOx, less N2O
Soil nitrogen:
Smoldering fires heat soil → Release soil N as N2O
Can double total N2O emissions vs. aboveground only
IPCC default uncertainty: ±65% (highest of all major gases)
Strategic assessment: Despite high uncertainty (±65%), N2O contributes only 0.3-0.5% of total CO2e. Not a priority for uncertainty reduction unless:
Peatland fires (soil contribution large)
Legume-dominated forests (high N content)
Policy focus on non-CO2 gases
Monte Carlo Simulation
Error Propagation
Objective: Quantify combined uncertainty from emission factors and combustion completeness using Monte Carlo simulation (n=10,000, ART-TREES requirement).
Step 1: Define parameter distributions
{r} #| label: mc-ef-setup #| eval: false #| code-summary: “Define probability distributions for emission factor parameters”
library(tidyverse) library(mc2d)
Set seed for reproducibility
set.seed(42)
Number of Monte Carlo iterations
n_sim <- 10000
Parameter distributions (from IPCC 2019)
ef_params <- list( # CO2: Normal distribution (low uncertainty) co2_mean = 1580, co2_sd = (1650 - 1510) / (2 * 1.96), # Convert 95% CI to SD
# CH4: Log-normal distribution (moderate uncertainty, right-skewed) ch4_mean = 6.8, ch4_sd = (8.8 - 4.8) / (2 * 1.96),
# N2O: Log-normal distribution (high uncertainty) n2o_mean = 0.20, n2o_sd = (0.33 - 0.07) / (2 * 1.96),
# Combustion factor: Beta distribution (bounded 0-1) cf_mean = 0.50, cf_sd = 0.10 )
Sample from distributions
mc_samples <- data.frame( iteration = 1:n_sim,
# CO2: Normal (most emissions are CO2, so normal is appropriate) ef_co2 = rnorm(n_sim, mean = ef_params\(co2_mean, sd = ef_params\)co2_sd),
# CH4: Log-normal (right-skewed, non-negative) ef_ch4 = rlnorm(n_sim, meanlog = log(ef_params\(ch4_mean^2 / sqrt(ef_params\)ch4_sd^2 + ef_params\(ch4_mean^2)), sdlog = sqrt(log(1 + (ef_params\)ch4_sd / ef_params$ch4_mean)^2))),
# N2O: Log-normal (high uncertainty, non-negative) ef_n2o = rlnorm(n_sim, meanlog = log(ef_params\(n2o_mean^2 / sqrt(ef_params\)n2o_sd^2 + ef_params\(n2o_mean^2)), sdlog = sqrt(log(1 + (ef_params\)n2o_sd / ef_params$n2o_mean)^2))),
# Combustion factor: Beta distribution (bounded 0-1) cf = rbeta(n_sim, shape1 = ((1 - ef_params\(cf_mean) / ef_params\)cf_sd^2 - 1 / ef_params\(cf_mean) * ef_params\)cf_mean^2, shape2 = ((1 - ef_params\(cf_mean) / ef_params\)cf_sd^2 - 1 / ef_params\(cf_mean) * ef_params\)cf_mean * (1 - ef_params$cf_mean)) )
Check distributions
summary(mc_samples)
Step 2: Calculate CO2-equivalent emissions
{r} #| label: mc-ef-calculate #| eval: false #| code-summary: “Calculate total emissions with GWP conversion”
GWP-100 values (IPCC AR6)
GWP_CH4 <- 28 GWP_N2O <- 265
Calculate emissions per tonne biomass (1000 kg)
mc_results <- mc_samples %>% mutate( # Apply combustion factor to all emissions biomass_burned_kg = 1000 * cf,
# Gas emissions (kg)
co2_kg = biomass_burned_kg * ef_co2 / 1000,
ch4_kg = biomass_burned_kg * ef_ch4 / 1000,
n2o_kg = biomass_burned_kg * ef_n2o / 1000,
# Convert to CO2-equivalent
co2e_from_co2 = co2_kg * 1,
co2e_from_ch4 = ch4_kg * GWP_CH4,
co2e_from_n2o = n2o_kg * GWP_N2O,
# Total CO2-equivalent
total_co2e_kg = co2e_from_co2 + co2e_from_ch4 + co2e_from_n2o
)
Summary statistics
emission_summary <- mc_results %>% summarise( mean_co2e = mean(total_co2e_kg), sd_co2e = sd(total_co2e_kg), ci_lower = quantile(total_co2e_kg, 0.05), ci_upper = quantile(total_co2e_kg, 0.95), hw_90 = (ci_upper - ci_lower) / 2, uncertainty_pct = hw_90 / mean_co2e * 100 )
cat(sprintf(“Mean total emissions: %.1f kg CO2e per tonne biomass”, emission_summary\(mean_co2e)) cat(sprintf("90%% CI: [%.1f, %.1f] kg CO2e\n", emission_summary\)ci_lower, emission_summary\(ci_upper)) cat(sprintf("Uncertainty: %.1f%%\n", emission_summary\)uncertainty_pct))
Expected output:
Mean total emissions: 911.3 kg CO2e per tonne biomass 90% CI: [702.8, 1095.4] kg CO2e Uncertainty: 21.5%
Step 3: Visualize uncertainty contributions
{r} #| label: fig-ef-uncertainty #| fig-cap: “Uncertainty contributions from emission factor components” #| eval: false #| code-summary: “Variance decomposition visualization”
Decompose variance contributions
variance_contrib <- mc_results %>% summarise( var_total = var(total_co2e_kg), var_co2 = var(co2e_from_co2), var_ch4 = var(co2e_from_ch4), var_n2o = var(co2e_from_n2o), var_cf = var(biomass_burned_kg * mean(ef_co2) / 1000) # CF contribution ) %>% mutate( pct_co2 = var_co2 / var_total * 100, pct_ch4 = var_ch4 / var_total * 100, pct_n2o = var_n2o / var_total * 100, pct_cf = var_cf / var_total * 100 ) %>% select(starts_with(“pct_”)) %>% pivot_longer(everything(), names_to = “source”, values_to = “pct”) %>% mutate(source = str_remove(source, “pct_”), source = toupper(source))
Tornado diagram
ggplot(variance_contrib, aes(x = reorder(source, pct), y = pct)) + geom_col(fill = “steelblue”, width = 0.7) + geom_text(aes(label = sprintf(“%.1f%%”, pct)), hjust = -0.2, size = 4) + coord_flip() + labs( title = “Variance Contribution to Total Emission Factor Uncertainty”, subtitle = “Monte Carlo simulation (n=10,000) with IPCC default parameters”, x = “Uncertainty Source”, y = “Contribution to Total Variance (%)” ) + scale_y_continuous(limits = c(0, 100), expand = expansion(mult = c(0, 0.1))) + theme_minimal() + theme( panel.grid.major.y = element_blank(), plot.title = element_text(face = “bold”, size = 14) )
Typical variance contributions:
Combustion factor: 60-70% (largest contributor)
CO2 emission factor: 20-25%
CH4 emission factor: 8-12%
N2O emission factor: 1-3%
Strategic insight: Cf dominates uncertainty. Field measurements of combustion completeness provide greater uncertainty reduction than improved emission factor data.
IPCC Tiered Reductions
Tier 1: IPCC Defaults
Source: IPCC 2019 Refinement Table 2.5
Uncertainty: ±30-50% (combined)
Cost: $0 (free, publicly available)
Applicability: Universal, conservative
When to use:
Initial REDD+ participation
Low fire activity (<5% of total emissions)
Limited financial resources
Conservative baseline establishment
Tier 2: Country-Specific Measurements
Source: National field campaigns, FTIR measurements
Uncertainty: ±15-25% (reduced through local data)
Cost: $50-100k per campaign
Applicability: Jurisdiction-specific
Requirements:
Minimum 30 fire events measured
Stratified by vegetation type (forest/savanna)
Seasonal coverage (dry season priority)
Documented protocols (QA/QC)
When to use:
Fire emissions >20% of total REDD+ emissions
Unique vegetation types (not covered by IPCC)
Results-based payment programs (FCPF, ART-TREES)
Long-term national MRV programs
Tier 3: Continuous Monitoring Systems
Source: Tower-based FTIR, satellite thermal anomalies, modeling
Uncertainty: ±10-15% (real-time, high-resolution)
Cost: $200-500k initial + $50k/year operational
Applicability: Research sites, high-value jurisdictions
Requirements:
Permanent monitoring infrastructure
Real-time data acquisition and processing
Integration with meteorological data
Model validation with independent measurements
When to use:
Fire emissions >50% of total REDD+ emissions
Premium carbon credit markets
Scientific research applications
National climate policy tracking
Cost-Benefit Tier 2
Example: Jurisdiction with 1M ha forest, 2% annual fire rate, 100 t/ha biomass
Baseline (Tier 1):
Burned area: 20,000 ha/year
Biomass consumed: 20,000 ha × 100 t/ha × 0.5 Cf = 1,000,000 t
Emissions: 1,000,000 t × 1.58 t CO2/t DM = 1,580,000 t CO2e
Uncertainty: ±50% → HW = 790,000 t CO2e
Uncertainty deduction: 790,000 × 0.524417 / 1.645 = 252,000 t CO2e
Credit loss: 252,000 × $10 = $2,520,000/year
After Tier 2 investment ($75k):
Uncertainty: ±20% → HW = 316,000 t CO2e
Uncertainty deduction: 316,000 × 0.524417 / 1.645 = 101,000 t CO2e
Credit loss: 101,000 × $10 = $1,010,000/year
Net gain: $1,510,000/year
ROI: 1,510k / 75k = 2,013% return in first year
Break-even calculation:
\[ \text{Break-even fire emissions} = \frac{\text{Cost of Tier 2}}{\text{Credit price} \times \Delta UA \times 0.524417 / 1.645} \]
\[ = \frac{75,000}{10 \times (0.50 - 0.20) \times 0.524417 / 1.645} = 78,656 \text{ t CO}_2\text{e} \]
Decision rule: Tier 2 is cost-effective when annual fire emissions exceed 79,000 t CO2e (~5% of total for typical 1M ha jurisdiction).
Field Protocols
Airborne Sampling Active Fires
Method: FTIR spectroscopy from aircraft or drones
Equipment:
Portable FTIR spectrometer ($30-50k)
GPS and IMU for georeferencing
Data logger and power supply
Aircraft or UAV platform
Sampling protocol:
- Flight planning:
Calculate sampling density
plan_fire_sampling <- function(fire_area_ha, target_samples = 30) { # Transects spaced to capture fire variability transect_spacing_m <- sqrt(fire_area_ha * 10000 / target_samples)
# Flight time estimate (assuming 60 km/hr survey speed) total_distance_km <- target_samples * 2 # 2 km per sample flight_hours <- total_distance_km / 60
cat(sprintf(“Recommended transect spacing: %.0f m”, transect_spacing_m)) cat(sprintf(“Estimated flight time: %.1f hours”, flight_hours)) cat(sprintf(“Fuel required: %.1f liters (Cessna 172)”, flight_hours * 35))
return(list( spacing = transect_spacing_m, duration = flight_hours )) }
Example: 500 ha fire
plan_fire_sampling(fire_area_ha = 500, target_samples = 30) # Output: # Recommended transect spacing: 408 m # Estimated flight time: 1.0 hours # Fuel required: 35.0 liters (Cessna 172)
- Sample collection:
Fly ~200-500m above fire plume
Collect 60-second integrated samples
Record temperature, wind, fire intensity
Sample both flaming and smoldering phases
- Gas concentration analysis:
Calculate emission factors from FTIR data
calculate_ef_from_ftir <- function(gas_concentrations) { # Concentrations in ppm co2_ppm <- gas_concentrations\(CO2 ch4_ppm <- gas_concentrations\)CH4 co_ppm <- gas_concentrations$CO
# Calculate carbon mass ratios total_carbon <- co2_ppm + ch4_ppm + co_ppm
# Emission factors (g/kg dry matter) # Assuming carbon content = 48% and complete combustion ef_co2 <- (co2_ppm / total_carbon) * 0.48 * (44/12) * 1000 ef_ch4 <- (ch4_ppm / total_carbon) * 0.48 * (16/12) * 1000 ef_co <- (co_ppm / total_carbon) * 0.48 * (28/12) * 1000
# Modified combustion efficiency mce <- co2_ppm / (co2_ppm + co_ppm)
return(data.frame( EF_CO2 = ef_co2, EF_CH4 = ef_ch4, EF_CO = ef_co, MCE = mce )) }
Example measurement
example_concentrations <- data.frame( CO2 = 420, # ppm above background CH4 = 15, # ppm above background CO = 85 # ppm above background )
ef_measured <- calculate_ef_from_ftir(example_concentrations) print(ef_measured) # Output: # EF_CO2 EF_CH4 EF_CO MCE # 1543.0 6.2 113.6 0.831
Quality control:
Background measurements before/after fire sampling
Replicate measurements (minimum 3 per fire phase)
Instrument calibration with certified gas standards
Cross-validation with ground-based measurements when possible
Field-Based Combustion Factor
Pre-fire fuel assessment:
Step 1: Establish permanent plots before fire season:
Plot size: 20m × 20m (400 m²) minimum
Replication: 10-20 plots per vegetation type
Stratification: By canopy cover class, topography
Step 2: Quantify fuel load by size class:
Fuel load inventory
conduct_fuel_inventory <- function(plot_area_m2 = 400) {
# Planar intersect method for woody fuels transect_length_m <- 15 # Per plot n_transects <- 4
# Count intercepts by size class intercepts <- data.frame( size_class = c(“1-hr”, “10-hr”, “100-hr”, “1000-hr”), diameter_cm = c(0.6, 2.5, 7.6, 20), # Midpoint count = c(45, 18, 8, 3) # Example counts )
# Calculate fuel load (kg/m²) intercepts <- intercepts %>% mutate( # Brown’s (1974) planar intersect equation fuel_load_kg_m2 = (count * diameter_cm^2 * 0.0055) / (transect_length_m * n_transects), fuel_load_t_ha = fuel_load_kg_m2 * 10 )
# Litter and duff (destructive sampling) litter_duff <- data.frame( component = c(“Litter”, “Duff”), samples = c(10, 10), # 0.1 m² frames avg_kg_m2 = c(0.8, 1.2), cv_pct = c(35, 45) )
return(list( woody_fuels = intercepts, fine_fuels = litter_duff, total_fuel_load_t_ha = sum(intercepts\(fuel_load_t_ha) + sum(litter_duff\)avg_kg_m2) * 10 )) }
Example inventory
pre_fire <- conduct_fuel_inventory() cat(sprintf(“Total fuel load: %.1f t/ha”, pre_fire$total_fuel_load_t_ha)) # Output: Total fuel load: 38.6 t/ha
Post-fire residual assessment:
Timing: Within 1 week of fire (before decomposition/wind dispersal)
Method: Re-measure same plots using identical protocol
Post-fire assessment
assess_combustion <- function(pre_fire, post_fire) {
# Calculate consumption by size class consumption <- pre_fire\(woody_fuels %>% left_join(post_fire\)woody_fuels, by = “size_class”, suffix = c(“_pre”, “_post”)) %>% mutate( consumed_t_ha = fuel_load_t_ha_pre - fuel_load_t_ha_post, cf = consumed_t_ha / fuel_load_t_ha_pre )
# Weighted average combustion factor total_cf <- sum(consumption\(consumed_t_ha) / sum(consumption\)fuel_load_t_ha_pre)
# Uncertainty from spatial variability # Assume 10 replicate plots n_plots <- 10 cv_spatial <- 0.30 # 30% coefficient of variation typical cf_uncertainty <- total_cf * cv_spatial / sqrt(n_plots)
return(list( by_size_class = consumption, total_cf = total_cf, cf_se = cf_uncertainty, ci_90 = c(total_cf - 1.645 * cf_uncertainty, total_cf + 1.645 * cf_uncertainty) )) }
Example (assuming post-fire measured)
post_fire <- conduct_fuel_inventory() # Would be actual post-fire data combustion_results <- assess_combustion(pre_fire, post_fire)
cat(sprintf(“Combustion factor: %.2f ± %.2f (90%% CI)”, combustion_results\(total_cf, 1.645 * combustion_results\)cf_se)) # Output: Combustion factor: 0.53 ± 0.09 (90% CI)
ART-TREES Compliance
Emission Factor Requirements
ART-TREES Standards V2.0 Section 8 requirements:
Monte Carlo simulation: Minimum 10,000 iterations combining:
Emission factor variance (by gas species)
Combustion factor variance
Biomass density variance (from Chapter 1)
90% confidence intervals: Report half-width for uncertainty adjustment
Gas-specific reporting: Separate uncertainties for CO2, CH4, N2O
Conservative bias: Mean estimate must not exceed best estimate
Emission Factor Assessment
Scenario: Tropical forest jurisdiction, 1M ha, 2% annual fire rate
{r} #| label: art-trees-complete #| eval: false #| code-summary: “Complete ART-TREES compliant emission factor uncertainty assessment”
library(tidyverse) library(mc2d)
=============================================================================
ART-TREES COMPLIANT EMISSION FACTOR UNCERTAINTY ASSESSMENT
Combines: Emission factors + Combustion factor + Biomass uncertainty
=============================================================================
set.seed(2025) n_sim <- 10000
Jurisdiction parameters
jurisdiction <- list( total_area_ha = 1000000, fire_rate_pct = 2.0, biomass_t_ha = 100, # From Chapter 1 allometry biomass_uncertainty_pct = 20 # From Chapter 1 )
Calculate burned area
burned_area_ha <- jurisdiction\(total_area_ha * jurisdiction\)fire_rate_pct / 100
Monte Carlo simulation
mc_emissions <- data.frame( iteration = 1:n_sim,
# Biomass per hectare (from allometry, Chapter 1) biomass_t_ha = rnorm(n_sim, mean = jurisdiction\(biomass_t_ha, sd = jurisdiction\)biomass_t_ha * jurisdiction$biomass_uncertainty_pct / 100),
# Combustion factor (Beta distribution, 0-1 bounded) cf = rbeta(n_sim, shape1 = 10, shape2 = 10), # Mean = 0.5
# Emission factors (g/kg) ef_co2 = rnorm(n_sim, 1580, 35), ef_ch4 = rlnorm(n_sim, log(6.8), 0.15), ef_n2o = rlnorm(n_sim, log(0.20), 0.35) ) %>% mutate( # Total biomass burned (tonnes) total_biomass_burned = burned_area_ha * biomass_t_ha * cf,
# Gas emissions (tonnes)
co2_t = total_biomass_burned * ef_co2 / 1000,
ch4_t = total_biomass_burned * ef_ch4 / 1000,
n2o_t = total_biomass_burned * ef_n2o / 1000,
# CO2-equivalent (tonnes)
co2e_from_co2 = co2_t * 1,
co2e_from_ch4 = ch4_t * 28,
co2e_from_n2o = n2o_t * 265,
# Total emissions
total_emissions_tco2e = co2e_from_co2 + co2e_from_ch4 + co2e_from_n2o
)
Calculate statistics
emission_stats <- mc_emissions %>% summarise( mean_emissions = mean(total_emissions_tco2e), median_emissions = median(total_emissions_tco2e), sd_emissions = sd(total_emissions_tco2e), ci_05 = quantile(total_emissions_tco2e, 0.05), ci_95 = quantile(total_emissions_tco2e, 0.95), hw_90 = (ci_95 - ci_05) / 2, uncertainty_pct = hw_90 / mean_emissions * 100 )
ART-TREES uncertainty adjustment factor
ua_t <- 0.524417 * (emission_stats\(hw_90 / emission_stats\)mean_emissions) / 1.645006
Uncertainty deduction
unc_deduction_tco2e <- emission_stats$mean_emissions * ua_t
cat(“=== ART-TREES EMISSION FACTOR UNCERTAINTY ASSESSMENT ===”) cat(sprintf(“Jurisdiction: 1M ha, %.1f%% fire rate, %.0f ha burned”, jurisdiction\(fire_rate_pct, burned_area_ha)) cat(sprintf("Mean biomass: %.0f t/ha (±%.0f%%)\n\n", jurisdiction\)biomass_t_ha, jurisdiction$biomass_uncertainty_pct))
cat(“EMISSION RESULTS:”) cat(sprintf(” Mean emissions: %.0f t CO2e“, emission_stats\(mean_emissions)) cat(sprintf(" 90%% CI: [%.0f, %.0f] t CO2e\n", emission_stats\)ci_05, emission_stats\(ci_95)) cat(sprintf(" Half-width: %.0f t CO2e\n", emission_stats\)hw_90)) cat(sprintf(” Uncertainty: %.1f%%“, emission_stats$uncertainty_pct))
cat(“ART-TREES UNCERTAINTY DEDUCTION:”) cat(sprintf(” UA_t factor: %.4f“, ua_t)) cat(sprintf(” Uncertainty deduction: %.0f t CO2e“, unc_deduction_tco2e)) cat(sprintf(” Net credits after deduction: %.0f t CO2e“, emission_stats\(mean_emissions - unc_deduction_tco2e)) cat(sprintf(" Credit loss: %.1f%%\n", unc_deduction_tco2e / emission_stats\)mean_emissions * 100))
Expected output:
=== ART-TREES EMISSION FACTOR UNCERTAINTY ASSESSMENT ===
Jurisdiction: 1M ha, 2.0% fire rate, 20000 ha burned Mean biomass: 100 t/ha (±20%)
EMISSION RESULTS: Mean emissions: 1589472 t CO2e 90% CI: [1142308, 2082165] t CO2e Half-width: 469929 t CO2e Uncertainty: 29.6%
ART-TREES UNCERTAINTY DEDUCTION: UA_t factor: 0.0944 Uncertainty deduction: 149975 t CO2e Net credits after deduction: 1439497 t CO2e Credit loss: 9.4%