PLI

class PLI(*args)

PLI base class.

See also

PLIMean, PLIVariance

Notes

The Perturbation Law Indices are based upon the modification of the probability density function (pdf) of the random inputs, when the quantity of interest is a failure probability. An input is considered influential if the input pdf modification leads to a broad change in the failure probability. These sensitivity indices can be computed using the sole set of simulations that has already been used to estimate the failure probability, thus limiting the number of calls to the numerical model. In this implementation, the sample must come from a Monte Carlo simulation.

The input perturbation is defined to obtain the perturbed density function as the closest to the original one, in the sense of the Kullback-Leibler divergence. The implemented perturbation includes a mean shift and a variance shift, accessible through the derived class. The current implementation only allows to modifiy Normal and Uniform density functions.

In order to compare equivalently the indices when the input distributions are not the same, it is possible to plot the indices with respect to the Hellinger distance.

These indices have been developed by Paul Lemaitre:
  • Paul Lemaître, Ekatarina Sergienko, Aurélie Arnaud, Nicolas Bousquet, Fabrice Gamboa, et al.. Density modification based reliability sensitivity analysis. 2012.
  • Paul Lemaitre. Analyse de sensibilité en fiabilité des structures. Mécanique des structures [physics.class-ph]. Université de Bordeaux, 2014. Français.

Methods

computeConfidenceInterval([confidenceLevel]) Accessor to the confidence interval of the indices.
drawIndices([confidenceLevel, label, …]) Draw all indices
drawMarginal1DPDF(marginal, idelta[, …]) Draw the probability density function of a margin.
getDeltaSample() Accessor to applied delta values.
getGaussKronrod() Accessor to the Gauss Kronrod algorithm used to compute integrals
getIndices() Accessor to the Pertubation Law Indices.
getOriginalDelta(marginal) Accessor to the original delta value
getPerturbedProbabilityEstimate() Accessor to the perturbed probability of failure
run() Run the analysis:
setGaussKronrod(algo) Accessor to the Gauss Kronrod algorithm used to compute integrals
computeConfidenceInterval(confidenceLevel=0.95)

Accessor to the confidence interval of the indices.

Parameters:

confidenceLevel : 0 < float < 1

The wanted confidence level to compute the interval.

Returns:

ci : list of 2d sequence of float

A list of arrays for each marginal containing the lower and upper bound of the confidence interval for each delta values.

drawIndices(confidenceLevel=0.95, label=None, hellinger=False, name=None)

Draw all indices

Parameters:

confidenceLevel : 0 < float < 1 or None

The wanted confidence level to compute the interval. If set to ‘None’ only the indices are plotted.

label : list of string

The labels of each parameters.

hellinger : bool

If True, the indices are plotted with respect to the hellinger distance between the original PDF and the perturbed PDF.

Returns:

fig : matplotlib.figure

Matplotlib figure object.

ax : matplotlib.axes

Matplotlib axes object.

drawMarginal1DPDF(marginal, idelta, showOriginal=True, label=None, xMin=None, xMax=None, pointNumber=None, name=None)

Draw the probability density function of a margin.

Parameters:

marginal : int

The index of the margin of interest.

idelta : int

The index in the delta array.

showOriginal : bool

Display on the same figure the original pdf or not.

x_min : float

The starting value that is used for meshing the x-axis. Defaults uses the quantile associated to the probability level 0.05.

x_max : float, \(x_{\max} > x_{\min}\)

The ending value that is used for meshing the x-axis. Defaults uses the quantile associated to the probability level 0.95.

n_points : int

The number of points that is used for meshing the x-axis. Defaults uses DistributionImplementation-DefaultPointNumber from the openturns.ResourceMap.

Returns:

fig : matplotlib.figure

Matplotlib figure object.

ax : matplotlib.axes

Matplotlib axes object.

getDeltaSample()

Accessor to applied delta values.

getGaussKronrod()

Accessor to the Gauss Kronrod algorithm used to compute integrals

getIndices()

Accessor to the Pertubation Law Indices.

getOriginalDelta(marginal)

Accessor to the original delta value

Parameters:

marginal : int

The indice of the perturbed marginal.

getPerturbedProbabilityEstimate()

Accessor to the perturbed probability of failure

Returns:

pfdelta : float

The probability of failure computed with the perturbed density function.

run()

Run the analysis: - get the failure sample - evaluate the probabilities with the perturbed distributions - define the estimator distributions

setGaussKronrod(algo)

Accessor to the Gauss Kronrod algorithm used to compute integrals

Parameters:

algo : openturns.GaussKronrod

The algorithm