pomp object to hold a partially-observed Markov process model together with a uni- or multi-variate time series.pomp(data, times, t0, ..., rprocess, dprocess, rmeasure, dmeasure,
measurement.model, skeleton.map, skeleton.vectorfield,
initializer, covar, tcovar,
obsnames, statenames, paramnames, covarnames,
PACKAGE)nobs x ntimes, where nobs is the number of observed variables and ntimes is the number of times at which observations were made.
One can alstimes must be a strictly increasing numeric vector.
If data is a data-frame, times should be the name of the column of observation times.times[1].
The stochastic dynamical system is initialized at time t0.rprocess(xstart,times,params,...) that simulates from the unobserved process.
The easiest way to specify rprocess is to use one of the pluginsdprocess(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(x,t,params,...) that makes a draw from the observation process given states x, time tdmeasure(y,x,t,params,log,...) that computes the p.d.f. of y given x, <rmeasure and dmeasure functions.
If measurement.model is given it oskeleton.map.
If we are dealing with a continuous-time Markov process, its deterministic skeletoinitializer(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 callecovar 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 datarprocess, dprocess, rmerprocess, dprocess, rmeasure, dmeasure, and initializer whenever they are evaluated.pomp.pomp object uses some subset of the five basic components (rprocess, dprocess, rmeasure, dmeasure, skeleton).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 may be possible to obtain increased computational efficiency by writing custom versions of rprocess and/or dprocess.
The following describes how each of these functions should be written in this case.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
## For examples, see the vignettes.Run the code above in your browser using DataLab