Skip to content

Releases: FRBNY-DSGE/StateSpaceRoutines.jl

v0.2.0

31 May 18:44
v0.2.0
Compare
Choose a tag to compare

v0.2.0 (2019-05-30)

Diff since v0.1.2

New features and enhancements

  • Add option to specify a likelihood convergence tolerance (the keyword argument, tol) for the kalman_filter and chand_recursion.
  • Save the PZV matrix in the KalmanFilter 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. While kalman_filter can already do so, kalman_likelihood is optimized for performance, as it does not instantiate empty return values.

v0.1.2

20 Nov 20:14
Compare
Choose a tag to compare

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

23 May 14:51
Compare
Choose a tag to compare

Performance changes

  • kalman_filter runs about 20% more quickly
  • hamilton_smoother and carter_kohn_smoother run about 5% more slowly
  • koopman_smoother runs about 6% more quickly
  • durbin_koopman_smoother runs about 13% more quickly

Breaking changes

  • kalman_filter
    • Replaced allout::Bool keyword argument with outputs::Vector{Symbol}. For allout = false, now specify outputs = [:loglh]
    • Return values have changed to loglh, s_pred, P_red, s_filt, P_filt, s_0, P_0, s_T, P_T. Note that loglh is the vector of conditional log-likelihoods, not the total log-likelihood. The outputs yprederror, 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

v0.1.0

15 Oct 20:53
Compare
Choose a tag to compare

New features

  • Add tempered particle filter

Breaking changes

  • Upgrade all code for use with Julia v0.6 or higher
  • kalman_filter returns an additional output variable, a vector of marginal log-likelihoods