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]