Releases: FRBNY-DSGE/StateSpaceRoutines.jl
Releases · FRBNY-DSGE/StateSpaceRoutines.jl
v0.2.0
v0.2.0 (2019-05-30)
New features and enhancements
- Add option to specify a likelihood convergence tolerance (the keyword argument,
tol
) for thekalman_filter
andchand_recursion
. - Save the
PZV
matrix in theKalmanFilter
type, (P_pred' * Z' * inv(V_pred)
), for state and state variance-covariance matrix updating without needing to recompute that matrix product. - Write an additional
kalman_likelihood
set of methods for obtaining only the likelihood from the kalman filter. Whilekalman_filter
can already do so,kalman_likelihood
is optimized for performance, as it does not instantiate empty return values.
v0.1.2
Bug fixes and cleanup:
- Clean up unit tests.
- Add tests for the Kalman filter related to evaluating pre-samples/filtering multi-regime models.
New features and enhancements:
- Implement Chandrasekhar Recursions (from Ed Herbst's Computational Economics 2015 paper). These recursions improve the speed of the likelihood evaluation in the Kalman filter by about 1.5-2x. For those using our DSGE.jl package, users can now use the Chandrasekhar recursions in parameter estimation by changing the model setting,
use_chand_recursion
. - Improve the structure of the tempered particle filter to take advantage of shared-memory parallelism using
SharedArray
data structures.
Breaking changes:
- Tempered particle filter can no longer be parallelized across multiple machines. Hence, any scheduler-based command for adding processes (e.g.
addprocs_sge
) must add the processes locally to a single machine and distribute across cores on that machine. This is an improvement, since previously the parallel execution of the filter was slower than the serial execution because of the overhead of data passing.
v0.1.1
Performance changes
kalman_filter
runs about 20% more quicklyhamilton_smoother
andcarter_kohn_smoother
run about 5% more slowlykoopman_smoother
runs about 6% more quicklydurbin_koopman_smoother
runs about 13% more quickly
Breaking changes
kalman_filter
- Replaced
allout::Bool
keyword argument withoutputs::Vector{Symbol}
. Forallout = false
, now specifyoutputs = [:loglh]
- Return values have changed to
loglh, s_pred, P_red, s_filt, P_filt, s_0, P_0, s_T, P_T
. Note thatloglh
is the vector of conditional log-likelihoods, not the total log-likelihood. The outputsyprederror, ystdprederror, rmse, rmsd
are no longer returned but can be calculated from the values that are returned - Unlike before, the same number of outputs are returned regardless of what's passed to
outputs
. However, some of the outputs may be empty arrays
- Replaced