Global Sensitivity Analysis in Life Cycle Assessment

TL;DR

In the following we explain how Global Sensitivity Analysis (GSA) is used, in order to determine which datasets in background life cycle inventories contribute the most to the uncertainties in environmental impact assessment results. To this end, we introduce the reader to the matrix-based Life Cycle Assessment (LCA) and describe the building blocks of the pipeline for GSA in LCA that is implemented in python.

1. Background and motivation

The need for environmental impact reduction is becoming more and more ap- parent. A well established tool for impact calculation is Life Cycle Assessment (LCA). While the fundamental methodology of LCA has progressed to a fine level, scientific verification of the results is difficult due to uncertainties arising on different stages of LCA (see Figure 1).

lca_stages

Within OASES we would like to improve data quality in databases, such as ecoinvent, exiobase, foreground databases, etc, in order to increase reliability of LCA results. We tackle this issue by determining which datasets contribute the most to the uncertainties using GSA - the study of how uncertainty in the output of a model (numerical or otherwise) can be apportioned to different sources of uncertainty in the model input (Saltelli et al, 2004).

But what exactly is the model in our case? Figure 2 below shows how impact scores are calculated using matrices.

matrix_based_lca

Or symbolically: 

lca_formula

Any matrix entries on the right-hand side can be model inputs, which we will denote as X, and the impact scores on the left are the model outputs Y . The inventory datasets are stored in biosphere and technosphere. These are the datasets to be improved.

Now let’s take a closer look at the Sobol’ based GSA.

2. GSA pipeline

First of all, there are two types of Sobol’ sensitivity indices: first- and total order (Sobol', 2001). For i-th input they are computed using the following formulas

sobol

where Var is variance, E is expectation, and X-i notation means that all X’s are taken but i-th.

Intuitively, each index shows how much of output variance is explained by variance in a given input. High first-order index indicates an influential input, while low total order index points to a non-influential one.

For complicated non-linear high-dimensional systems like ours, it is hard to compute Sobol’ indices analytically, and a better way is by running Monte Carlo simulations as shown in figure below

mc

Note that the inputs in this case have to be sampled from their respective distributions with an appropriate sampling strategy, for example Pseudo-random, Quasi-random, Latin Hypercube, see figure below respectively. All of them yield different space coverage and some might introduce bias into sampling. The choice of sampling is fully dependent on the problem at hand.

sampling

Then, Sobol’ GSA pipeline is a combination of the following blocks

gsa_pipeline

3. Implementation

All implementation are done in Python 3. We used Quasi-random samples and Sobol’ indices from the Python package SALib. The LCA part was taken from the package Brightway2. Missing links between the blocks were implemented by us and are available here.

Literature

Andrea Saltelli, Stefano Tarantola, Francesca Campolongo, and Marco Ratto. Sensitivity analysis in practice: a guide to assessing scientific models. John Wiley & Sons, 2004.

Ilya M Sobol’. Global sensitivity indices for nonlinear mathematical models and their Monte Carlo estimates. Mathematics and Computers in Simula- tion, 55(1-3):271–280, 2001.