bpfilter: Block particle filter (BPF)

Description Usage Arguments Value Details Methods References See Also Examples

Description

An implementation of the block particle filter algorithm of Rebeschini and van Handel (2015), which is used to estimate the filter distribution of a spatiotemporal partially-observed Markov process. bpfilter requires a partition of the spatial units which can be provided by either the block_size or the block_list argument. The elements of the partition are called blocks. We perform resampling for each block independently based on sample weights within the block. Each resampled block only contains latent states for the spatial components within the block which allows for a “cross-pollination" of particles where the highest weighted segments of each particle are more likely to be resampled and get combined with resampled components of other particles. The method mitigates the curse of dimensionality by resampling locally.

Usage

1
2
3
4
5
6
7
8
9
## S4 method for signature 'spatPomp'
bpfilter(
  object,
  Np,
  block_size,
  block_list,
  ...,
  verbose = getOption("verbose", FALSE)
)

Arguments

object

A spatPomp object.

Np

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

block_size

The number of spatial units per block. If this is provided, the method subdivides units approximately evenly into blocks with size block_size.

block_list

List that specifies an exact partition of the spatial units. Each partition element, or block, is an integer vector of neighboring units.

...

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, bpfilter() returns an object of class ‘bpfilterd_spatPomp’ containing the algorithmic parameters used to run bpfilter() and the estimated likelihood.

Details

Only one of block_size or block_list should be specified. If both or neither is provided, an error is triggered.

Methods

The following methods are available for such an object:

logLik

yields an estimate of the log-likelihood of the data under the model.

References

\rebeschini

2015

See Also

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

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Create a simulation of a Brownian motion
b <- bm(U=6, N=10)

# Run BPF with the specified number of units per block
bpfilterd_b1 <- bpfilter(b, Np = 100, block_size = 2)

# Run BPF with the specified partition
bpfilterd_b2 <- bpfilter(b,
                         Np = 20,
                         block_list = list(c(1,2), c(3,4), c(5,6)))

# Get a likelihood estimate
logLik(bpfilterd_b2)

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