sb: Sequential Bifurcations

Description Usage Arguments Details Value References Examples

View source: R/sb.R

Description

sb implements the Sequential Bifurcations screening method (Bettonvil and Kleijnen 1996). This is an alpha version that might strongly evolve in the future.

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.

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 May 2, 2019, 5:56 p.m.