# sb: Sequential Bifurcations In sensitivity: Global Sensitivity Analysis of Model Outputs

## Description

`sb` implements the Sequential Bifurcations screening method (Bettonvil and Kleijnen 1996).

## Usage

 ```1 2 3 4 5 6 7 8 9``` ```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 `p` filled with `"+"` and `"-"`, giving the (assumed) signs of the factors effects. `interaction` a boolean, `TRUE` if the model is supposed to be with interactions, `FALSE` otherwise. `x` a list of class `"sb"` storing the state of the screening study at the current iteration. `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 <= i < j <= 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.

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

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24``` ```# 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) ```

### Example output

```Groups:
group     effect
1    1-7  2.6140672
2   8-10  0.9676082
3  11-12  0.2634521
4     13 95.7250225
5  14-19 49.6935754
6  20-22  0.9525346
7  23-24 79.6623146
8     25  0.3257513
9  26-38 58.6933164
10 39-50 38.8770230
```

sensitivity documentation built on Sept. 24, 2017, 1:05 a.m.