sb {sensitivity} | R Documentation |
Sequential Bifurcations
Description
sb
implements the Sequential Bifurcations screening
method (Bettonvil and Kleijnen 1996).
Usage
sb(p, sign = rep("+", p), interaction = FALSE)
## S3 method for class 'sb'
ask(x, i = NULL, ...)
## S3 method for class 'sb'
tell(x, y, ...)
## S3 method for class 'sb'
print(x, ...)
## S3 method for class 'sb'
plot(x, ...)
Arguments
p |
number of factors. |
sign |
a vector fo length |
interaction |
a boolean, |
x |
a list of class |
y |
a vector of model responses. |
i |
an integer, used to force a wanted bifurcation instead of that proposed by the algorithm. |
... |
not used. |
Details
The model without interaction is
Y=\beta_0 + \sum_{i=1}^p \beta_i X_i
while the model with interactions is
Y=\beta_0 + \sum_{i=1}^p \beta_i X_i + \sum_{1 \leq i < j \leq
p} \gamma_{ij} X_i X_j
In both cases, the factors are assumed to be uniformly distributed on
[-1,1]
. This is a difference with Bettonvil
et al. where the factors vary across [0,1]
in the former
case, while [-1,1]
in the latter.
Another difference with Bettonvil et al. is that in the current implementation, the groups are splitted right in the middle.
Value
sb
returns a list of class "sb"
, containing all
the input arguments detailed before, plus the following components:
i |
the vector of bifurcations. |
y |
the vector of observations. |
ym |
the vector of mirror observations (model with interactions only). |
The groups effects can be displayed with the print
method.
Author(s)
Gilles Pujol
References
B. Bettonvil and J. P. C. Kleijnen, 1996, Searching for important factors in simulation models with many factors: sequential bifurcations, European Journal of Operational Research, 96, 180–194.
Examples
# a model with interactions
p <- 50
beta <- numeric(length = p)
beta[1:5] <- runif(n = 5, min = 10, max = 50)
beta[6:p] <- runif(n = p - 5, min = 0, max = 0.3)
beta <- sample(beta)
gamma <- matrix(data = runif(n = p^2, min = 0, max = 0.1), nrow = p, ncol = p)
gamma[lower.tri(gamma, diag = TRUE)] <- 0
gamma[1,2] <- 5
gamma[5,9] <- 12
f <- function(x) { return(sum(x * beta) + (x %*% gamma %*% x))}
# 10 iterations of SB
sa <- sb(p, interaction = TRUE)
for (i in 1 : 10) {
x <- ask(sa)
y <- list()
for (i in names(x)) {
y[[i]] <- f(x[[i]])
}
tell(sa, y)
}
print(sa)
plot(sa)