is2: Iterated Smoothing

Description Usage Arguments Re-running is2 Iterations Continuing is2 Iterations Using is2 to estimate initial-value parameters only Details Author(s) References See Also

Description

Iterated smoothing algorithms for estimating the parameters of a partially-observed Markov process.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
## S4 method for signature 'pomp'
is2(object, Nis = 1, start, pars, ivps = character(0),
    particles, rw.sd, Np, ic.lag, var.factor, lag,
    cooling.type = c("geometric","hyperbolic"), 
    cooling.fraction, cooling.factor,
    method = c("is2","ris1","is1"),
    tol = 1e-17, max.fail = Inf,
    verbose = getOption("verbose"), transform = FALSE, ...)
## S4 method for signature 'pfilterd2.pomp'
is2(object, Nis = 1, Np, tol, ...)
## S4 method for signature 'is2'
is2(object, Nis, start, pars, ivps,
    particles, rw.sd, Np, ic.lag, lag, var.factor,
    cooling.type, cooling.fraction,
    method, tol, transform, ...)
## S4 method for signature 'is2'
continue(object, Nis = 1, ...)

Arguments

object

An object of class pomp.

Nis

The number of filtering iterations to perform.

start

named numerical vector; the starting guess of the parameters.

pars

optional character vector naming the ordinary parameters to be estimated. Every parameter named in pars must have a positive random-walk standard deviation specified in rw.sd. Leaving pars unspecified is equivalent to setting it equal to the names of all parameters with a positive value of rw.sd that are not ivps.

ivps

optional character vector naming the initial-value parameters (IVPs) to be estimated. Every parameter named in ivps must have a positive random-walk standard deviation specified in rw.sd. If pars is empty, i.e., only IVPs are to be estimated, see below “Using is2 to estimate initial-value parameters only”.

particles

Function of prototype particles(Np,center,sd,...) which sets up the starting particle matrix by drawing a sample of size Np from the starting particle distribution centered at center and of width sd. If particles is not supplied by the user, the default behavior is to draw the particles from a multivariate normal distribution with mean center and standard deviation sd.

rw.sd

numeric vector with names; the intensity of the random walk to be applied to parameters. The random walk is only applied to parameters named in pars (i.e., not to those named in ivps). The algorithm requires that the random walk be nontrivial, so each element in rw.sd[pars] must be positive. rw.sd is also used to scale the initial-value parameters (via the particles function). Therefore, each element of rw.sd[ivps] must be positive. The following must be satisfied: names(rw.sd) must be a subset of names(start), rw.sd must be non-negative (zeros are simply ignored), the name of every positive element of rw.sd must be in either pars or ivps.

Np

the number of particles to use in filtering. This may be specified as a single positive integer, in which case the same number of particles will be used at each timestep. Alternatively, if one wishes the number of particles to vary across timestep, one may specify Np either as a vector of positive integers (of length length(time(object,t0=TRUE))) or as a function taking a positive integer argument. In the latter case, Np(k) must be a single positive integer, representing the number of particles to be used at the k-th timestep: Np(0) is the number of particles to use going from timezero(object) to time(object)[1], Np(1), from timezero(object) to time(object)[1], and so on, while when T=length(time(object,t0=TRUE)), Np(T) is the number of particles to sample at the end of the time-series.

ic.lag

a positive integer; the timepoint for fixed-lag smoothing of initial-value parameters. The is2 update for initial-value parameters consists of replacing them by their filtering mean at time times[ic.lag], where times=time(object). It makes no sense to set ic.lag>length(times); if it is so set, ic.lag is set to length(times) with a warning.

var.factor

a positive number; the scaling coefficient relating the width of the starting particle distribution to rw.sd. In particular, the width of the distribution of particles at the start of the first is2 iteration will be random.walk.sd*var.factor.

lag

a positive integer; the timepoint for fixed-lag smoothing parameters estimation.

cooling.type, cooling.fraction, cooling.factor

specifications for the cooling schedule, i.e., the manner in which the intensity of the parameter perturbations is reduced with successive filtering iterations. cooling.type specifies the nature of the cooling schedule. When cooling.type-="geometric", on the n-th is2 iteration, the relative perturbation intensity is cooling.fraction-^(n/50). When cooling.type="hyperbolic", on the n-th is2 iteration, the relative perturbation intensity is (s+1)/(s+n), where (s+1)/-(s+50)=cooling.fraction. cooling.fraction is the relative magnitude of the parameter perturbations after 50 is2 iterations. cooling.factor is now deprecated: to achieve the old behavior, use cooling.type="geometric" and cooling.fraction- =(cooling.factor)^50.

method

method sets the update rule used in the algorithm. method="is2" uses the iterated smoothing update rule (Ionides 2015 submitted); method="ris1" uses the reduced iterated smoothing update rule (Doucet 2013, Ionides 2015 submitted); method="is1" uses the reduced iterated smoothing update rule (Doucet 2013);

tol

See the description under pfilter2.

max.fail

See the description under pfilter2.

verbose

logical; if TRUE, print progress reports.

transform

logical; if TRUE, optimization is performed on the transformed scale.

...

additional arguments that override the defaults.

Re-running is2 Iterations

To re-run a sequence of is2 iterations, one can use the is2 method on a is2 object. By default, the same parameters used for the original is2 run are re-used (except for weighted, tol, max.fail, and verbose, the defaults of which are shown above). If one does specify additional arguments, these will override the defaults.

Continuing is2 Iterations

One can resume a series of is2 iterations from where one left off using the continue method. A call to is2 to perform Nis=m iterations followed by a call to continue to perform Nis=n iterations will produce precisely the same effect as a single call to is2 to perform Nis=m+n iterations. By default, all the algorithmic parameters are the same as used in the original call to is2. Additional arguments will override the defaults.

Using is2 to estimate initial-value parameters only

One can use is2 fixed-lag smoothing to estimate only initial value parameters (IVPs). In this case, pars is left empty and the IVPs to be estimated are named in ivps. If theta is the current parameter vector, then at each is2 iteration, Np particles are drawn from a distribution centered at theta and with width proportional to var.factor*rw.sd, a particle filtering operation is performed, and theta is replaced by the filtering mean at time(object)[ic.lag]. Note the implication that, when is2 is used in this way on a time series any longer than ic.lag, unnecessary work is done. If the time series in object is longer than ic.lag, consider replacing object with window(object,end=ic.lag).

Details

If particles is not specified, the default behavior is to draw the particles from a multivariate normal distribution. It is the user's responsibility to ensure that, if the optional particles argument is given, that the particles function satisfies the following conditions:

particles has at least the following arguments: Np, center, sd, and .... Np may be assumed to be a positive integer; center and sd will be named vectors of the same length. Additional arguments may be specified; these will be filled with the elements of the userdata slot of the underlying pomp object (see pomp).

particles returns a length(center) x Np matrix with rownames matching the names of center and sd. Each column represents a distinct particle.

The center of the particle distribution returned by particles should be center. The width of the particle distribution should vary monotonically with sd. In particular, when sd=0, the particles should return matrices with Np identical columns, each given by the parameters specified in center.

Author(s)

Dao Nguyen nguyenxd at umich dot edu, Edward L. Ionides ionides at umich dot edu

References

D. Nguyen, E. L. Ionides, A second-order iterated smoothing, Journal of Statistics and Computing, 2015 (submitted).

A., Doucet, P. E. Jacob, and S. Rubenthaler, Derivative-free estimation of the score vector and observed information matrix with application to state-space models, Preprint arXiv:1304.5768.

A. A. King, D. Nguyen, and E. L. Ionides, Statistical inference for partially observed Markov processes via the R package pomp, Journal of Statistical Software, 2015 (just-accepted).

See Also

is2-methods, pfilter2. See the “intro_to_is2” vignette for examples.


nxdao2000/RcppSQMC documentation built on May 24, 2019, 11:50 a.m.