File: get_init_state.m

package info (click to toggle)
dynare 7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 79,248 kB
  • sloc: cpp: 82,011; ansic: 28,583; objc: 12,573; yacc: 5,105; pascal: 2,374; lex: 1,502; python: 1,118; sh: 1,116; makefile: 605; lisp: 162; xml: 18
file content (55 lines) | stat: -rw-r--r-- 2,637 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function a = get_init_state(a,xparam1,estim_params_,dr,M_,options_)
% a = get_init_state(a,xparam1,estim_params_,dr,M_,options_)
% Builds the Kalman/filter initial state vector from model values.
%
% Given `M_.endo_initial_state.values` and the steady state `dr.ys`, this
% routine fills the initial state vector `a` (decision-rule order) with
% deviations from steady state. In log-linear mode it uses log deviations;
% otherwise level deviations. The function updates parameters from
% `xparam1` before computing the state.
%
% INPUTS
% - a                   [double]     initial state vector placeholder (size M_.endo_nbr).
% - xparam1             [double]     parameter vector used to set `M_.params`.
% - estim_params_       [structure]  parameters-to-estimate metadata.
% - dr                  [structure]  decision rule structure; uses `dr.ys` and `dr.order_var`.
% - M_                  [structure]  model structure; uses `endo_initial_state.values` and `state_var`.
% - options_            [structure]  options; uses `loglinear` and `logged_steady_state`.
%
% OUTPUTS
% - a                   [double]     updated initial state vector in decision-rule order.
%
% NOTES
% - In log-linear mode (`options_.loglinear==true`), computes
%   log(M_.endo_initial_state.values) - log(dr.ys) on state entries.
% - In level mode, computes M_.endo_initial_state.values - dr.ys on state entries.
% - Errors if `options_.logged_steady_state==true` (unsupported combination).

% Copyright © 2024-2026 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare.  If not, see <https://www.gnu.org/licenses/>.

M_ = set_all_parameters(xparam1,estim_params_,M_);

if options_.loglinear && ~options_.logged_steady_state
    a(dr.state_var) = log(M_.endo_initial_state.values(dr.state_var)) - log(dr.ys(dr.state_var));
elseif ~options_.loglinear && ~options_.logged_steady_state
    a(dr.state_var) = M_.endo_initial_state.values(dr.state_var) - dr.ys(dr.state_var);
else
    error('The steady state is logged. This should not happen. Please contact the developers')
end

a=a(dr.order_var);