Last chance! 50% off unlimited learning
Sale ends in
soboljansen
implements the Monte Carlo estimation of
the Sobol' indices for both first-order and total indices at the same
time (alltogether $2p$ indices), at a total cost of $(p+2)
\times n$ model evaluations. These are called the Jansen estimators.soboljansen(model = NULL, X1, X2, nboot = 0, conf = 0.95, ...)
## S3 method for class 'soboljansen':
tell(x, y = NULL, return.var = NULL, \dots)
## S3 method for class 'soboljansen':
print(x, \dots)
## S3 method for class 'soboljansen':
plot(x, ylim = c(0, 1), y_col = NULL, y_dim3 = NULL, ...)
predict
method,
defining the model to analyze."sobol"
storing the state of the
sensitivity study (parameters, data, estimates).x
.x$y
to be
used for plotting the corresponding sensitivity indices (only applies if
x$y
is a matrix or an array). If set to NULL
(as per default)
and x$y
to be used for plotting the corresponding sensitivity indices
(only applies if x$y
is an array). If set to NULL
(as per
default) and soboljansen
: any other arguments for model
which are passed unchanged each time it is called.soboljansen
returns a list of class "soboljansen"
, containing all
the input arguments detailed before, plus the following components:data.frame
containing the design of experiments.model
).return.var
(for example, bootstrap outputs V.boot
,
S.boot
and T.boot
).soboljansen
also supports matrices and three-dimensional
arrays as output of model
. If the model output is a matrix or an array,
V
, S
and T
are matrices or arrays as well (depending on the
type of y
and the value of nboot
).
The bootstrap outputs V.boot
, S.boot
and T.boot
can only be
returned if the model output is a vector (using argument return.var
). For
matrix or array output, these objects can't be returned.sobol, sobol2002, sobol2007, sobolmartinez, sobolEff, sobolmara,sobolMultOut
# Test case : the non-monotonic Sobol g-function
# The method of sobol requires 2 samples
# There are 8 factors, all following the uniform distribution
# on [0,1]
library(boot)
n <- 1000
X1 <- data.frame(matrix(runif(8 * n), nrow = n))
X2 <- data.frame(matrix(runif(8 * n), nrow = n))
# sensitivity analysis
x <- soboljansen(model = sobol.fun, X1, X2, nboot = 100)
print(x)
plot(x)
# Only for demonstration purposes: a model function returning a matrix
sobol.fun_matrix <- function(X){
res_vector <- sobol.fun(X)
cbind(res_vector, 2 * res_vector)
}
x_matrix <- soboljansen(model = sobol.fun_matrix, X1, X2)
plot(x_matrix, y_col = 2)
title(main = "y_col = 2")
# Also only for demonstration purposes: a model function returning a
# three-dimensional array
sobol.fun_array <- function(X){
res_vector <- sobol.fun(X)
res_matrix <- cbind(res_vector, 2 * res_vector)
array(data = c(res_matrix, 5 * res_matrix),
dim = c(length(res_vector), 2, 2))
}
x_array <- soboljansen(model = sobol.fun_array, X1, X2)
plot(x_array, y_col = 2, y_dim3 = 2)
title(main = "y_col = 2, y_dim3 = 2")
Run the code above in your browser using DataLab