# Sequential Bifurcations

### Description

`sb`

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

### Usage

1 2 3 4 5 6 7 8 9 |

### 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 <= 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.

### 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

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)
``` |