Learn R Programming

sensitivity (version 1.10.1)

morris: Morris's Elementary Effects Screening Method

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 \times (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 2009).

Usage

morris(model = NULL, factors, r, design, binf = 0, bsup = 1,
       scale = FALSE, ...)
## S3 method for class 'morris':
tell(x, y = NULL, \dots)
## S3 method for class 'morris':
print(x, \dots)
## S3 method for class 'morris':
plot(x, identify = FALSE, \dots)
## S3 method for class 'morris':
plot3d(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 ca
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 desi
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 design of experiments is scaled after building the design and before computing the elementary effects so that all factors vary within the range [0,1]. For each factor, the scaling is done relativel
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.

Value

  • morris returns a list of class "morris", containing all the input argument detailed before, plus the following components:
  • callthe matched call.
  • Xa data.frame containing the design of experiments.
  • ya vector of model responses.
  • eea $r \times 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: mu <- apply(x$ee, 2, mean) mu.star <- apply(x$ee, 2, function(x) mean(abs(x))) sigma <- apply(x$ee, 2, sd) Contrary to earlier versions of the function, the scaling of factors isn't forced by default. Although, it is highly recommended to use the function with the argument scale = TRUE to avoid an uncorrect interpretation of factors that would have different orders of magnitude.

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

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, 2009, Simplex-based screening designs for estimating metamodels, Reliability Engineering and System Safety 94, 1156--1160.

Examples

Run this code
# 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)
library(rgl)
plot3d.morris(x)  # (requires the package 'rgl')

Run the code above in your browser using DataLab