Introduction

cdmAmsIIIaj provides tidyverse-aligned helpers that translate the Clean Development Mechanism (CDM) small-scale methodology AMS-III.AJ Recovery and recycling of materials from solid wastes into reproducible R code. The vignette demonstrates how to assess applicability, simulate data, evaluate each numbered equation, and aggregate monitoring periods.

Applicability Checks

library(cdmAmsIIIaj)
library(dplyr)

simulated <- simulate_ams_iiiaj_dataset(n_facilities = 2, n_periods = 3, seed = 2025)

applicability_quality <- check_applicability_material_quality_iiiaj(simulated$applicability, group_cols = "facility_id")
applicability_collection <- check_applicability_collection_network_iiiaj(simulated$applicability, group_cols = "facility_id")
applicability_monitoring <- check_applicability_monitoring_plan_iiiaj(simulated$applicability, group_cols = "facility_id")

applicability_quality %>%
  left_join(applicability_collection, by = "facility_id") %>%
  left_join(applicability_monitoring, by = "facility_id")
#> # A tibble: 2 × 10
#>   facility_id material_types_compliant contamination_compliant
#>   <chr>       <lgl>                    <lgl>                  
#> 1 F1          TRUE                     TRUE                   
#> 2 F2          TRUE                     TRUE                   
#> # ℹ 7 more variables: specification_compliant <lgl>,
#> #   segregation_compliant <lgl>, coverage_compliant <lgl>,
#> #   logistics_compliant <lgl>, throughput_compliant <lgl>,
#> #   residual_compliant <lgl>, calibration_compliant <lgl>

Simulated Dataset

str(simulated, max.level = 1)
#> List of 4
#>  $ baseline     : tibble [6 × 7] (S3: tbl_df/tbl/data.frame)
#>  $ project      : tibble [6 × 9] (S3: tbl_df/tbl/data.frame)
#>  $ leakage      : tibble [6 × 9] (S3: tbl_df/tbl/data.frame)
#>  $ applicability: tibble [6 × 10] (S3: tbl_df/tbl/data.frame)

Equation Walkthrough

baseline <- calculate_baseline_emissions_iiiaj(
  simulated$baseline,
  group_cols = "facility_id",
  days_col = "days_in_period"
)

project <- calculate_project_emissions_iiiaj(
  simulated$project,
  group_cols = "facility_id",
  days_col = "days_in_period"
)

leakage <- calculate_leakage_emissions_iiiaj(
  simulated$leakage,
  group_cols = "facility_id"
)

list(baseline = baseline, project = project, leakage = leakage)
#> $baseline
#> # A tibble: 2 × 2
#>   facility_id baseline_emissions_tco2e
#>   <chr>                          <dbl>
#> 1 F1                             7112.
#> 2 F2                             6899.
#> 
#> $project
#> # A tibble: 2 × 2
#>   facility_id project_emissions_tco2e
#>   <chr>                         <dbl>
#> 1 F1                             536.
#> 2 F2                             536.
#> 
#> $leakage
#> # A tibble: 2 × 2
#>   facility_id leakage_emissions_tco2e
#>   <chr>                         <dbl>
#> 1 F1                             2.54
#> 2 F2                             1.74

Monitoring Period Aggregation

aggregate_monitoring_periods_iiiaj(
  simulated$baseline,
  group_cols = c("facility_id")
)
#> # A tibble: 2 × 7
#>   facility_id period days_in_period material_processed_tonnes
#>   <chr>        <int>          <dbl>                     <dbl>
#> 1 F1               6             90                       138
#> 2 F2               6             90                       138
#> # ℹ 3 more variables: virgin_material_ef_tco2_per_tonne <dbl>,
#> #   baseline_disposal_ef_tco2_per_tonne <dbl>, residual_fraction <dbl>

Meta-Function

reductions <- estimate_emission_reductions_ams_iiiaj(
  baseline_data = simulated$baseline,
  project_data = simulated$project,
  leakage_data = simulated$leakage,
  group_cols = "facility_id",
  baseline_args = list(days_col = "days_in_period"),
  project_args = list(days_col = "days_in_period")
)
reductions
#> # A tibble: 2 × 5
#>   facility_id baseline_emissions_tco2e project_emissions_tco2e
#>   <chr>                          <dbl>                   <dbl>
#> 1 F1                             7112.                    536.
#> 2 F2                             6899.                    536.
#> # ℹ 2 more variables: leakage_emissions_tco2e <dbl>,
#> #   net_emission_reductions_tco2e <dbl>

Function Reference

tibble::tibble(
  Function = c(
    "calculate_baseline_emissions_iiiaj",
    "calculate_project_emissions_iiiaj",
    "calculate_leakage_emissions_iiiaj",
    "calculate_emission_reductions_iiiaj",
    "aggregate_monitoring_periods_iiiaj",
    "estimate_emission_reductions_ams_iiiaj",
    "check_applicability_material_quality_iiiaj",
    "check_applicability_collection_network_iiiaj",
    "check_applicability_monitoring_plan_iiiaj",
    "simulate_ams_iiiaj_dataset"
  ),
  Signature = c(
    "(data, material_processed_col, ...)",
    "(data, electricity_consumption_col, ...)",
    "(data, collected_material_col, ...)",
    "(baseline, project, leakage, ...)",
    "(data, group_cols, sum_cols = NULL)",
    "(baseline_data, project_data, leakage_data, ...)",
    "(data, material_type_col, ...)",
    "(data, segregation_rate_col, ...)",
    "(data, throughput_monitoring_col, ...)",
    "(n_facilities = 3, n_periods = 4, seed = NULL)"
  ),
  Purpose = c(
    "Implements baseline equation (1) for avoided virgin and disposal emissions.<br>\\(BE_y = \\sum_i M^{proc}_{i,y} (EF^{vir}_{i} + f^{res}_{i,y} \\times EF^{disp}_{i})\\)",
    "Implements project equation (2) for energy and auxiliary material emissions.<br>\\(PE_y = \\sum_i (E^{el}_{i,y} \\times EF^{el}_{i} + F^{th}_{i,y} \\times EF^{th}_{i} + S_{i,y} \\times EF^{supp}_{i})\\)",
    "Implements leakage equation (3) covering logistics and market effects.<br>\\(LE_y = \\sum_i (M^{col}_{i,y} \\times D_{i,y} \\times EF^{trans}_{i} + R_{i,y} \\times EF^{disp}_{i} + M^{out}_{i,y} \\times f^{market}_{i,y} \\times EF^{market}_{i})\\)",
    "Combines equations to deliver net emission reductions.<br>\\(ER_y = BE_y - (PE_y + LE_y)\\)",
    "Aggregates monitoring data across reporting periods.<br>\\(ER_{p,y} = BE_{p,y} - (PE_{p,y} + LE_{p,y})\\)",
    "Runs the full AMS-III.AJ estimation workflow.<br>\\(ER_y = BE_y - (PE_y + LE_y)\\)",
    "Tests recycled material quality applicability conditions.",
    "Evaluates collection network applicability conditions.",
    "Verifies monitoring plan applicability conditions.",
    "Generates simulated datasets for analysis and testing."
  )
) %>%
  quiet_kable(escape = FALSE)
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
Function Signature Purpose
calculate_baseline_emissions_iiiaj (data, material_processed_col, …) Implements baseline equation (1) for avoided virgin and disposal emissions.
BEy=iMi,yproc(EFivir+fi,yres×EFidisp)BE_y = \sum_i M^{proc}_{i,y} (EF^{vir}_{i} + f^{res}_{i,y} \times EF^{disp}_{i})
calculate_project_emissions_iiiaj (data, electricity_consumption_col, …) Implements project equation (2) for energy and auxiliary material emissions.
PEy=i(Ei,yel×EFiel+Fi,yth×EFith+Si,y×EFisupp)PE_y = \sum_i (E^{el}_{i,y} \times EF^{el}_{i} + F^{th}_{i,y} \times EF^{th}_{i} + S_{i,y} \times EF^{supp}_{i})
calculate_leakage_emissions_iiiaj (data, collected_material_col, …) Implements leakage equation (3) covering logistics and market effects.
LEy=i(Mi,ycol×Di,y×EFitrans+Ri,y×EFidisp+Mi,yout×fi,ymarket×EFimarket)LE_y = \sum_i (M^{col}_{i,y} \times D_{i,y} \times EF^{trans}_{i} + R_{i,y} \times EF^{disp}_{i} + M^{out}_{i,y} \times f^{market}_{i,y} \times EF^{market}_{i})
calculate_emission_reductions_iiiaj (baseline, project, leakage, …) Combines equations to deliver net emission reductions.
ERy=BEy(PEy+LEy)ER_y = BE_y - (PE_y + LE_y)
aggregate_monitoring_periods_iiiaj (data, group_cols, sum_cols = NULL) Aggregates monitoring data across reporting periods.
ERp,y=BEp,y(PEp,y+LEp,y)ER_{p,y} = BE_{p,y} - (PE_{p,y} + LE_{p,y})
estimate_emission_reductions_ams_iiiaj (baseline_data, project_data, leakage_data, …) Runs the full AMS-III.AJ estimation workflow.
ERy=BEy(PEy+LEy)ER_y = BE_y - (PE_y + LE_y)
check_applicability_material_quality_iiiaj (data, material_type_col, …) Tests recycled material quality applicability conditions.
check_applicability_collection_network_iiiaj (data, segregation_rate_col, …) Evaluates collection network applicability conditions.
check_applicability_monitoring_plan_iiiaj (data, throughput_monitoring_col, …) Verifies monitoring plan applicability conditions.
simulate_ams_iiiaj_dataset (n_facilities = 3, n_periods = 4, seed = NULL) Generates simulated datasets for analysis and testing.

Workflow Overview

tibble::tribble(
  ~Step, ~Description,
  "Applicability", "Use the three applicability helpers to confirm project eligibility.",
  "Simulation", "Generate or ingest monitoring datasets for baseline, project, and leakage streams.",
  "Equations", "Run the equation-level helpers to compute emissions components.",
  "Aggregation", "Aggregate monitoring data to reporting periods as required.",
  "Meta", "Call `estimate_emission_reductions_ams_iiiaj()` to produce net results."
) %>%
  quiet_kable()
#> Warning: 'xfun::attr()' is deprecated.
#> Use 'xfun::attr2()' instead.
#> See help("Deprecated")
Step Description
Applicability Use the three applicability helpers to confirm project eligibility.
Simulation Generate or ingest monitoring datasets for baseline, project, and leakage streams.
Equations Run the equation-level helpers to compute emissions components.
Aggregation Aggregate monitoring data to reporting periods as required.
Meta Call estimate_emission_reductions_ams_iiiaj() to produce net results.