Introduction

Soil organic carbon (SOC) in grasslands and savannas represents one of the largest reservoirs of carbon on earth (Lal et al., 2007). However, grassland management practices, such as use of fire, fertilization, re-vegetation and restoration, etc., that can lead to net sequestration of carbon are still poorly understood (Ritchie, 2014). In Laikipia County, Kenya, herbivores can have dramatically different effects on soil organic carbon (SOC), both positive and negative, depending on soil type, precipitation, plant species composition and grazing intensity (McSherry & Ritchie, 2013). To model soil carbon dynamics in grasslands we use the SNAP model (Ritchie, 2014) developed within a decisionSupport package (Luedeling & Gohring, 2017; Luedeling & Whitney, 2018). The model can make predictions of soil carbon stocks based on mean rainfall, plant lignin and cellulose, soil texture, fire history, and grazing intensity conditions over an extended period of time. We use Laikipia Conservancies Association (LCA) to support investment decision in a landscape restoration project that aims to sequester carbon in rangelands..

Materials and methods

Study background

The LCA project is an ecosystem-level conservation initiative that aims to protect the ecological resources and provide economic and social co-benefits for local communities in the Laikipia. The goal of LCA is to reduce emissions, restore the degraded landscape, inform grassland management options, provide alternative livelihoods for communities, build resilient conservancies, increase biodiversity conservation efforts, and enhance tourism and security.

Decision support package

The decisionSupport () function in the R package of the same name requires two inputs:

  1. An input_table (in .csv format) specifying the names and probability distributions for all variables used in the analysis. To generate the input_table, we first describe the input variables for the SNAP model. The SNAP model (initially developed using data from Serengeti National Park) requires five input variables: mean annual rainfall (mm/yr); grazing intensity (1-(grazed biomass/ungrazed biomass)) (McNaughton, 1985); fire frequency (number of fires recorded/number of years over which fires were monitored); lignin and cellulose content (proportion) in aboveground herbaceous vegetation, and sand percentage. These variables constitute the input_table as shown in the table.
#>                         Description     lower median     upper distribution
#> 1                           n_years     40.00     NA     40.00        const
#> 2                        general_CV      0.20     NA      0.40    tnorm_0_1
#> 3               carbon_credit_price     11.50     NA     50.80      posnorm
#> 4              mean_annual_rainfall    400.00     NA    750.00      posnorm
#> 5           buffer_credit_deduction      0.15     NA      0.30    tnorm_0_1
#> 6                     discount_rate     10.00     NA     20.00      posnorm
#> 7                      project_area 301896.00     NA 301896.00        const
#> 8          grazing_intensity_borana      0.65     NA      0.80   tnorm_0_1 
#> 9             fire_frequency_borana      0.00     NA      0.00        const
#> 10         percentage_lignin_borana     10.00     NA     20.00      posnorm
#> 11      percentage_cellulose_borana     25.00     NA     50.00      posnorm
#> 12           sand_percentage_borana     10.00     NA     35.00      posnorm
#> 13              baseline_soc_borana     17.20     NA     39.80      posnorm
#> 14                  landsize_borana  11954.00     NA  11954.00        const
#> 15      grazing_intensity_lolldaiga      0.40     NA      0.60   tnorm_0_1 
#> 16         fire_frequency_lolldaiga      0.00     NA      0.00        const
#> 17      percentage_lignin_lolldaiga      5.00     NA     15.00      posnorm
#> 18   percentage_cellulose_lolldaiga     25.00     NA     40.00      posnorm
#> 19        sand_percentage_lolldaiga     35.00     NA     45.00      posnorm
#> 20           baseline_soc_lolldaiga     14.70     NA     53.00      posnorm
#> 21               landsize_lolldaiga  20609.00     NA  20609.00        const
#> 22       grazing_intensity_mayianat      0.05     NA      0.15   tnorm_0_1 
#> 23          fire_frequency_mayianat      0.00     NA      0.00        const
#> 24       percentage_lignin_mayianat      5.00     NA     10.00      posnorm
#> 25    percentage_cellulose_mayianat     20.00     NA     30.00      posnorm
#> 26         sand_percentage_mayianat     37.00     NA     42.00      posnorm
#> 27            baseline_soc_mayianat     12.30     NA     34.00      posnorm
#> 28                landsize_mayianat   6799.00     NA   6799.00        const
#> 29     grazing_intensity_ole_naishu      0.40     NA      0.60   tnorm_0_1 
#> 30        fire_frequency_ole_naishu      0.00     NA      0.00        const
#> 31     percentage_lignin_ole_naishu      5.00     NA     15.00      posnorm
#> 32  percentage_cellulose_ole_naishu     25.00     NA     40.00      posnorm
#> 33       sand_percentage_ole_naishu     20.00     NA     50.00      posnorm
#> 34          baseline_soc_ole_naishu     17.20     NA     37.50      posnorm
#> 35              landsize_ole_naishu  14433.00     NA  14433.00        const
#> 36        grazing_intensity_shulmai      0.10     NA      0.20   tnorm_0_1 
#> 37           fire_frequency_shulmai      0.00     NA      0.00        const
#> 38        percentage_lignin_shulmai      5.00     NA     15.00      posnorm
#> 39     percentage_cellulose_shulmai     20.00     NA     35.00      posnorm
#> 40          sand_percentage_shulmai     40.00     NA     65.00      posnorm
#> 41             baseline_soc_shulmai     15.20     NA     37.90      posnorm
#> 42                 landsize_shulmai   7252.00     NA   7252.00        const
#> 43       grazing_intensity_elkarama      0.65     NA      0.80   tnorm_0_1 
#> 44          fire_frequency_elkarama      0.00     NA      0.00        const
#> 45       percentage_lignin_elkarama     10.00     NA     20.00      posnorm
#> 46    percentage_cellulose_elkarama     25.00     NA     45.00      posnorm
#> 47         sand_percentage_elkarama     10.00     NA     45.00      posnorm
#> 48            baseline_soc_elkarama     12.80     NA     46.30      posnorm
#> 49                landsize_elkarama   6312.00     NA   6312.00        const
#> 50        grazing_intensity_loisaba      0.65     NA      0.80   tnorm_0_1 
#> 51           fire_frequency_loisaba      0.00     NA      0.00        const
#> 52        percentage_lignin_loisaba     10.00     NA     20.00      posnorm
#> 53     percentage_cellulose_loisaba     25.00     NA     40.00      posnorm
#> 54          sand_percentage_loisaba     10.00     NA     50.00      posnorm
#> 55             baseline_soc_loisaba     22.90     NA     39.00      posnorm
#> 56                 landsize_loisaba  23703.00     NA  23703.00        const
#> 57          grazing_intensity_mugie      0.65     NA      0.80   tnorm_0_1 
#> 58             fire_frequency_mugie      0.00     NA      0.00        const
#> 59          percentage_lignin_mugie     10.00     NA     20.00      posnorm
#> 60       percentage_cellulose_mugie     25.00     NA     45.00      posnorm
#> 61            sand_percentage_mugie     10.00     NA     23.00      posnorm
#> 62               baseline_soc_mugie     10.90     NA     17.30      posnorm
#> 63                   landsize_mugie  20767.00     NA  20767.00        const
#> 64        grazing_intensity_mukutan      0.65     NA      0.85   tnorm_0_1 
#> 65           fire_frequency_mukutan      0.00     NA      0.00        const
#> 66        percentage_lignin_mukutan     10.00     NA     20.00      posnorm
#> 67     percentage_cellulose_mukutan     25.00     NA     50.00      posnorm
#> 68          sand_percentage_mukutan     10.00     NA     40.00      posnorm
#> 69             baseline_soc_mukutan     24.90     NA     66.00      posnorm
#> 70                 landsize_mukutan  35387.00     NA  35387.00        const
#> 71         grazing_intensity_oljogi      0.45     NA      0.60   tnorm_0_1 
#> 72            fire_frequency_oljogi      0.00     NA      0.00        const
#> 73         percentage_lignin_oljogi      5.00     NA     15.00      posnorm
#> 74      percentage_cellulose_oljogi     25.00     NA     35.00      posnorm
#> 75           sand_percentage_oljogi     35.00     NA     57.00      posnorm
#> 76              baseline_soc_oljogi     18.60     NA     42.80      posnorm
#> 77                  landsize_oljogi  21993.00     NA  21993.00        const
#> 78         grazing_intensity_sosian      0.45     NA      0.60   tnorm_0_1 
#> 79            fire_frequency_sosian      0.00     NA      0.00        const
#> 80         percentage_lignin_sosian      5.00     NA     15.00      posnorm
#> 81      percentage_cellulose_sosian     25.00     NA     35.00      posnorm
#> 82           sand_percentage_sosian     10.00     NA     20.00      posnorm
#> 83              baseline_soc_sosian      8.70     NA     34.50      posnorm
#> 84                  landsize_sosian  10011.00     NA  10011.00        const
#> 85         grazing_intensity_suyian      0.65     NA      0.85   tnorm_0_1 
#> 86            fire_frequency_suyian      0.00     NA      0.00        const
#> 87         percentage_lignin_suyian     10.00     NA     20.00      posnorm
#> 88      percentage_cellulose_suyian     25.00     NA     45.00      posnorm
#> 89           sand_percentage_suyian     10.00     NA     21.00      posnorm
#> 90              baseline_soc_suyian     20.40     NA     39.90      posnorm
#> 91                  landsize_suyian  18133.00     NA  18133.00        const
#> 92          grazing_intensity_mpala      0.60     NA      0.75   tnorm_0_1 
#> 93             fire_frequency_mpala      0.00     NA      0.00        const
#> 94          percentage_lignin_mpala     10.00     NA     20.00      posnorm
#> 95       percentage_cellulose_mpala     25.00     NA     30.00      posnorm
#> 96            sand_percentage_mpala      8.00     NA     50.00      posnorm
#> 97               baseline_soc_mpala      8.70     NA     40.60      posnorm
#> 98                   landsize_mpala  19506.00     NA  19506.00        const
#> 99       grazing_intensity_olmaisor      0.35     NA      0.50   tnorm_0_1 
#> 100         fire_frequency_olmaisor      0.00     NA      0.00        const
#> 101      percentage_lignin_olmaisor      5.00     NA     15.00      posnorm
#> 102   percentage_cellulose_olmaisor     25.00     NA     35.00      posnorm
#> 103        sand_percentage_olmaisor      9.00     NA     18.00      posnorm
#> 104           baseline_soc_olmaisor     19.20     NA     38.30      posnorm
#> 105               landsize_olmaisor  12125.00     NA  12125.00        const
#> 106        grazing_intensity_segera      0.65     NA      0.80   tnorm_0_1 
#> 107           fire_frequency_segera      0.00     NA      0.00        const
#> 108        percentage_lignin_segera     10.00     NA     20.00      posnorm
#> 109     percentage_cellulose_segera     25.00     NA     40.00      posnorm
#> 110          sand_percentage_segera      7.00     NA     26.00      posnorm
#> 111             baseline_soc_segera     14.40     NA     40.70      posnorm
#> 112                 landsize_segera  19678.00     NA  19678.00        const
#> 113       grazing_intensity_tumaren      0.35     NA      0.60   tnorm_0_1 
#> 114          fire_frequency_tumaren      0.00     NA      0.00        const
#> 115       percentage_lignin_tumaren      5.00     NA     15.00      posnorm
#> 116    percentage_cellulose_tumaren     25.00     NA     30.00      posnorm
#> 117         sand_percentage_tumaren     17.00     NA     45.00      posnorm
#> 118            baseline_soc_tumaren     14.60     NA     42.10      posnorm
#> 119                landsize_tumaren   3899.00     NA   3899.00        const
#> 120       grazing_intensity_enasoit      0.40     NA      0.60   tnorm_0_1 
#> 121          fire_frequency_enasoit      0.00     NA      0.00        const
#> 122       percentage_lignin_enasoit      5.00     NA     15.00      posnorm
#> 123    percentage_cellulose_enasoit     25.00     NA     35.00      posnorm
#> 124         sand_percentage_enasoit     21.00     NA     61.00      posnorm
#> 125            baseline_soc_enasoit     14.90     NA     24.50      posnorm
#> 126                landsize_enasoit   1658.00     NA   1658.00        const
#> 127         grazing_intensity_ewaso      0.65     NA      0.80   tnorm_0_1 
#> 128            fire_frequency_ewaso      0.00     NA      0.00        const
#> 129         percentage_lignin_ewaso     10.00     NA     20.00      posnorm
#> 130      percentage_cellulose_ewaso     25.00     NA     45.00      posnorm
#> 131           sand_percentage_ewaso     21.00     NA     44.50      posnorm
#> 132              baseline_soc_ewaso     17.60     NA     25.40      posnorm
#> 133                  landsize_ewaso   4541.00     NA   4541.00        const
#> 134       grazing_intensity_kipepeo      0.65     NA      0.85   tnorm_0_1 
#> 135          fire_frequency_kipepeo      0.00     NA      0.00        const
#> 136       percentage_lignin_kipepeo     15.00     NA     20.00      posnorm
#> 137    percentage_cellulose_kipepeo     25.00     NA     50.00      posnorm
#> 138         sand_percentage_kipepeo     10.00     NA     18.00      posnorm
#> 139            baseline_soc_kipepeo     16.30     NA     34.10      posnorm
#> 140                landsize_kipepeo   2702.00     NA   2702.00        const
#> 141        grazing_intensity_olmalo      0.65     NA      0.85   tnorm_0_1 
#> 142           fire_frequency_olmalo      0.00     NA      0.00        const
#> 143        percentage_lignin_olmalo     15.00     NA     20.00      posnorm
#> 144     percentage_cellulose_olmalo     25.00     NA     45.00      posnorm
#> 145          sand_percentage_olmalo     43.00     NA     58.00      posnorm
#> 146             baseline_soc_olmalo     19.80     NA     46.60      posnorm
#> 147                 landsize_olmalo   2702.00     NA   2702.00        const
#> 148      grazing_intensity_olpajeta      0.60     NA      0.80   tnorm_0_1 
#> 149         fire_frequency_olpajeta      0.00     NA      0.00        const
#> 150      percentage_lignin_olpajeta     15.00     NA     20.00      posnorm
#> 151   percentage_cellulose_olpajeta     25.00     NA     40.00      posnorm
#> 152        sand_percentage_olpajeta      5.00     NA      8.00      posnorm
#> 153           baseline_soc_olpajeta     12.40     NA     55.50      posnorm
#> 154               landsize_olpajeta  36516.00     NA  36516.00        const
#> 155      grazing_intensity_naserian      0.45     NA      0.60   tnorm_0_1 
#> 156         fire_frequency_naserian      0.00     NA      0.00        const
#> 157      percentage_lignin_naserian      5.00     NA     15.00      posnorm
#> 158   percentage_cellulose_naserian     25.00     NA     30.00      posnorm
#> 159        sand_percentage_naserian     19.00     NA     35.00      posnorm
#> 160           baseline_soc_naserian     15.40     NA     38.40      posnorm
#> 161               landsize_naserian   1455.00     NA   1455.00        const
#> 162       grazing_intensity_pinguan      0.65     NA      0.85   tnorm_0_1 
#> 163          fire_frequency_pinguan      0.00     NA      0.00        const
#> 164       percentage_lignin_pinguan     10.00     NA     20.00      posnorm
#> 165    percentage_cellulose_pinguan     25.00     NA     45.00      posnorm
#> 166         sand_percentage_pinguan     10.00     NA     19.00      posnorm
#> 167            baseline_soc_pinguan     22.00     NA     39.90      posnorm
#> 168                landsize_pinguan    649.00     NA    649.00        const
#> 169         feasibility_study_costs   5821.00     NA   5821.00        const
#> 170              Initial_verra_fees    209.00     NA    209.00        const
#> 171        verra_mrv_and_govnt_fees  16261.00     NA  16261.00        const
#> 172       monitoring_activity_costs 111764.00     NA 111764.00        const
#> 173       validation_activity_costs  16839.00     NA  16839.00        const
#> 174     verification_activity_costs 246238.00     NA 246238.00        const
#> 175  conservancy_governance_support  21169.00     NA  21169.00        const
#> 176      grazing_governance_support  33310.00     NA  33310.00        const
#> 177              active_restoration   7069.00     NA   7069.00        const
#> 178  sustainable_water_reticulation   1064.00     NA   1064.00        const
#> 179  landscape_security_enhancement   1413.00     NA   1413.00        const
#> 180    livestock_movement_incentive 178248.00     NA 178248.00        const
#> 181            proponent_operations 512932.00     NA 512932.00        const
#> 182    proponent_budget_contingency 114651.00     NA 114651.00        const

To generate the input_data for the variables (including those with missing information), the variable distributions are first described by a 90% confidence interval, which are specified by lower (5% quantile) and upper (95% quantile) bounds. To achieve this, we estimated the bounds using lca baseline_soil_carbon_stocksdata from ICRAF, sand_content from LDSF data that is customized for each participating conservancy,lignin_and_cellulose_content from LDSF data on dominant grass species, where over rested perennials have higher lignocellulosic content compared to overgrazed annuals. Grazing intensity was based on the grazing status in each conservancy while the fire frequency data was automated to zero since fire management is not an eligible project activity under VM0042. The mean_annual rainfal from the Kenya Meteorological Department. The process was repeated for all participating conservancies to generate respective SNAP input_datafor each conservancy. The project_implementation_cost data was acquired from the project costs summery table in the feasibility study. For the shapes of variable distribution, const describes variables that are constant throughout, norm describes variables with normal distribution, tnorm_0_1 describes variables with a truncated normal distribution that can only have values between 0 and 1 (useful for probabilities) and posnorm describes variables with normal distribution truncated at 0 (only positive values allowed).

  1. An R_function () that predicts decision outcomes based on the variables named in input_table. This function is customized by the user to address a particular decision problem. For this analysis, the function grazing_soil_carbon_dynamics () describing the causal relationships between the SNAP model variables (Ritchie, 2014) was used.

Loading data in R

We could simply start translating SNAP model causal relationships into a mathematical model. However, the model function is designed to make use of variables provided to it externally (random numbers drawn according to the information in the input_table). To do this effectively, we loaded the data in R and defined sample values for all variables and tested pieces of the function code during the model development process. This was accomplished with the following helper function make_variables ().

make_variables<-function(est,n=1)
{ x<-random(rho=est, n=n)
    for(i in colnames(x)) assign(i,
     as.numeric(x[1,i]),envir=.GlobalEnv)
make_variables(estimate_read_csv("Soil_carbon_dynamics.csv"))
}

This function isn’t included in the decisionSupport package, because it places the desired variables in the global environment. This isn’t allowed for functions included in packages on R’s download servers. Applying make_variables to the input_table (with default setting n=1) generates one random number for each variable, which then allowed us to easily test the code we’re developing.

Mathematical model development

The following is an example of the SNAP model used to generate SOC stock projections for Borana conservancy. The model includes a growth function (gompertz_yieldfunction) to adjust for carbon sequestration potentials overtime, and a buffer credit deduction of between 15-30 percent.

grazing_soil_carbon_dynamics <- function(x, varnames){
  
#Borana Conservancy
maximum_aboveground_production<-vv((0.84*mean_annual_rainfall-27.5)*
                                   (1.33-0.0075*sand_percentage_borana),
                                   general_CV,n=n_years)
proportion_leaf_biomass<-vv(0.6+0.24*grazing_intensity_borana,
                            general_CV,n=n_years)
leaf_area_index<-vv(proportion_leaf_biomass/0.6-0.015*
                 exp(4.6*grazing_intensity_borana),general_CV,n=n_years)
grazer_modified_production<-leaf_area_index*
                            maximum_aboveground_production
estimate_aboveground_productivity<-maximum_aboveground_production*
                                   proportion_leaf_biomass/0.6-0.015*
                                   exp(4.6*grazing_intensity_borana)
belowground_production<-vv(917.4-0.763*mean_annual_rainfall,
                           general_CV,n=n_years)
lignocellulosic_content_borana<-vv((percentage_lignin_borana/
                                percentage_cellulose_borana),
                                general_CV,n=n_years)
plant_derived_carbon<-0.45*(lignocellulosic_content_borana*
                      grazer_modified_production*
                      (1-grazing_intensity_borana)*(1-fire_frequency_borana)+
                      (lignocellulosic_content_borana+0.05)*
                      belowground_production)
dung_derived_carbon<-lignocellulosic_content_borana*0.45*
                     grazing_intensity_borana*grazer_modified_production
wetdays<-vv((0.0004*mean_annual_rainfall-0.025)*240,
            general_CV,n=n_years)

#Interpreting SOC at equilibrium to be equal to baseline SOC
maximum_microb_resp_rate<-wetdays*(0.7+0.3*sand_percentage_borana/100)*
                          (0.00044*baseline_soc_borana-0.579)
change_soc_borana<-(plant_derived_carbon+dung_derived_carbon-
                    maximum_microb_resp_rate)/100

#Applying a sigmoid function to adjust for soc sequestration potential overtime  
change_soc_borana_adjusted<-gompertz_yield(max_harvest=change_soc_borana,
                            time_to_first_yield_estimate= 4,
                            time_to_second_yield_estimate= 20,
                            first_yield_estimate_percent=20,
                            second_yield_estimate_percent=50,
                            n_years=n_years,
                            var_CV = 0,
                            no_yield_before_first_estimate = TRUE)*landsize_borana
buffer_credit_borana<-change_soc_borana_adjusted*buffer_credit_deduction
net_credits_borana<-change_soc_borana_adjusted-buffer_credit_borana

return(list(net_credits_borana=net_credits_borana))
}

Simulation of carbon stock changes

To run the model, the grazing_soil_carbon_dynamics () function, along with the data from the input_table, were fed into the Monte Carlo simulation (MC) function (Luedeling and Whitney, 2018; Luedeling et al. 2021) to conduct the full analysis. See the vignette guides on applying the mcSimulation () function (Fernandez et al. 2021). Below is the code we used to perform the Monte Carlo simulation with 1,000 model runs.

SOC_simulation<- mcSimulation(
                 estimate = estimate_read_csv("Soil_carbon_dynamics.csv"),
                 model_function = grazing_soil_carbon_dynamics,
                 numberOfModelRuns = 1e4, # 10,000 runs
                 functionSyntax = "plainNames"
)

Results

The average sequestration potential per ha across the project area was 0.86 tCO2e. The summed up sequestration potentials across the LCA project area (about 302 thousand ha spanning across 23 conservancies) was 260 thousand tCO2e per year, resulting in an average climate impact of about 10.4m tCO2e over the 40 year period. A tabulated summary of the results describing the 90% confidence interval of the cashflow over a 40 year period and the projects net present value, is as shown in the table

Monte Carlo outputs
variable X0. lower_bound X10. X25. X50. X75. X90. upper_bound X100. mean
y.cashflow_lca_project_NPV1 -1.4e+06 -1385458 -1383975 -1381480 -1378715 -1375970 -1373397 -1371754 -1.4e+06 -1378696
y.cashflow_lca_project_NPV2 -1.4e+06 -1385520 -1383981 -1381491 -1378755 -1376108 -1373561 -1371895 -1.4e+06 -1378762
y.cashflow_lca_project_NPV3 -1.4e+06 -1385702 -1384070 -1381495 -1378787 -1376092 -1373498 -1371735 -1.4e+06 -1378771
y.cashflow_lca_project_NPV4 -1.4e+06 -251407 153004 876200 1702495 2553763 3378204 3862182 7.1e+06 1742856
y.cashflow_lca_project_NPV5 -1.4e+06 -152192 290622 1074842 1976072 2904820 3805890 4328496 7.9e+06 2021227
y.cashflow_lca_project_NPV6 -1.4e+06 -44458 429883 1286622 2260055 3263399 4239867 4810140 8.6e+06 2307924
y.cashflow_lca_project_NPV7 -1.4e+06 58429 572663 1496771 2548457 3634459 4692413 5302310 9.4e+06 2601443
y.cashflow_lca_project_NPV8 -1.4e+06 166092 723197 1713835 2846528 4009517 5152989 5803787 1.0e+07 2900717
y.cashflow_lca_project_NPV9 -1.4e+06 273520 872395 1934861 3144894 4395308 5612918 6315720 1.1e+07 3204245
y.cashflow_lca_project_NPV10 -1.4e+06 386883 1021980 2156590 3448046 4778794 6076671 6837043 1.2e+07 3510950
y.cashflow_lca_project_NPV11 -1.4e+06 498322 1173985 2379505 3750225 5163558 6549981 7350401 1.3e+07 3819662
y.cashflow_lca_project_NPV12 -1.4e+06 607673 1324610 2604501 4060645 5556186 7025394 7868051 1.4e+07 4129321
y.cashflow_lca_project_NPV13 -1.4e+06 720543 1478336 2826462 4364078 5946888 7494591 8392862 1.4e+07 4438915
y.cashflow_lca_project_NPV14 -1.4e+06 830080 1627129 3048525 4668795 6335808 7963634 8910989 1.5e+07 4747573
y.cashflow_lca_project_NPV15 -1.4e+06 945279 1778339 3272887 4972229 6721366 8430327 9430059 1.6e+07 5054208
y.cashflow_lca_project_NPV16 -1.4e+06 1055226 1928859 3490431 5269139 7102447 8897646 9942851 1.7e+07 5358521
y.cashflow_lca_project_NPV17 -1.4e+06 1164087 2081270 3705716 5568615 7477936 9350045 10444539 1.8e+07 5659544
y.cashflow_lca_project_NPV18 -1.4e+06 1269969 2220958 3922218 5863459 7860714 9821453 10941593 1.9e+07 5956874
y.cashflow_lca_project_NPV19 -1.4e+06 1375659 2368585 4135697 6150341 8228470 10253213 11435893 1.9e+07 6249397
y.cashflow_lca_project_NPV20 -1.4e+06 1479528 2502714 4337061 6436860 8588250 10695738 11923432 2.0e+07 6537586
y.cashflow_lca_project_NPV21 -1.4e+06 1576182 2650064 4544746 6714173 8940874 11124021 12395365 2.1e+07 6820308
y.cashflow_lca_project_NPV22 -1.4e+06 1679251 2779953 4744830 6988968 9290828 11544294 12868592 2.2e+07 7097327
y.cashflow_lca_project_NPV23 -1.4e+06 1773744 2917347 4940276 7252677 9633462 11959159 13322981 2.2e+07 7368517
y.cashflow_lca_project_NPV24 -1.4e+06 1871453 3044436 5134705 7517557 9968134 12356522 13766882 2.3e+07 7633453
y.cashflow_lca_project_NPV25 -1.4e+06 1968985 3173824 5320570 7772734 10297700 12761307 14193428 2.4e+07 7891954
y.cashflow_lca_project_NPV26 -1.4e+06 2053601 3293712 5497475 8021434 10618965 13140299 14609777 2.4e+07 8143736
y.cashflow_lca_project_NPV27 -1.4e+06 2143389 3414556 5678738 8261702 10925256 13522194 15026542 2.5e+07 8388431
y.cashflow_lca_project_NPV28 -1.4e+06 2232583 3532196 5848269 8495695 11228228 13879085 15430235 2.6e+07 8626560
y.cashflow_lca_project_NPV29 -1.4e+06 2313413 3645718 6015892 8727609 11517747 14227157 15804472 2.6e+07 8858182
y.cashflow_lca_project_NPV30 -1.4e+06 2388233 3756981 6178688 8943018 11797703 14577794 16181925 2.7e+07 9082235
y.cashflow_lca_project_NPV31 -1.4e+06 2465883 3860675 6328564 9156730 12067387 14905766 16537938 2.8e+07 9299030
y.cashflow_lca_project_NPV32 -1.4e+06 2554305 3961931 6484404 9364627 12340538 15216248 16899979 2.8e+07 9509176
y.cashflow_lca_project_NPV33 -1.4e+06 2617398 4061484 6634280 9564271 12595706 15530761 17254307 2.9e+07 9712048
y.cashflow_lca_project_NPV34 -1.4e+06 2686400 4163566 6771548 9765995 12835385 15843135 17580027 2.9e+07 9908147
y.cashflow_lca_project_NPV35 -1.4e+06 2757630 4251924 6908674 9946142 13084103 16123854 17897427 3.0e+07 10097250
y.cashflow_lca_project_NPV36 -1.4e+06 2821286 4340908 7044579 10128156 13311601 16394875 18212864 3.0e+07 10279746
y.cashflow_lca_project_NPV37 -1.4e+06 2895982 4430766 7170125 10302244 13526999 16670090 18513236 3.1e+07 10455329
y.cashflow_lca_project_NPV38 -1.4e+06 2953430 4511311 7293746 10466605 13735121 16919236 18783851 3.1e+07 10624654
y.cashflow_lca_project_NPV39 -1.4e+06 3016680 4587050 7406878 10626592 13942105 17161432 19061109 3.2e+07 10787046
y.cashflow_lca_project_NPV40 -1.4e+06 3075905 4668308 7521161 10781567 14139926 17402078 19311491 3.2e+07 10943477
y.lca_project_NPV -1.7e+07 -1620168 1515836 7056097 13999658 22521617 33226536 41807787 1.9e+08 16256230


The distribution of outcomes when calculating the net present value is higlighted in Figure 1

Figure 1: LCA project net pesent value distribution .
Figure 1: LCA project net pesent value distribution .


Also highlighted in Figure 2, is a graphical representation of the cashflows over the 40 year period.

Figure 2: Projected cashflow over the 40 year period indicatin that the project is likely to break even in year 4 if the first verification is carried out within the same period.
Figure 2: Projected cashflow over the 40 year period indicatin that the project is likely to break even in year 4 if the first verification is carried out within the same period.

Model sensitivity analysis

To analyse model sensitivity we performed a Partial Least Squares Regression (PLSR) analysis of Monte Carlo simulation results. We did this by applying a post-hoc analysis to the mcSimulation() outputs with the plsr.mcSimulation() function in the decisionSupport package. We used the function to determine the Variable Importance in the Projection (VIP) score and coefficients of a Projection to Latent Structures (PLS) regression model. This function uses the outputs of the mcSimulation() selecting all the input variables from the grazing_soil_carbon_dynamics () function in the parameter object and then runs a PLS regression with an outcome variable defined in the parameter resultName. This generated the bar graphs in Figure 3.

Figure 3: Important variables as determined by VIP analysis of PLS regression models. The green bar indicate a positive correlation of the variable with the outcome variable. Gray bars indicate variables that did not meet the threshold of the model sensitivity analysis.
Figure 3: Important variables as determined by VIP analysis of PLS regression models. The green bar indicate a positive correlation of the variable with the outcome variable. Gray bars indicate variables that did not meet the threshold of the model sensitivity analysis.

Discussion and Conclusion

The project is viable with a climate impact of about 10.4 m tCO2e and benefiting about 11 thousand people across the LCA landscape- a significant contribution to TNCs 20230 goals. However, based on the model sensitivity analysis, the carbon price per credit, grazing patterns (sensitivity to lignocellulosic content) across the landscape, and buffer credit contributions need to be monitored closely. Successful delivery of the project will depend on proactive risk management, early carbon price security, and adaptive grazing strategies informed by lessons from existing IRM projects. With these measures in place, the project has the potential to generate durable climate benefits while delivering lasting social and ecological value across the Laikipia landscape.

References

Lal R, Follett F, Stewart BA, Kimble JM. 2007. Soil carbon sequestration to mitigate climate change and advance food security. Soil Science 172:943956 https://doi.org/10.1097/ss.0b013e31815cc498

Ritchie, M. E. (2014). Plant compensation to grazing and soil carbon dynamics in a tropical grassland. PeerJ, 2, e233. https://doi.org/10.7717/peerj.233

McSherry M, Ritchie ME. 2013. Effects of grazing on grassland soil carbon density: a global review. Global Change Biology 19:13471357 https://doi.org/10.1111/gcb.12144.

Luedeling, E., Gohring, L. (2017). R package decisionSupport: Quantitative support of decision making under uncertainty. https://CRAN.R-project.org/package=decisionSupport

Luedeling, E., Whitney, C. W.(2018). R package decisionSupport: Controlled burns in conifer forests. https://cran.r-project.org/web/packages/decisionSupport/vignettes/wildfire_example.html

McNaughton SJ. 1985. Ecology of a grazing ecosystem: The Serengeti. Ecological Monographs 55:259294 https://doi.org/10.2307/1942578.

Luedeling, Eike, Lutz Goehring, Katja Schiffers, Cory Whitney, and Eduardo Fernandez. 2021. decisionSupport: Quantitative Support of Decision Making Under Uncertainty. http://www.worldagroforestry.org/.

Fernandez, Eduardo, Cory Whitney, and Eike Luedeling. 2021. “Applying the mcSimulation Function in decisionSupport.” https://cran.r-project.org/web/packages/decisionSupport/vignettes/example_decision_function.html.

Okin, G. S., Sala, O. E., Vivoni, E. R., Zhang, J., and Bhattachan, A. (2018). The Interactive Role of Wind and Water in Functioning of Drylands: What Does the Future Hold. BioScience 68 (9), 670–677. https://doi.org/10.1093/biosci/biy067

Ritchie, M. E. (2015). VM0032 Methodology for the Adoption of Sustainable Grasslands through Adjustment of Fire and Grazing, v1.0. Verified Carbon Standard. https://verra.org/methodology/vm0032-methodology-for-the-adoption-of-sustainable-grasslands-through-adjustment-of-fire-and-grazing-v1-0/