design {pomp} | R Documentation

## Design matrices for pomp calculations

### Description

These functions are useful for generating designs for the exploration of parameter space.

`profileDesign` generates a data-frame where each row can be used as the starting point for a profile likelihood calculation.

`runifDesign` generates a design based on random samples from a multivariate uniform distribution.

`sliceDesign` generates points along slices through a specified point.

`sobolDesign` generates a Latin hypercube design based on the Sobol' low-discrepancy sequence.

### Usage

    profileDesign(..., lower, upper, nprof, type = c("sobol", "runif"),
      stringsAsFactors = getOption("stringsAsFactors", FALSE))

    runifDesign(lower = numeric(0), upper = numeric(0), nseq)

    sliceDesign(center, ...)

    sobolDesign(lower = numeric(0), upper = numeric(0), nseq)

### Arguments

`...` | In `profileDesign`, additional arguments specify the parameters over which to profile and the values of these parameters. In `sliceDesign`, additional numeric vector arguments specify the locations of points along the slices.
`lower, upper` | named numeric vectors giving the lower and upper bounds of the ranges, respectively.
`nprof` | The number of points per profile point.
`type` | the type of design to use. `type="sobol"` uses `sobolDesign`; `type="runif"` uses `runifDesign`.
`stringsAsFactors` | should character vectors be converted to factors?
`nseq` | Total number of points requested.
`center` | `center` is a named numeric vector specifying the point through which the slice(s) is (are) to be taken.

### Details

The Sobol' sequence generation is performed using codes from the NLopt library by S. Johnson.

### Value

`profileDesign` returns a data frame with `nprof` points per profile point.

`runifDesign` returns a data frame with `nseq` rows and one column for each variable named in `lower` and `upper`.

`sliceDesign` returns a data frame with one row per point. The ‘slice’ variable indicates which slice the point belongs to.

`sobolDesign` returns a data frame with `nseq` rows and one column for each variable named in `lower` and `upper`.

### Author(s)

Aaron A. King

### References

P. Bratley and B. L. Fox, Algorithm 659 Implementing Sobol's quasirandom sequence generator, ACM Trans. Math. Soft. 14, 88–100, 1988.

S. Joe and F. Y. Kuo, Remark on algorithm 659: Implementing Sobol's quasirandom sequence generator ACM Trans. Math. Soft 29, 49–57, 2003.

Steven G. Johnson, The NLopt nonlinear-optimization package, http://ab-initio.mit.edu/nlopt

### Examples

    ## Sobol' low-discrepancy design
    plot(sobolDesign(lower=c(a=0,b=100),upper=c(b=200,a=1),nseq=100))

    ## Uniform random design
    plot(runifDesign(lower=c(a=0,b=100),upper=c(b=200,a=1),100))

    ## A one-parameter profile design:
    x <- profileDesign(p=1:10,lower=c(a=0,b=0),upper=c(a=1,b=5),nprof=20)
    dim(x)
    plot(x)

    ## A two-parameter profile design:
    x <- profileDesign(p=1:10,q=3:5,lower=c(a=0,b=0),upper=c(b=5,a=1),nprof=200)
    dim(x)
    plot(x)

    ## A two-parameter profile design with random points:
    x <- profileDesign(p=1:10,q=3:5,lower=c(a=0,b=0),upper=c(b=5,a=1),nprof=200,type="runif")
    dim(x)
    plot(x)

    ## A single 11-point slice through the point c(A=3,B=8,C=0) along the B direction.
    x <- sliceDesign(center=c(A=3,B=8,C=0),B=seq(0,10,by=1))
    dim(x)
    plot(x)

    ## Two slices through the same point along the A and C directions.
    x <- sliceDesign(c(A=3,B=8,C=0),A=seq(0,5,by=1),C=seq(0,5,length=11))
    dim(x)
    plot(x)

[Package pomp version 2.3 Index]