particleFilterSVmodel {pmhtutorial} | R Documentation |
Bootstrap particle filter for state estimate in a simple stochastic volatility model
Description
Estimates the filtered state and the log-likelihood for a stochastic
volatility model of the form x_t = \mu + \phi ( x_{t-1} - \mu ) +
\sigma_v v_t
and y_t = \exp(x_t/2) e_t
, where v_t
and e_t
denote independent standard Gaussian random variables, i.e. N(0,1)
.
Usage
particleFilterSVmodel(y, theta, noParticles)
Arguments
y |
Observations from the model for |
theta |
The parameters |
noParticles |
The number of particles to use in the filter. |
Value
The function returns a list with the elements:
xHatFiltered: The estimate of the filtered state at time
t=1,...,T
.logLikelihood: The estimate of the log-likelihood.
Note
See Section 5 in the reference for more details.
Author(s)
Johan Dahlin uni@johandahlin.com
References
Dahlin, J. & Schon, T. B. "Getting Started with Particle Metropolis-Hastings for Inference in Nonlinear Dynamical Models." Journal of Statistical Software, Code Snippets, 88(2): 1–41, 2019.
Examples
## Not run:
# Get the data from Quandl
library("Quandl")
d <- Quandl("NASDAQOMX/OMXS30", start_date="2012-01-02",
end_date="2014-01-02", type="zoo")
y <- as.numeric(100 * diff(log(d$"Index Value")))
# Estimate the filtered state using a particle filter
theta <- c(-0.10, 0.97, 0.15)
pfOutput <- particleFilterSVmodel(y, theta, noParticles=100)
# Plot the estimate and the true state
par(mfrow=c(2, 1))
plot(y, type="l", xlab="time", ylab="log-returns", bty="n",
col="#1B9E77")
plot(pfOutput$xHatFiltered, type="l", xlab="time",
ylab="estimate of log-volatility", bty="n", col="#D95F02")
## End(Not run)