An algorithm for estimating the parameters of a spatiotemporal partially-observed Markov process.
Running iubf
causes the algorithm to perform a specified number of iterations of unadapted simulations with parameter perturbation and parameter resamplings.
At each iteration, unadapted simulations are performed on a perturbed version of the model, in which the parameters to be estimated are subjected to random perturbations at each observation.
After cycling through the data, each replicate's weight is calculated and is used to rank the bootstrap replictates. The highest ranking replicates are recycled into the next iteration.
This extra variability introduced through parameter perturbation effectively smooths the likelihood surface and combats particle depletion by introducing diversity into particle population.
As the iterations progress, the magnitude of the perturbations is diminished according to a user-specified cooling schedule.
# S4 method for spatPomp
iubf(
object,
Nubf = 1,
Nrep_per_param,
Nparam,
nbhd,
prop,
rw.sd,
cooling.type = c("geometric", "hyperbolic"),
cooling.fraction.50,
tol = (1e-18)^17,
verbose = getOption("verbose"),
...
)
Upon successful completion, iubf()
returns an object of class
‘iubfd_spatPomp’. This object contains the convergence record of the iterative algorithm with
respect to the likelihood and the parameters of the model (which can be accessed using the traces
attribute) as well as a final parameter estimate, which can be accessed using the coef()
. The
algorithmic parameters used to run iubf()
are also included.
A spatPomp
object.
The number of iterations to perform
The number of replicates used to estimate the likelihood at a parameter
The number of parameters that will undergo the iterated perturbation
A neighborhood function with three arguments: object
, time
and unit
.
The function should return a list
of two-element vectors that represent space-time
neighbors of \((u,n)\), which is represented by c(unit,time)
.
See example below for more details.
A numeric between 0 and 1. The top prop
*100% of the parameters are resampled at each observation
specification of the magnitude of the random-walk perturbations that will be applied to some or all model parameters.
Parameters that are to be estimated should have positive perturbations specified here.
The specification is given using the rw_sd
function, which creates a list of unevaluated expressions.
The latter are evaluated in a context where the model time variable is defined (as time
).
The expression ivp(s)
can be used in this context as shorthand for
ifelse(time==time[1],s,0).
Likewise, ivp(s,lag)
is equivalent to
ifelse(time==time[lag],s,0).
See below for some examples.
The perturbations that are applied are normally distributed with the specified s.d. If parameter transformations have been supplied, then the perturbations are applied on the transformed (estimation) scale.
specifications for the cooling schedule,
i.e., the manner and rate with which the intensity of the parameter perturbations is reduced with successive filtering iterations.
cooling.type
specifies the nature of the cooling schedule.
See below (under “Specifying the perturbations”) for more detail.
If the resampling weight for a particle is zero due to floating-point precision issues, it is set to the value of tol
since resampling has to be done.
logical; if TRUE
, diagnostic messages will be printed to the console.
additional arguments are passed to pomp
.
The following methods are available for such an object:
coef
extracts the point estimate
Kidus Asfaw
Asfaw, K., Park, J., Ho, A., King, A. A., and Ionides, E. L. (2020) Partially observed Markov processes with spatial structure via the R package spatPomp. ArXiv: 2101.01157. tools:::Rd_expr_doi("10.48550/arXiv.2101.01157")
Ionides, E. L., Asfaw, K., Park, J., and King, A. A. (2021). Bagged filters for partially observed interacting systems. Journal of the American Statistical Association, tools:::Rd_expr_doi("10.1080/01621459.2021.1974867")
likelihood evaluation algorithms: girf()
, enkf()
, bpfilter()
, abf()
, abfir()
Other likelihood maximization algorithms:
ibpf()
,
ienkf()
,
igirf()