statespace_forecast#

Forecasts past the end of the sample (DK §4.11).

Forecasting is filtering with missing observations. forecast runs the prediction recursion from the end of a filter run, which must be past the diffuse periods, and needs time-invariant system matrices. For time-varying models, append NaN observations to y with the matrices for the forecast horizon, and read yhat and F from the filter.

forecast_result_t#

type :: forecast_result_t
  integer :: horizon                          ! h
  real(dp), allocatable :: mean(:, :)         ! (p, h)     E(y_n+j | Y_n)
  real(dp), allocatable :: cov(:, :, :)       ! (p, p, h)  Var(y_n+j | Y_n)
  real(dp), allocatable :: state(:, :)        ! (m, h)     E(alpha_n+j | Y_n)
  real(dp), allocatable :: state_cov(:, :, :) ! (m, m, h)
end type

forecast#

subroutine forecast(rep, fres, h, fc, info)
  type(ssm_rep_t), intent(in) :: rep
  type(filter_result_t), intent(in) :: fres
  integer, intent(in) :: h
  type(forecast_result_t), intent(out) :: fc
  integer, intent(out) :: info

Forecast j = 1, …, h steps ahead. info is SS_ERR_UNSUPPORTED if a system matrix or intercept varies over time.