Global Sensitivity Analysis

Sensitivity analysis (SA) is the study of how uncertainty in the output of a model can be apportioned to different sources of uncertainty in the model input. A sensitivity analysis is considered to be global when all the input factors are varied simultaneously and the sensitivity is evaluated over the entire range of each input factor. It provides an overall view on the influence of inputs on outputs as opposed to a local view of partial derivatives as in local sensitivity analysis.

GlobalSensitivity currently provides the following global sensitivity analysis methods:

  1. Morris OAT Method
  2. Sobol Method
  3. eFAST Method
  4. Regression based sensitivity
  5. Derivative Based Global Sensitivity Measures

Global Sensitivity Analysis (GSA) is performed using the gsa function. This function's signature is:

GlobalSensitivity.gsaFunction
function GlobalSensitivity.gsa(
  model::PumasModel,
  population::Union{Population,Subject},
  params::NamedTuple,
  method::GlobalSensitivity.GSAMethod,
  vars = [:dv],
  p_range_low::NamedTuple = NamedTuple(),
  p_range_high::NamedTuple = NamedTuple();
  constantcoef::Tuple = (),
  rng::AbstractRNG = Random.default_rng(),
  diffeq_options::NamedTuple = NamedTuple(),
  ensemblealg = EnsembleSerial(),
  samples = 1000,
  kwargs...,
)

Perform a global sensitivity analysis (GSA) of the population mean of the derived variables vars on the parameters of the Pumas model.

Arguments

  • model: a PumasModel.
  • population: a Population of Subjects or a single Subject.
  • params: a named tuple of parameters.
  • method: one of the GSA methods from GlobalSensitivity.jl such as Sobol(), Morris(), eFAST(), or RegressionGSA().
  • vars: a list of the observed variables (defined in the @observed block) to run GSA on.
  • p_range_low & p_range_high: the lower and upper bounds for the parameters you want to run the GSA on. For parameters without lower or upper bounds in p_range_low or p_range_high, respectively, bound(s) in the @param block are used. If bounds for a parameter are neither specified as arguments nor in the @param block, an error is thrown.

Keyword arguments

  • constantcoef: A tuple of the names of the parameters that are not to be varied in the GSA.
  • rng: The random number generator to use.
  • samples: The number of samples to use for the GSA.
  • diffeq_options: The options of the differential equation solver, passed on to simobs when computing the derived variables of interest.
  • ensemblealg: The mode of parallelization of the simobs calls when computing the derived variables of interest.
  • kwargs...: The remaining keyword arguments are passed on to GlobalSensitivity.gsa, as documented in GlobalSensitivity.jl. In particular, evaluation of GSA samples can be parallelized by setting batch = true (default: batch = false).

References

For more details regarding the GSA methods, their options, and keyword arguments please consult the GlobalSensitivity.jl documentation.

The gsa function provided in Pumas assumes that you want to run GSA on all the parameters of the model and also constrains you to run GSA only on variables in the @observed block. For more control on the input and output you can create a custom function and use the gsa function from the GlobalSensitivity package which is callable on any Julia function directly.