The compareNCestimates function generates a Monte Carlo study to
compare log-likelihood (normalizing constant) estimates in the standard linear
Gaussian state space (LGSS) model: Kalman filter estimates, as the benchmark,
are compared to the standard bootstrap particle filter and the conditional
bootstrap particle filter estimates (see Details).
The simGaussianSSM function simulates data from a LGSS model (can be
used manually to simulate data or runs as a default, if no data is provided, with a default parameter setup, see parameters).
The kalmanFFBS function runs a Kalman (exact) forward filter, computes
a log-likelihood estimate and generates a joint smoothing state trajectory
via a backward simulation pass.
compareNCestimates(dataY,
trueStates = NULL,
numParticles = 1000L,
simNumber = 100L,
modelParameters = list(stateInit = 0,
phi = 0.7,
varStateEvol = 1,
varObs = 1),
plot = FALSE)
simGaussianSSM(len = 100,
stateInit = 0,
phi = 0.7,
varStateEvol = 1,
varObs = 1)
kalmanFFBS(dataY,
stateInit,
phi,
varStateEvol,
varObs,
simNumber)compareNCestimates returns a named list of two
outSMC a named list of two:
smcOut: a matrix of dimension simNum x 4 which
contains single log-likelihood estimates of the standard BPF for each of
the 4 resampling schemes and for each simulation run
csmcOut: a matrix of dimension simNum x 4 which
contains single log-likelihood estimates of the conditional BPF for each
of the 4 resampling schemes and for each simulation run
outKalman the output of kalmanFFBS, see below
kalmanFFBS returns a named list of two:
logLikeliEstim: (exact) estimate of the log-likelihood
xBackwardSimul: a backward simulation (joint smoothing) trajectory of latent states given parameters and measurement
A one-column matrix or dataframe or vector containing
measurements (y values) from a standard linear Gaussian SSM. If not provided, defaults to a LGSS model with time series lenght len=250 and parameter
setup specified with default values in the parameters argument, see simGaussianSSM or compareNCestimates.
defaults to NULL for a real dataset as the true state
values are not observed; for simulated data, these can be passed and then will alse be plotted if plot=TRUE
An integer specifying the number of particles.
An integer specifying the number of repeated simulation runs of each of which produces 2x4=8 normalizing constant esimtates: BPF and conditional BPF esimates under four conditional resampling schemes, as well as a ground truth Kalman forward filter estimate and a backward filter output required for the reference trajectory of the conditional sampler.
a named list of parameters of the LGSSM model
in the following order:
phi: autoregressive parameter
stateInit: initial state value (i.e. \(X_0\))
varStateEvol: state process variance
varObs: measurement/observation process variance
These parameters are used to for the Kalman forward filtering and backward
simulation pass, and, if no data argument is provided, to simulate
data from a linear Gaussian state space model internally via
simGaussianSSM.
autoregressive parameter
initial state value (i.e. \(X_0\))
state process variance
measurement/observation process variance
A boolean variable describing whether plot should illustrate the estimated results along with the data.
Length of data series to simulate.
Adam M. Johansen, Dirk Eddelbuettel, Leah South and Ilya Zarubin
compareNCestimates runs a simulation study that provides
log-likelihood (normalizing constant) estimates; there are simNumber
runs of the standard BPF and the conditional BPF under four resampling schmes:
multinomial
stratified
systematic
residual
The "ground truth" Kalman forward filter estimate of the normalizing constant is compared to the BPF normalizing constant estimates, which are unbiased for all above schemes; specifically the conditional BPF estimate is unbiased if the reference trajectory is simulated from the target distribution which is obtained here as a backward simulation run of the Kalman filter.
Box plots illustrate the unbiasedness of standard BPF and conditional BPF estimates for the normailizing constant estimate in the linear Gaussian SSM, and serve as an small example for to illustrate conditional SMC algorithms (in their most basic BPF version) with different conditonal resampling schemes as implemented within RcppSMC.
simGaussianSSM simulates from a Linear Gaussian state space model of
the following form:
$$x_t=\phi x_{t-1} + u_t$$
$$y_t= x_{t} + w_t$$
where \(\phi\) is set via the phi argument,
\(u_t \sim N(0, \sigma_x^2)\), \(w_t \sim N(0, \sigma_y^2)\) for which the
innovation (\(\sigma_x^2\)) and measurement (\(\sigma_y^2\)) variances are
set via arguments varStateEvol and varObs, respectively.
A. M. Johansen. SMCTC: Sequential Monte Carlo in C++. Journal of Statistical Software, 30(6):1-41, April 2009. https://www.jstatsoft.org/article/view/v030i06
The SMCTC paper and code at https://www.jstatsoft.org/article/view/v030i06.