This article helps you get started with the tiltIndicator package. Currently it supports two families of indicators: “emissions” and “sector”.
In the “emissions” family, you have two indicators – “emissions profile” and “emissions profile upstream”. They are both calculated in exactly the same way. The difference is not in the process but in the dataset holding CO2 data: Either it has products or upstream-products (a.k.a. inputs), respectively.
In the “sector” family, you also have two indicators: “Sector profile” and “sector profile upstream”. Also they are calculated in the same way, but “sector profile upstream” takes an additional argument for upstream-products (a.k.a. inputs).
Emissions profile
The “emissions profile” measures the absolute GHG emissions of a product in comparison to a chosen benchmark of products. The assessment is first performed on a product-level and can then be aggregated to the company-level. The profile is expressed as the share of a company’s products that are in a “high”, “medium”, or “low” emission profile category, based on the comparison to the benchmark. A higher emission profile indicates a larger impact on climate change compared to the benchmark and can therefore also be interpreted as one climate risk component to assess products, companies, or loan portfolios.
The “emission profile” is calculated in these steps:
- The relative GHG emissions per product are collected from a Life-Cycle-Analysis (LCA) database by matching the products from our company dataset to the products from the LCA dataset.
- All products are ranked according to their GHG emissions.
- The products are grouped by the following benchmarks:
-
all
: All products. -
isic_4digit
: All products within the same ISIC 4 digit code (example: 0112 Growing of rice). -
tilt_subsector
: All products within the same tilt sector (example: agriculture). -
unit
: All products with the same unit (example: kg). -
unit_isic_4digit
: All products with the same unit within the same ISIC 4 digit section (example: kg + 0112 Growing of rice). -
unit_tilt_subsector
: All products with the same unit within the same tilt sector (example: kg + agriculture).
-
- For each benchmark, products are assigned to the emission profile category “low”, “medium” or “high”, depending on the GHG emissions arising from their production process in comparison to all other products within the same benchmark. For the assignment of the three categories, thresholds are used. Please find more information about the thresholds in the Thresholds section.
For the company-level results, we aggregate all products from the same category and benchmark and set them in relation to all products that the company produces. The company-level results are expressed as the company’s share of products per category “low”, “medium”, and “high” in comparison to each benchmark.
The output of this indicator contains the following:
- A column indicating the benchmark to which a product is compared.
- A column indicating whether the product has “low”, “medium” or “high” relative GHG emissions.
- A column indicating the share of the products per category and benchmark”.
Example
library(tiltIndicator)
library(tiltToyData)
library(readr)
options(readr.show_col_types = FALSE)
companies <- read_csv(toy_emissions_profile_any_companies())
products <- read_csv(toy_emissions_profile_products_ecoinvent())
both <- emissions_profile(companies, products)
both
#> # A tibble: 72 × 3
#> companies_id product company
#> * <chr> <list> <list>
#> 1 antimonarchy_canine <tibble [6 × 6]> <tibble [24 × 3]>
#> 2 celestial_lovebird <tibble [6 × 6]> <tibble [24 × 3]>
#> 3 nonphilosophical_llama <tibble [12 × 6]> <tibble [24 × 3]>
#> 4 asteria_megalotomusquinquespinosus <tibble [6 × 6]> <tibble [24 × 3]>
#> 5 quasifaithful_amphiuma <tibble [6 × 6]> <tibble [24 × 3]>
#> 6 spectacular_americanriverotter <tibble [6 × 6]> <tibble [24 × 3]>
#> 7 contrite_silkworm <tibble [6 × 6]> <tibble [24 × 3]>
#> 8 harmless_owlbutterfly <tibble [6 × 6]> <tibble [24 × 3]>
#> 9 fascist_maiasaura <tibble [6 × 6]> <tibble [24 × 3]>
#> 10 charismatic_islandwhistler <tibble [6 × 6]> <tibble [24 × 3]>
#> # ℹ 62 more rows
both |> unnest_product()
#> # A tibble: 456 × 7
#> companies_id grouped_by risk_category profile_ranking clustered
#> <chr> <chr> <chr> <dbl> <chr>
#> 1 antimonarchy_canine all high 1 tent
#> 2 antimonarchy_canine isic_4digit high 1 tent
#> 3 antimonarchy_canine tilt_subsector high 1 tent
#> 4 antimonarchy_canine unit high 1 tent
#> 5 antimonarchy_canine unit_isic_4digit high 1 tent
#> 6 antimonarchy_canine unit_tilt_subsec… high 1 tent
#> 7 celestial_lovebird all high 1 table hi…
#> 8 celestial_lovebird isic_4digit high 1 table hi…
#> 9 celestial_lovebird tilt_subsector high 1 table hi…
#> 10 celestial_lovebird unit high 1 table hi…
#> # ℹ 446 more rows
#> # ℹ 2 more variables: activity_uuid_product_uuid <chr>, co2_footprint <dbl>
both |> unnest_company()
#> # A tibble: 1,728 × 4
#> companies_id grouped_by risk_category value
#> <chr> <chr> <chr> <dbl>
#> 1 antimonarchy_canine all high 1
#> 2 antimonarchy_canine all medium 0
#> 3 antimonarchy_canine all low 0
#> 4 antimonarchy_canine all NA 0
#> 5 antimonarchy_canine isic_4digit high 1
#> 6 antimonarchy_canine isic_4digit medium 0
#> 7 antimonarchy_canine isic_4digit low 0
#> 8 antimonarchy_canine isic_4digit NA 0
#> 9 antimonarchy_canine tilt_subsector high 1
#> 10 antimonarchy_canine tilt_subsector medium 0
#> # ℹ 1,718 more rows
Emissions profile upstream
The indicator “emissions profile upstream” assesses the transition risk of the upstream products due to their relative carbon footprint to other upstream products. As a default option, each upstream product is compared to the carbon footprint of every other upstream product. Upstream products with a higher carbon footprint face a higher risk. On a company-level, the indicator proxies for the supply chain risk of a company - based on its inputs.
The indicator “emissions profile upstream” is therefore similar to the Product Carbon Transition Risk Indicator, but it focuses on the upstream products and not the product of the company. Upstream products are, for example, resources, packaging materials, energy and enabling services (such as tractor use on farm) to produce the product.
After identifying each carbon footprint for one upstream product, the input products are ranked according to their footprint. The ranking method is explained in the Thresholds section.
After assessing the upstream products’ transition risk based on the carbon footprint of each product, they are aggregated at the company-level. We derive what percentage of the upstream products are high, medium and low transition risk.
This indicator consists of 2 broad steps:
- Score upstream products: Identifying the upstream products for each product, and calculating the relative carbon footprint per upstream product.
- Score companies: Aggregating on the company-level.
The sample data set includes inputs and co2 footprints for each product from Ecoinvent and sectors from Europages. NOTE: the following columns are a completely random selection and do not reflect the true information:
- co2 footprints (not allowed to share licensed data right now)
- sectors (as the matching with ecoinvent is not done yet, we do not have one sector per product yet)
Example
library(tiltIndicator)
library(tiltToyData)
library(readr)
options(readr.show_col_types = FALSE)
companies <- read_csv(toy_emissions_profile_any_companies())
inputs <- read_csv(toy_emissions_profile_upstream_products_ecoinvent())
both <- emissions_profile_upstream(companies, inputs)
both |> unnest_product()
#> # A tibble: 690 × 8
#> companies_id grouped_by risk_category profile_ranking clustered
#> <chr> <chr> <chr> <dbl> <chr>
#> 1 antimonarchy_canine all high 0.938 tent
#> 2 antimonarchy_canine input_isic_4digit high 1 tent
#> 3 antimonarchy_canine input_tilt_subse… high 1 tent
#> 4 antimonarchy_canine input_unit high 1 tent
#> 5 antimonarchy_canine input_unit_input… high 1 tent
#> 6 antimonarchy_canine input_unit_input… high 1 tent
#> 7 celestial_lovebird all high 0.938 table hi…
#> 8 celestial_lovebird input_isic_4digit high 1 table hi…
#> 9 celestial_lovebird input_tilt_subse… high 1 table hi…
#> 10 celestial_lovebird input_unit high 1 table hi…
#> # ℹ 680 more rows
#> # ℹ 3 more variables: activity_uuid_product_uuid <chr>,
#> # input_activity_uuid_product_uuid <chr>, input_co2_footprint <dbl>
both |> unnest_company()
#> # A tibble: 1,728 × 4
#> companies_id grouped_by risk_category value
#> <chr> <chr> <chr> <dbl>
#> 1 antimonarchy_canine all high 1
#> 2 antimonarchy_canine all medium 0
#> 3 antimonarchy_canine all low 0
#> 4 antimonarchy_canine all NA 0
#> 5 antimonarchy_canine input_isic_4digit high 1
#> 6 antimonarchy_canine input_isic_4digit medium 0
#> 7 antimonarchy_canine input_isic_4digit low 0
#> 8 antimonarchy_canine input_isic_4digit NA 0
#> 9 antimonarchy_canine input_tilt_subsector high 1
#> 10 antimonarchy_canine input_tilt_subsector medium 0
#> # ℹ 1,718 more rows
Sector profile
The indicator “sector profile” measures the transition risk of products based on the sector’s emissions targets the product belongs to. Those sector emission reduction targets vary across scenarios (e.g., net zero scenario or 1.5° scenario) and the time horizon (e.g., reduction needed in 2030, 2040, 2050 to achieve the targets).
After assessing each product, all the products with the same category are aggregated and set in relation to all products of the company. We, therefore, derive company-level information.
Example
library(tiltIndicator)
library(tiltToyData)
library(readr)
options(readr.show_col_types = FALSE)
companies <- read_csv(toy_sector_profile_companies())
scenarios <- read_csv(toy_sector_profile_any_scenarios())
both <- sector_profile(companies, scenarios)
both
#> # A tibble: 72 × 3
#> companies_id product company
#> * <chr> <list> <list>
#> 1 antimonarchy_canine <tibble [4 × 10]> <tibble [16 × 3]>
#> 2 celestial_lovebird <tibble [4 × 10]> <tibble [16 × 3]>
#> 3 nonphilosophical_llama <tibble [8 × 10]> <tibble [16 × 3]>
#> 4 asteria_megalotomusquinquespinosus <tibble [4 × 10]> <tibble [16 × 3]>
#> 5 quasifaithful_amphiuma <tibble [4 × 10]> <tibble [16 × 3]>
#> 6 spectacular_americanriverotter <tibble [4 × 10]> <tibble [16 × 3]>
#> 7 contrite_silkworm <tibble [4 × 10]> <tibble [16 × 3]>
#> 8 harmless_owlbutterfly <tibble [4 × 10]> <tibble [16 × 3]>
#> 9 fascist_maiasaura <tibble [4 × 10]> <tibble [16 × 3]>
#> 10 charismatic_islandwhistler <tibble [4 × 10]> <tibble [16 × 3]>
#> # ℹ 62 more rows
both |> unnest_product()
#> # A tibble: 304 × 11
#> companies_id grouped_by risk_category profile_ranking clustered
#> <chr> <chr> <chr> <dbl> <chr>
#> 1 antimonarchy_canine ipr_1.5C RPS_… medium 0.18 tent
#> 2 antimonarchy_canine ipr_1.5C RPS_… high 0.98 tent
#> 3 antimonarchy_canine weo_NZ 2050_2… high 0.4 tent
#> 4 antimonarchy_canine weo_NZ 2050_2… high 0.97 tent
#> 5 celestial_lovebird ipr_1.5C RPS_… medium 0.18 table hi…
#> 6 celestial_lovebird ipr_1.5C RPS_… high 0.98 table hi…
#> 7 celestial_lovebird weo_NZ 2050_2… high 0.4 table hi…
#> 8 celestial_lovebird weo_NZ 2050_2… high 0.97 table hi…
#> 9 nonphilosophical_llama ipr_1.5C RPS_… low 0.09 surface …
#> 10 nonphilosophical_llama ipr_1.5C RPS_… high 0.95 surface …
#> # ℹ 294 more rows
#> # ℹ 6 more variables: activity_uuid_product_uuid <chr>, tilt_sector <chr>,
#> # scenario <chr>, year <dbl>, type <chr>, tilt_subsector <chr>
both |> unnest_company()
#> # A tibble: 1,152 × 4
#> companies_id grouped_by risk_category value
#> <chr> <chr> <chr> <dbl>
#> 1 antimonarchy_canine ipr_1.5C RPS_2030 high 0
#> 2 antimonarchy_canine ipr_1.5C RPS_2030 medium 1
#> 3 antimonarchy_canine ipr_1.5C RPS_2030 low 0
#> 4 antimonarchy_canine ipr_1.5C RPS_2030 NA 0
#> 5 antimonarchy_canine ipr_1.5C RPS_2050 high 1
#> 6 antimonarchy_canine ipr_1.5C RPS_2050 medium 0
#> 7 antimonarchy_canine ipr_1.5C RPS_2050 low 0
#> 8 antimonarchy_canine ipr_1.5C RPS_2050 NA 0
#> 9 antimonarchy_canine weo_NZ 2050_2030 high 1
#> 10 antimonarchy_canine weo_NZ 2050_2030 medium 0
#> # ℹ 1,142 more rows
Sector profile upstream
The indicator “sector profile upstream” assesses the transition risk of the input products based on the sector’s emissions targets the input product belongs to. This indicator can be aggregated on company level and as such inform about the supply chain risk of an SME, based on its inputs’ transition risk. The sector emission reduction targets vary across scenarios (e.g., net zero scenario or 1.5° scenario) and the time horizon (e.g., reduction needed in 2030, 2040, 2050 to achieve the targets). It, therefore, is similar to the Product Sector Risk Indicator but focuses on the input products that the company needs to produce its products.The input products are, for example, resources, packaging materials, energy and enabling services (such as tractor use on farm) to produce the product.
After identifying each carbon footprint for one input product, the input products are ranked according to their footprint. The ranking method is explained in the Thresholds section.
After assessing the input products for each product, they are aggregated at company-level to derive what percentage of the input products required by the company to produce its products have high, medium and low sector transition risk. We, therefore, derive the company-level information.
Please note that carbon emissions or emissions always mean CO2e.
Example
library(tiltIndicator)
library(tiltToyData)
library(readr)
options(readr.show_col_types = FALSE)
companies <- read_csv(toy_sector_profile_upstream_companies())
scenarios <- read_csv(toy_sector_profile_any_scenarios())
inputs <- read_csv(toy_sector_profile_upstream_products())
both <- sector_profile_upstream(companies, scenarios, inputs)
both
#> # A tibble: 72 × 3
#> companies_id product company
#> * <chr> <list> <list>
#> 1 antimonarchy_canine <tibble [4 × 12]> <tibble [16 × 3]>
#> 2 asteria_megalotomusquinquespinosus <tibble [4 × 12]> <tibble [16 × 3]>
#> 3 quasifaithful_amphiuma <tibble [4 × 12]> <tibble [16 × 3]>
#> 4 spectacular_americanriverotter <tibble [4 × 12]> <tibble [16 × 3]>
#> 5 contrite_silkworm <tibble [4 × 12]> <tibble [16 × 3]>
#> 6 harmless_owlbutterfly <tibble [4 × 12]> <tibble [16 × 3]>
#> 7 charismatic_islandwhistler <tibble [4 × 12]> <tibble [16 × 3]>
#> 8 leathery_acornwoodpecker <tibble [4 × 12]> <tibble [16 × 3]>
#> 9 skarn_gallinule <tibble [4 × 12]> <tibble [16 × 3]>
#> 10 springloaded_newt <tibble [4 × 12]> <tibble [16 × 3]>
#> # ℹ 62 more rows
both |> unnest_product()
#> # A tibble: 460 × 13
#> companies_id grouped_by risk_category profile_ranking clustered
#> <chr> <chr> <chr> <dbl> <chr>
#> 1 antimonarchy_canine ipr_1.5C … medium 0.18 tent
#> 2 antimonarchy_canine ipr_1.5C … high 0.98 tent
#> 3 antimonarchy_canine weo_NZ 20… high 0.4 tent
#> 4 antimonarchy_canine weo_NZ 20… high 0.97 tent
#> 5 asteria_megalotomusquinqu… ipr_1.5C … medium 0.18 tent
#> 6 asteria_megalotomusquinqu… ipr_1.5C … high 0.98 tent
#> 7 asteria_megalotomusquinqu… weo_NZ 20… high 0.4 tent
#> 8 asteria_megalotomusquinqu… weo_NZ 20… high 0.97 tent
#> 9 quasifaithful_amphiuma ipr_1.5C … medium 0.18 tent
#> 10 quasifaithful_amphiuma ipr_1.5C … high 0.98 tent
#> # ℹ 450 more rows
#> # ℹ 8 more variables: activity_uuid_product_uuid <chr>, tilt_sector <chr>,
#> # scenario <chr>, year <dbl>, type <chr>,
#> # input_activity_uuid_product_uuid <chr>, input_tilt_sector <chr>,
#> # input_tilt_subsector <chr>
both |> unnest_company()
#> # A tibble: 1,152 × 4
#> companies_id grouped_by risk_category value
#> <chr> <chr> <chr> <dbl>
#> 1 antimonarchy_canine ipr_1.5C RPS_2030 high 0
#> 2 antimonarchy_canine ipr_1.5C RPS_2030 medium 1
#> 3 antimonarchy_canine ipr_1.5C RPS_2030 low 0
#> 4 antimonarchy_canine ipr_1.5C RPS_2030 NA 0
#> 5 antimonarchy_canine ipr_1.5C RPS_2050 high 1
#> 6 antimonarchy_canine ipr_1.5C RPS_2050 medium 0
#> 7 antimonarchy_canine ipr_1.5C RPS_2050 low 0
#> 8 antimonarchy_canine ipr_1.5C RPS_2050 NA 0
#> 9 antimonarchy_canine weo_NZ 2050_2030 high 1
#> 10 antimonarchy_canine weo_NZ 2050_2030 medium 0
#> # ℹ 1,142 more rows
Thresholds
Products in the highest percentile (greater than
high_threshold
) are classified as high transition risk
products. Products in the medium percentile (greater than
low_threshold
and lower or equal than
high_threshold
) are classified as medium transition risk
products. Products in the lowest percentile (lower or equal than
low_threshold
) are classified as low transition risk
products. For details about the default low_threshold
and
high_threshold
, refer to the documentation of the
corresponding *_profile_*()
function (e.g. sector_profile()
).