ienkf: Iterated ensemble Kalman filter (IEnKF)

Description Usage Arguments Value Methods References See Also

Description

An implementation of a parameter estimation algorithm that uses the ensemble Kalman filter (Evensen, G. (1994)) to perform the filtering step in the parameter-perturbed iterated filtering scheme of Ionides et al. (2015) following the pseudocode in Asfaw, et al. (2020).

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## S4 method for signature 'spatPomp'
ienkf(
  data,
  Nenkf = 1,
  rw.sd,
  cooling.type = c("geometric", "hyperbolic"),
  cooling.fraction.50,
  Np,
  ...,
  verbose = getOption("verbose", FALSE)
)

Arguments

data

an object of class spatPomp

Nenkf

number of iterations of perturbed EnKF.

rw.sd

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.

cooling.type

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.

cooling.fraction.50

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.

Np

The number of particles used within each replicate for the adapted simulations.

...

If a params argument is specified, abf will estimate the likelihood at that parameter set instead of at coef(object).

verbose

logical; if TRUE, messages updating the user on progress will be printed to the console.

Value

Upon successful completion, ienkf returns an object of class ‘ienkfd_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().

Methods

The following methods are available for such an object:

coef

gives the Monte Carlo estimate of the maximum likelihood.

References

Evensen, G. (1994) Sequential data assimilation with a nonlinear quasi-geostrophic model using Monte Carlo methods to forecast error statistics Journal of Geophysical Research: Oceans 99:10143–10162

Evensen, G. (2009) Data assimilation: the ensemble Kalman filter Springer-Verlag.

Anderson, J. L. (2001) An Ensemble Adjustment Kalman Filter for Data Assimilation Monthly Weather Review 129:2884–2903

See Also

Other particle filter methods: abfir(), abf(), bpfilter(), enkf(), girf(), igirf(), iubf()

Other spatPomp parameter estimation methods: igirf(), iubf()


spatPomp documentation built on Sept. 5, 2021, 5:35 p.m.