morris: Morris's Elementary Effects Screening Method

Description Usage Arguments Details Value Warning messages References See Also Examples

View source: R/morris.R

Description

morris implements the Morris's elementary effects screening method (Morris 1992). This method, based on design of experiments, allows to identify the few important factors at a cost of r * (p + 1) simulations (where p is the number of factors). This implementation includes some improvements of the original method: space-filling optimization of the design (Campolongo et al. 2007) and simplex-based design (Pujol 2008).

Usage

1
2
3
4
5
6
7
8
9
morris(model = NULL, factors, r, design, binf = 0, bsup = 1,
       scale = TRUE, ...)
## S3 method for class 'morris'
tell(x, y = NULL, ...)
## S3 method for class 'morris'
print(x, ...)
## S3 method for class 'morris'
plot(x, identify = FALSE, ...)
plot3d.morris(x, alpha = c(0.2, 0), sphere.size = 1)

Arguments

model

a function, or a model with a predict method, defining the model to analyze.

factors

an integer giving the number of factors, or a vector of character strings giving their names.

r

either an integer giving the number of repetitions of the design, i.e. the number of elementary effect computed per factor, or a vector of two integers c(r1, r2) for the space-filling improvement (Campolongo et al.). In this case, r1 is the wanted design size, and r2 (> \code{r1}) is the size of the (bigger) population in which is extracted the design (this can throw a warning, see below).

design

a list specifying the design type and its parameters:

  • type = "oat" for Morris's OAT design (Morris 1992), with the parameters:

    • levels : either an integer specifying the number of levels of the design, or a vector of integers for different values for each factor.

    • grid.jump : either an integer specifying the number of levels that are increased/decreased for computing the elementary effects, or a vector of integers for different values for each factor. If not given, it is set to grid.jump = 1. Notice that this default value of one does not follow Morris's recommendation of levels / 2.

  • type = "simplex" for simplex-based design (Pujol 2008), with the parameter:

    • scale.factor : a numeric value, the homothety factor of the (isometric) simplexes. Edges equal one with a scale factor of one.

binf

either an integer, specifying the minimum value for the factors, or a vector for different values for each factor.

bsup

either an integer, specifying the maximum value for the factors, or a vector for different values for each factor.

scale

logical. If TRUE, the input and output data are scaled before computing the elementary effects.

x

a list of class "morris" storing the state of the screening study (parameters, data, estimates).

y

a vector of model responses.

identify

logical. If TRUE, the user selects with the mouse the factors to label on the (mu*, sigma) graph (see identify).

...

any other arguments for model which are passed unchanged each time it is called.

alpha

a vector of three values between 0.0 (fully transparent) and 1.0 (opaque) (see rgl.material). The first value is for the cone, the second for the planes.

sphere.size

a numeric value, the scale factor for displaying the spheres.

Details

plot2d draws the (mu*, sigma) graph.

plot3d.morris draws the (mu, mu*, sigma) graph (requires the rgl package). On this graph, the points are in a domain bounded by a cone and two planes (application of the Cauchy-Schwarz inequality).

Value

morris returns a list of class "morris", containing all the input argument detailed before, plus the following components:

call

the matched call.

X

a data.frame containing the design of experiments.

y

a vector of model responses.

ee

a r * p matrix of elementary effects for all the factors.

Notice that the statitics of interest (mu, mu* and sigma) are not stored. They can be printed by the print method, but to extract numerical values, one has to compute them with the following instructions:

1
2
3
mu <- apply(x$ee, 2, mean)
mu.star <- apply(x$ee, 2, function(x) mean(abs(x)))
sigma <- apply(x$ee, 2, sd)

Warning messages

"keeping r' repetitions out of r"

when generating the design of experiments, identical repetitions are removed, leading to a lower number than requested.

References

M. D. Morris, 1991, Factorial sampling plans for preliminary computational experiments, Technometrics, 33, 161–174.

F. Campolongo, J. Cariboni and A. Saltelli, 2007, An effective screening design for sensitivity, Environmental Modelling \& Software, 22, 1509–1518.

G. Pujol (2008), Simplex-based screening designs for estimating metamodels, submited to Reliability Engineering and System Safety.

See Also

decoupling

Examples

1
2
3
4
5
6
# Test case : the non-monotonic function of Morris
x <- morris(model = morris.fun, factors = 20, r = 4,
            design = list(type = "oat", levels = 5, grid.jump = 3))
print(x)
plot(x)
## Not run: morris.plot3d(x)  # (requires the package 'rgl')

Example output

Call:
morris(model = morris.fun, factors = 20, r = 4, design = list(type = "oat",     levels = 5, grid.jump = 3))

Model runs: 84 
            mu   mu.star     sigma
X1  74.2971846 74.297185 37.817745
X2  59.1823033 59.182303 45.484176
X3  42.7224757 42.722476 25.852099
X4  43.7759972 51.310410 44.019633
X5  30.2977227 30.297723 28.097214
X6  49.4481895 49.448190 14.691764
X7  31.9934038 31.993404 26.816066
X8  39.3185796 39.318580  5.642343
X9  39.4731732 39.473173  4.146857
X10 35.3082214 35.308221 10.367123
X11 -2.2324717  4.405104  4.476907
X12  4.1234693  4.123469  2.486802
X13  5.6988330  6.097709  5.399846
X14  4.8325299  5.396585  6.174558
X15 -0.8709480  1.996070  2.666617
X16  5.1544049  5.154405  4.331958
X17  5.0499500  5.287615  4.287739
X18  0.5790611  2.589274  3.249719
X19  6.5595300  6.787889  7.899043
X20 -5.7527173  6.441519  5.017636

sensitivity documentation built on May 2, 2019, 5:56 p.m.