Post process a sample to obtain sensitivity indices. This function takes a univariate output
which is generated as a result of running a Monte Carlo sample from SA_sample() through a system.
Then it estimates sensitivity indices using this sample.
Arguments
- yy
A vector of model output values, as a result of a \(N(d+2)\) Monte Carlo design.
- N
The number of sample points per dimension.
- d
The dimensionality of the sample
- Nboot
Number of bootstrap draws for estimates of confidence intervals on sensitivity indices. If this is not specified, bootstrapping is not applied.
Value
A list with the output variance, plus a data frame of first order and total order sensitivity indices for
each variable, as well as bootstrapped confidence intervals if !is.null(Nboot).
Details
This function is built to be used inside get_sensitivity().
See also
get_sensitivity()Perform global sensitivity or uncertainty analysis on a COINSA_sample()Input design for estimating sensitivity indices
Examples
# This is a generic example rather than applied to a COIN (for reasons of speed)
# A simple test function
testfunc <- function(x){
x[1] + 2*x[2] + 3*x[3]
}
# First, generate a sample
X <- SA_sample(500, 3)
# Run sample through test function to get corresponding output for each row
y <- apply(X, 1, testfunc)
# Estimate sensitivity indices using sample
SAinds <- SA_estimate(y, N = 500, d = 3, Nboot = 1000)
SAinds$SensInd
#> Variable Si STi Si_q5 Si_q95 STi_q5 STi_q95
#> 1 V1 0.01720215 0.08130432 -0.07435191 0.1085802 0.07441833 0.08806782
#> 2 V2 0.11565972 0.29849936 -0.04906497 0.2705599 0.27274578 0.32764396
#> 3 V3 0.88827761 0.67981024 0.65305371 1.1462452 0.62228774 0.73518590
# Notice that total order indices have narrower confidence intervals than first order.