Learn R Programming

bssm (version 2.0.2)

bootstrap_filter: Bootstrap Filtering

Description

Function bootstrap_filter performs a bootstrap filtering with stratification resampling.

Usage

bootstrap_filter(model, particles, ...)

# S3 method for lineargaussian bootstrap_filter( model, particles, seed = sample(.Machine$integer.max, size = 1), ... )

# S3 method for nongaussian bootstrap_filter( model, particles, seed = sample(.Machine$integer.max, size = 1), ... )

# S3 method for ssm_nlg bootstrap_filter( model, particles, seed = sample(.Machine$integer.max, size = 1), ... )

# S3 method for ssm_sde bootstrap_filter( model, particles, L, seed = sample(.Machine$integer.max, size = 1), ... )

Value

List with samples (alpha) from the filtering distribution and corresponding weights (weights), as well as filtered and predicted states and corresponding covariances (at, att, Pt, Ptt), and estimated log-likelihood (logLik).

Arguments

model

A model object of class bssm_model.

particles

Number of particles as a positive integer. Suitable values depend on the model and the data, and while larger values provide more accurate estimates, the run time also increases with respect to the number of particles, so it is generally a good idea to test the filter first with a small number of particles, e.g., less than 100.

...

Ignored.

seed

Seed for the C++ RNG (positive integer).

L

Positive integer defining the discretization level for SDE models.

References

Gordon, NJ, Salmond, DJ, Smith, AFM (1993) Novel approach to nonlinear/non-Gaussian Bayesian state estimation. IEE Proceedings F, 140(2), p. 107-113.

Examples

Run this code
set.seed(1)
x <- cumsum(rnorm(50))
y <- rnorm(50, x, 0.5) 
model <- bsm_lg(y, sd_y = 0.5, sd_level = 1, P1 = 1)
  
out <- bootstrap_filter(model, particles = 1000)
ts.plot(cbind(y, x, out$att), col = 1:3)
ts.plot(cbind(kfilter(model)$att, out$att), col = 1:3)

data("poisson_series")
model <- bsm_ng(poisson_series, sd_level = 0.1, sd_slope = 0.01, 
  P1 = diag(1, 2), distribution = "poisson")
  
out <- bootstrap_filter(model, particles = 100)
ts.plot(cbind(poisson_series, exp(out$att[, 1])), col = 1:2)

Run the code above in your browser using DataLab