Delta Moment-Independent Method

GlobalSensitivity.DeltaMoment — Type
DeltaMoment(; nboot = 500, conf_level = 0.95, Ygrid_length = 2048,
                 num_classes = nothing)

Keywords

  • nboot::Int = 500: number of bootstrap repetitions.
  • conf_level::Real = 0.95: confidence level for bootstrap intervals.
  • Ygrid_length::Int = 2048: number of quadrature points used by kernel-density estimation and integration. A power of two is efficient for FFT calculations.
  • num_classes = nothing: number of classes used to form conditional output distributions. nothing selects the implementation default.

Method Details

The Delta moment-independent method relies on new estimators for density-based statistics. It allows for the estimation of both distribution-based sensitivity measures and of sensitivity measures that look at contributions to a specific moment. One of the primary advantage of this method is the independence of computation cost from the number of parameters.

Note

DeltaMoment only works for scalar output.

API

gsa(f, method::DeltaMoment, p_range; samples, batch = false,
         rng::AbstractRNG = Random.default_rng())
gsa(X, Y, method::DeltaMoment; rng::AbstractRNG = Random.default_rng())

Example

using GlobalSensitivity, Test

function ishi(X)
    A= 7
    B= 0.1
    sin(X[1]) + A*sin(X[2])^2+ B*X[3]^4 *sin(X[1])
end

lb = -ones(3)*π
ub = ones(3)*π

m = gsa(ishi,DeltaMoment(),fill([lb[1], ub[1]], 3), samples=1000)


samples = 1000
X = QuasiMonteCarlo.sample(samples, lb, ub, QuasiMonteCarlo.SobolSample())
Y = ishi.(@view X[:, i] for i in 1:samples)

m = gsa(X, Y, DeltaMoment())
source