PLIquantile: Perturbed-Law based sensitivity Indices (PLI) for quantile In sensitivity: Global Sensitivity Analysis of Model Outputs

Description

PLIquantile computes the Perturbed-Law based Indices (PLI) for quantile, which are robustness indices related to a quantile of a model output, estimated by a Monte Carlo method, See Sueur et al. (2017) and Iooss et al. (2020).

Usage

 ```1 2``` ```PLIquantile(order,x,y,deltasvector,InputDistributions,type="MOY",samedelta=TRUE, percentage=TRUE,nboot=0,conf=0.95,bootsample=TRUE) ```

Arguments

 `order` the order of the quantile to estimate. `x` the matrix of simulation points coordinates, one column per variable. `y` the vector of model outputs. `deltasvector` a vector containing the values of delta for which the indices will be computed. `InputDistributions` a list of list. Each list contains, as a list, the name of the distribution to be used and the parameters. Implemented cases so far: For a mean perturbation: Gaussian, Uniform, Triangle, Left Trucated Gaussian, Left Truncated Gumbel. Using Gumbel requires the package `evd`. For a variance perturbation: Gaussian, Uniform. `type` a character string in which the user will specify the type of perturbation wanted. The sense of "deltasvector" varies according to the type of perturbation: type can take the value "MOY",in which case deltasvector is a vector of perturbated means. type can take the value "VAR",in which case deltasvector is a vector of perturbated variances, therefore needs to be positive integers. `samedelta` a boolean used with the value "MOY" for type. If it is set at TRUE, the mean perturbation will be the same for all the variables. If not, the mean perturbation will be new_mean = mean+sigma*delta where mean, sigma are parameters defined in InputDistributions and delta is a value of deltasvector. `percentage` a boolean that defines the formula used for the PLI. If it is set at FALSE, the initially proposed formula is used (see Sueur et al., 2017). If not (set as TRUE), the PLI is given in percentage of variation of the quantile (see Iooss et al., 2020). `nboot` the number of bootstrap replicates. `conf` the confidence level for bootstrap confidence intervals. `bootsample` If TRUE, the uncertainty about the original quantile estimation is taken into account in the PLI confidence intervals (see Iooss et al., 2021). If FALSE, standard confidence intervals are computed for the PLI. It mainly changes the CI at small delta values.

Value

`PLIquantile` returns a list of matrices (each column corresponds to an input, each line corresponds to a twist of amplitude delta) containing the following components:

 `PLI` the PLI. `PLICIinf` the bootstrap lower confidence interval values of the PLI. `PLICIsup` the bootstrap upper confidence interval values of the PLI. `quantile` the perturbed quantile. `quantileCIinf` the bootstrap lower confidence interval values of the perturbed quantile. `quantileCIsup` the bootstrap upper confidence interval values of the perturbed quantile.

Author(s)

Paul Lemaitre, Bertrand Iooss, Thibault Delage and Roman Sueur

References

T. Delage, R. Sueur and B. Iooss, 2018, Robustness analysis of epistemic uncertainties propagation studies in LOCA assessment thermal-hydraulic model, ANS Best Estimate Plus Uncertainty International Conference (BEPU 2018), Lucca, Italy, May 13-19, 2018.

C. Gauchy, J. Stenger, R. Sueur and B. Iooss, An information geometry approach for robustness analysis in uncertainty quantification of computer codes, Preprint, https://hal.archives-ouvertes.fr/hal-02425477

B. Iooss, V. Verges and V. Larget, BEPU robustness analysis via perturbed-law based sensitivity indices, ANS Best Estimate Plus Uncertainty International Conference (BEPU 2020), Sicily, Italy, June 2021.

P. Lemaitre, E. Sergienko, A. Arnaud, N. Bousquet, F. Gamboa and B. Iooss, 2015, Density modification based reliability sensitivity analysis, Journal of Statistical Computation and Simulation, 85:1200-1223.

R. Sueur, N. Bousquet, B. Iooss and J. Bect, 2016, Perturbed-Law based sensitivity Indices for sensitivity analysis in structural reliability, Proceedings of the SAMO 2016 Conference, Reunion Island, France, December 2016.

R. Sueur, B. Iooss and T. Delage, 2017, Sensitivity analysis using perturbed-law based indices for quantiles and application to an industrial case, 10th International Conference on Mathematical Methods in Reliability (MMR 2017), Grenoble, France, July 2017.

```PLI, PLIsuperquantile PLIquantile_multivar, PLIsuperquantile_multivar```
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81``` ```# Model: 3D function distribution = list() for (i in 1:3) distribution[[i]]=list("norm",c(0,1)) # Monte Carlo sampling N = 5000 X = matrix(0,ncol=3,nrow=N) for(i in 1:3) X[,i] = rnorm(N,0,1) Y = 2 * X[,1] + X[,2] + X[,3]/2 q95 = quantile(Y,0.95) nboot=20 # put nboot=200 for consistency # sensitivity indices with perturbation of the mean v_delta = seq(-1,1,1/10) toto = PLIquantile(0.95,X,Y,deltasvector=v_delta, InputDistributions=distribution,type="MOY",samedelta=TRUE, percentage=FALSE,nboot=nboot) # Plotting the PLI par(mar=c(4,5,1,1)) plot(v_delta,toto\$PLI[,2],ylim=c(-1.5,1.5),xlab=expression(delta), ylab=expression(hat(PLI[i*delta])),pch=19,cex=1.5) points(v_delta,toto\$PLI[,1],col="darkgreen",pch=15,cex=1.5) points(v_delta,toto\$PLI[,3],col="red",pch=17,cex=1.5) lines(v_delta,toto\$PLICIinf[,2],col="black") lines(v_delta,toto\$PLICIsup[,2],col="black") lines(v_delta,toto\$PLICIinf[,1],col="darkgreen") lines(v_delta,toto\$PLICIsup[,1],col="darkgreen") lines(v_delta,toto\$PLICIinf[,3],col="red") lines(v_delta,toto\$PLICIsup[,3],col="red") abline(h=0,lty=2) legend(0.8,1.5,legend=c("X1","X2","X3"), col=c("darkgreen","black","red"),pch=c(15,19,17),cex=1.5) # Plotting the perturbed quantiles par(mar=c(4,5,1,1)) plot(v_delta,toto\$quantile[,2],ylim=c(1.5,6.5),xlab=expression(delta), ylab=expression(hat(q[i*delta])),pch=19,cex=1.5) points(v_delta,toto\$quantile[,1],col="darkgreen",pch=15,cex=1.5) points(v_delta,toto\$quantile[,3],col="red",pch=17,cex=1.5) lines(v_delta,toto\$quantileCIinf[,2],col="black") lines(v_delta,toto\$quantileCIsup[,2],col="black") lines(v_delta,toto\$quantileCIinf[,1],col="darkgreen") lines(v_delta,toto\$quantileCIsup[,1],col="darkgreen") lines(v_delta,toto\$quantileCIinf[,3],col="red") lines(v_delta,toto\$quantileCIsup[,3],col="red") abline(h=q95,lty=2) legend(0.5,2.4,legend=c("X1","X2","X3"), col=c("darkgreen","black","red"),pch=c(15,19,17),cex=1.5) ########################################################### # Plotting the PLI in percentage with refined confidence intervals toto = PLIquantile(0.95,X,Y,deltasvector=v_delta, InputDistributions=distribution,type="MOY",samedelta=TRUE, percentage=TRUE,nboot=nboot,bootsample=FALSE) par(mar=c(4,5,1,1)) plot(v_delta,toto\$PLI[,2],ylim=c(-0.6,0.6),xlab=expression(delta), ylab=expression(hat(PLI[i*delta])),pch=19,cex=1.5) points(v_delta,toto\$PLI[,1],col="darkgreen",pch=15,cex=1.5) points(v_delta,toto\$PLI[,3],col="red",pch=17,cex=1.5) lines(v_delta,toto\$PLICIinf[,2],col="black") lines(v_delta,toto\$PLICIsup[,2],col="black") lines(v_delta,toto\$PLICIinf[,1],col="darkgreen") lines(v_delta,toto\$PLICIsup[,1],col="darkgreen") lines(v_delta,toto\$PLICIinf[,3],col="red") lines(v_delta,toto\$PLICIsup[,3],col="red") abline(h=0,lty=2) legend(0,0.6,legend=c("X1","X2","X3"), col=c("darkgreen","black","red"),pch=c(15,19,17),cex=1.5) # another idea: use the plotCI() fct (from plotrix package) for the CI plotting ```