Flash Sale | 50% off
Get 50% off unlimited learning

pomp (version 0.39-3)

pomp: Partially-observed Markov process object.

Description

Create a new pomp object to hold a partially-observed Markov process model together with a uni- or multi-variate time series.

Usage

## S3 method for class 'data.frame':
pomp(data, times, t0, \dots, rprocess, dprocess, rmeasure, dmeasure,
       measurement.model,
       skeleton = NULL, skeleton.type = c("map","vectorfield"),
       skeleton.map = NULL, skeleton.vectorfield = NULL,
       initializer, covar, tcovar,
       obsnames, statenames, paramnames, covarnames,
       PACKAGE, parameter.transform, parameter.inv.transform)
## S3 method for class 'numeric':
pomp(data, times, t0, \dots, rprocess, dprocess, rmeasure, dmeasure,
       measurement.model,
       skeleton = NULL, skeleton.type = c("map","vectorfield"),
       skeleton.map = NULL, skeleton.vectorfield = NULL,
       initializer, covar, tcovar,
       obsnames, statenames, paramnames, covarnames,
       PACKAGE, parameter.transform, parameter.inv.transform)
## S3 method for class 'matrix':
pomp(data, times, t0, \dots, rprocess, dprocess, rmeasure, dmeasure,
       measurement.model,
       skeleton = NULL, skeleton.type = c("map","vectorfield"),
       skeleton.map = NULL, skeleton.vectorfield = NULL,
       initializer, covar, tcovar,
       obsnames, statenames, paramnames, covarnames,
       PACKAGE, parameter.transform, parameter.inv.transform)
## S3 method for class 'pomp':
pomp(data, times, t0, \dots, rprocess, dprocess, rmeasure, dmeasure,
       measurement.model, skeleton, skeleton.type,
       initializer, covar, tcovar,
       obsnames, statenames, paramnames, covarnames,
       PACKAGE, parameter.transform, parameter.inv.transform)

Arguments

data, times
The time series data and times at which observations are made. data can be specified as a vector, a matrix, a data-frame, or a pomp object.. If data is a numeric vector, times must be a numeric v
t0
The zero-time. This must be no later than the time of the first observation, times[1]. The stochastic dynamical system is initialized at time t0.
rprocess
optional function; a function of prototype rprocess(xstart,times,params,...) that simulates from the unobserved process. The easiest way to specify rprocess is to use one of the plugins
dprocess
optional function; a function of prototype dprocess(x,times,params,log,...) that evaluates the likelihood of a sequence of consecutive state transitions. The easiest way to specify dprocess is to use one of the
rmeasure
optional; the measurement model simulator. This can be specified in one of three ways: (1) as a function of prototype rmeasure(x,t,params,...) that makes a draw from the observation process given states x, time t
dmeasure
optional; the measurement model probability density function. This can be specified in one of three ways: (1) as a function of prototype dmeasure(y,x,t,params,log,...) that computes the p.d.f. of y given x, <
measurement.model
optional; a formula or list of formulae, specifying the measurement model. These formulae are parsed internally and used to generate rmeasure and dmeasure functions. If measurement.model is given it overrides
skeleton, skeleton.type, skeleton.map, skeleton.vectorfield
The function skeleton specifies the deterministic skeleton of the unobserved Markov process. If we are dealing with a discrete-time Markov process, its deterministic skeleton is a map: indicate this by specifying skeleton.type="map"
initializer
optional function of prototype initializer(params,t0,...) that yields initial conditions for the state process when given a vector, params, of parameters. By default (i.e., if it is unspecified when pomp is calle
covar, tcovar
An optional table of covariates: covar is the table (with one column per variable) and tcovar the corresponding times (one entry per row of covar). covar can be specified as either a matrix or a data
obsnames, statenames, paramnames, covarnames
Optional character vectors specifying the names of observables, state variables, parameters, or covariates, respectively. These are only used in the event that one or more of the basic functions (rprocess, dprocess, rme
PACKAGE
An optional string giving the name of the dynamically loaded library in which any native routines are to be found.
parameter.transform, parameter.inv.transform
Optional functions specifying parameter transformations. These functions must have arguments params and .... parameter.transform should transform parameters from the user's scale to the scale that rproc
...
Any additional arguments given to pomp will be stored in the pomp object and passed as arguments to each of the functions rprocess, dprocess, rmeasure

Value

  • An object of class pomp. If data is an object of class pomp, then by default the returned pomp object is identical to data. If additional arguments are given, these override the defaults.

Warning

Some error checking is done by pomp, but complete error checking is impossible. If the user-specified functions do not conform to the above specifications (see Details), then the results may be invalid. In particular, if both rmeasure and dmeasure are specified, the user should verify that these two functions correspond to the same model and if skeleton is specified, the user is responsible for verifying that it corresponds to the true deterministic skeleton of the model. Each pomp-package algorithm uses some subset of the five basic components (rprocess, dprocess, rmeasure, dmeasure, skeleton). If an algorithm requires a component that was not given in the construction of the pomp object, an error is generated.

Details

It is not typically necessary (or desirable, or even feasible) to define all of the functions rprocess, dprocess, rmeasure, dmeasure, and skeleton in any given problem. Each algorithm makes use of a different subset of these functions. In general, the specification of process-model codes rprocess and/or dprocess can be somewhat nontrivial: for this reason, plugins have been developed to streamline this process for the user. Currently, if one's process model evolves in discrete time or one is willing to make such an approximation (e.g., via an Euler approximation), then the euler.sim or onestep.sim plugin for rprocess and onestep.dens plugin for dprocess are available. For exact simulation of certain continuous-time Markov chains, an implementation of Gillespie's algorithm is available (see gillespie.sim). To use the plugins, consult the help documentation (?plugins) and the vignettes.

It is anticipated that, in specific cases, it will be possible to obtain increased computational efficiency by writing custom versions of rprocess and/or dprocess. See the Advanced Topics in pomp vignette for a discussion of this. If such custom versions are desired, the following describes how each of these functions should be written in this case. [object Object],[object Object]

The measurement-model, deterministic skeleton, and initializer components are easily specified without the use of plugins. The following is a guide to writing these components. [object Object],[object Object],[object Object],[object Object]

See Also

pomp-methods, plugins, time, time<-, timezero, timezero<-, coef, coef<-, obs, states, window, as.data.frame.pomp

Examples

Run this code
## For examples, see the vignettes, the data()-loadable
## example \code{pomp} objects, and the provided example files.
vignette("intro_to_pomp")
vignette("advanced_topics_in_pomp")
data(package="pomp")
pomp.home <- system.file("examples",package="pomp")
pomp.examples <- list.files(pomp.home)
file.show(
          file.path(pomp.home,pomp.examples),
          header=paste("======",pomp.examples,"=======")
         )

Run the code above in your browser using DataLab