Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dóra Kocsis
dynare
Commits
3aaccc59
Commit
3aaccc59
authored
Jun 24, 2010
by
Stéphane Adjemian (Scylla)
Browse files
Changes related to the new interface for the dsge-var models.
parent
2aba7807
Changes
8
Hide whitespace changes
Inline
Side-by-side
matlab/DsgeVarLikelihood.m
View file @
3aaccc59
function
[
fval
,
cost_flag
,
info
,
PHI
,
SIGMAu
,
iXX
,
prior
]
=
DsgeVarLikelihood
(
xparam1
,
gend
)
% function [fval,cost_flag,info,PHI,SIGMAu,iXX] = DsgeVarLikelihood(xparam1,gend)
% Evaluates the posterior kernel of the bvar-dsge model.
%
% INPUTS
...
...
@@ -46,7 +45,7 @@ nx = nvx+nvn+ncx+ncn+np;
ns
=
nvx
+
nvn
+
ncx
+
ncn
;
NumberOfObservedVariables
=
size
(
options_
.
varobs
,
1
);
NumberOfLags
=
options_
.
varlag
;
NumberOfLags
=
options_
.
dsge_
varlag
;
NumberOfParameters
=
NumberOfObservedVariables
*
NumberOfLags
;
if
~
options_
.
noconstant
NumberOfParameters
=
NumberOfParameters
+
1
;
...
...
@@ -83,7 +82,7 @@ for i=1:estim_params_.nvx
end
offset
=
estim_params_
.
nvx
;
if
estim_params_
.
nvn
disp
(
'DsgeVarLikelihood :: Measurement errors are implemented!'
)
disp
(
'DsgeVarLikelihood :: Measurement errors are
not
implemented!'
)
return
end
if
estim_params_
.
ncx
...
...
@@ -104,7 +103,6 @@ if dsge_prior_weight<(NumberOfParameters+NumberOfObservedVariables)/gend;
return
;
end
%------------------------------------------------------------------------------
% 2. call model setup & reduction program
%------------------------------------------------------------------------------
...
...
matlab/check_list_of_variables.m
View file @
3aaccc59
...
...
@@ -32,7 +32,7 @@ function varlist = check_list_of_variables(options_, M_, varlist)
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
msg
=
0
;
if
options_
.
bvar_
dsge
&&
options_
.
bayesian_irf
if
options_
.
dsge
_var
&&
options_
.
bayesian_irf
if
~
isempty
(
varlist
)
for
i
=
1
:
size
(
varlist
,
1
)
idx
=
strmatch
(
deblank
(
varlist
(
i
,:)),
options_
.
varobs
,
'exact'
);
...
...
matlab/dynare_estimation.m
View file @
3aaccc59
...
...
@@ -32,7 +32,7 @@ global options_ oo_ M_ oo_recursive_
%% Decide if a DSGE or DSGE-VAR has to be estimated.
if
~
isempty
(
strmatch
(
'dsge_prior_weight'
,
M_
.
param_names
))
options_
.
bvar_
dsge
=
1
;
options_
.
dsge
_var
=
1
;
end
var_list
=
check_list_of_variables
(
options_
,
M_
,
var_list
);
...
...
matlab/dynare_estimation_1.m
View file @
3aaccc59
...
...
@@ -331,7 +331,7 @@ end
%% compute sample moments if needed (bvar-dsge)
if
options_
.
bvar_
dsge
if
options_
.
dsge
_var
if
options_
.
missing_data
error
(
'I cannot estimate a DSGE-VAR model with missing observations!'
)
end
...
...
@@ -339,12 +339,12 @@ if options_.bvar_dsge
evalin
(
'base'
,
...
[
'[mYY,mXY,mYX,mXX,Ydata,Xdata] = '
...
'var_sample_moments(options_.first_obs,'
...
'options_.first_obs+options_.nobs-1,options_.varlag,-1,'
...
'options_.first_obs+options_.nobs-1,options_.
dsge_
varlag,-1,'
...
'options_.datafile, options_.varobs,options_.xls_sheet,options_.xls_range);'
])
else
% The steady state is non zero ==> a constant in the VAR is needed!
evalin
(
'base'
,[
'[mYY,mXY,mYX,mXX,Ydata,Xdata] = '
...
'var_sample_moments(options_.first_obs,'
...
'options_.first_obs+options_.nobs-1,options_.varlag,0,'
...
'options_.first_obs+options_.nobs-1,options_.
dsge_
varlag,0,'
...
'options_.datafile, options_.varobs,options_.xls_sheet,options_.xls_range);'
])
end
end
...
...
@@ -391,7 +391,7 @@ end
%% Estimation of the posterior mode or likelihood mode
if
options_
.
mode_compute
>
0
&
options_
.
posterior_mode_estimation
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
fh
=
str2func
(
'DsgeLikelihood'
);
else
fh
=
str2func
(
'DsgeVarLikelihood'
);
...
...
@@ -403,7 +403,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
if
isfield
(
options_
,
'optim_opt'
)
eval
([
'optim_options = optimset(optim_options,'
options_
.
optim_opt
');'
]);
end
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
xparam1
,
fval
,
exitflag
,
output
,
lamdba
,
grad
,
hessian_fmincon
]
=
...
fmincon
(
fh
,
xparam1
,[],[],[],[],
lb
,
ub
,[],
optim_options
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
else
...
...
@@ -417,7 +417,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
if
isfield
(
options_
,
'optim_opt'
)
eval
([
'optim_options = optimset(optim_options,'
options_
.
optim_opt
');'
]);
end
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
xparam1
,
fval
,
exitflag
]
=
fminunc
(
fh
,
xparam1
,
optim_options
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
else
[
xparam1
,
fval
,
exitflag
]
=
fminunc
(
fh
,
xparam1
,
optim_options
,
gend
);
...
...
@@ -427,7 +427,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
crit
=
1e-7
;
nit
=
1000
;
verbose
=
2
;
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
fval
,
xparam1
,
grad
,
hessian_csminwel
,
itct
,
fcount
,
retcodehat
]
=
...
csminwel
(
'DsgeLikelihood'
,
xparam1
,
H0
,[],
crit
,
nit
,
options_
.
gradient_method
,
options_
.
gradient_epsilon
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
disp
(
sprintf
(
'Objective function at mode: %f'
,
fval
))
...
...
@@ -459,7 +459,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
else
nit
=
1000
;
end
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
xparam1
,
hh
,
gg
,
fval
,
invhess
]
=
newrat
(
'DsgeLikelihood'
,
xparam1
,
hh
,
gg
,
igg
,
crit
,
nit
,
flag
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
else
[
xparam1
,
hh
,
gg
,
fval
,
invhess
]
=
newrat
(
'DsgeVarLikelihood'
,
xparam1
,
hh
,
gg
,
igg
,
crit
,
nit
,
flag
,
gend
);
...
...
@@ -467,7 +467,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
parameter_names
=
bayestopt_
.
name
;
save
([
M_
.
fname
'_mode.mat'
],
'xparam1'
,
'hh'
,
'gg'
,
'fval'
,
'invhess'
,
'parameter_names'
);
case
6
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
fval
=
DsgeLikelihood
(
xparam1
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
else
fval
=
DsgeVarLikelihood
(
xparam1
,
gend
);
...
...
@@ -504,7 +504,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
else
flag
=
'LastCall'
;
end
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
xparam1
,
PostVar
,
Scale
,
PostMean
]
=
...
gmhmaxlik
(
'DsgeLikelihood'
,
xparam1
,
bounds
,
options_
.
Opt6Numb
,
Scale
,
flag
,
MeanPar
,
CovJump
,
gend
,
data
,
...
data_index
,
number_of_observations
,
no_more_missing_observations
);
...
...
@@ -526,7 +526,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
else
flag
=
'LastCall'
;
end
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
xparam1
,
PostVar
,
Scale
,
PostMean
]
=
...
gmhmaxlik
(
'DsgeLikelihood'
,
xparam1
,
bounds
,
...
options_
.
Opt6Numb
,
Scale
,
flag
,
PostMean
,
PostVar
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
...
...
@@ -553,7 +553,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
if
isfield
(
options_
,
'optim_opt'
)
eval
([
'optim_options = optimset(optim_options,'
options_
.
optim_opt
');'
]);
end
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
xparam1
,
fval
,
exitflag
]
=
fminsearch
(
fh
,
xparam1
,
optim_options
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
else
[
xparam1
,
fval
,
exitflag
]
=
fminsearch
(
fh
,
xparam1
,
optim_options
,
gend
);
...
...
@@ -602,7 +602,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
disp
([
'c vector '
num2str
(
c
'
)]);
% keyboard
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
[
xparam1
,
fval
,
nacc
,
nfcnev
,
nobds
,
ier
,
t
,
vm
]
=
sa
(
fh
,
xparam1
,
maxy
,
rt_
,
eps
,
ns
,
nt
...
,
neps
,
maxevl
,
LB
,
UB
,
c
,
idisp
,
t
,
vm
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
else
...
...
@@ -611,7 +611,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
end
otherwise
if
ischar
(
options_
.
mode_compute
)
if
options_
.
bvar_
dsge
if
options_
.
dsge
_var
[
xparam1
,
fval
,
retcode
]
=
feval
(
options_
.
mode_compute
,
fh
,
xparam1
,
gend
,
data
);
else
[
xparam1
,
fval
,
retcode
]
=
feval
(
options_
.
mode_compute
,
...
...
...
@@ -625,7 +625,7 @@ if options_.mode_compute > 0 & options_.posterior_mode_estimation
% if options_.mode_compute ~= 5
if
options_
.
mode_compute
~=
6
if
options_
.
cova_compute
==
1
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
hh
=
reshape
(
hessian
(
'DsgeLikelihood'
,
xparam1
,
...
options_
.
gstep
,
gend
,
data
,
data_index
,
number_of_observations
,
...
no_more_missing_observations
),
nx
,
nx
);
...
...
@@ -777,7 +777,7 @@ if any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation
estim_params_nbr
=
size
(
xparam1
,
1
);
scale_factor
=
-
sum
(
log10
(
diag
(
invhess
)));
log_det_invhess
=
-
estim_params_nbr
*
log
(
scale_factor
)
+
log
(
det
(
scale_factor
*
invhess
));
if
~
options_
.
bvar_
dsge
if
~
options_
.
dsge
_var
md_Laplace
=
.
5
*
estim_params_nbr
*
log
(
2
*
pi
)
+
.
5
*
log_det_invhess
...
-
DsgeLikelihood
(
xparam1
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
else
...
...
@@ -1073,7 +1073,7 @@ if (any(bayestopt_.pshape >0 ) & options_.mh_replic) | ...
if
options_
.
load_mh_file
&
options_
.
use_mh_covariance_matrix
invhess
=
compute_mh_covariance_matrix
;
end
if
options_
.
bvar_
dsge
if
options_
.
dsge
_var
feval
(
options_
.
posterior_sampling_method
,
'DsgeVarLikelihood'
,
options_
.
proposal_distribution
,
xparam1
,
invhess
,
bounds
,
gend
);
else
feval
(
options_
.
posterior_sampling_method
,
'DsgeLikelihood'
,
options_
.
proposal_distribution
,
xparam1
,
invhess
,
bounds
,
gend
,
data
,
...
...
...
matlab/dynare_estimation_init.m
View file @
3aaccc59
...
...
@@ -48,7 +48,7 @@ for i = 1:size(M_.endo_names,1)
end
if
~
isempty
(
strmatch
(
'dsge_prior_weight'
,
M_
.
param_names
))
options_
.
bvar_
dsge
=
1
;
options_
.
dsge
_var
=
1
;
end
if
options_
.
order
>
1
...
...
matlab/initial_estimation_checks.m
View file @
3aaccc59
...
...
@@ -54,7 +54,7 @@ if (number_of_observations==gend*nv)% No missing observations...
end
end
if
~
isempty
(
strmatch
(
'dsge_prior_weight'
,
M_
.
param_names
))
if
options_
.
dsge_var
[
fval
,
cost_flag
,
info
]
=
DsgeVarLikelihood
(
xparam1
,
gend
);
else
[
fval
,
cost_flag
,
ys
,
trend_coeff
,
info
]
=
DsgeLikelihood
(
xparam1
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
...
...
matlab/mode_check.m
View file @
3aaccc59
...
...
@@ -39,7 +39,7 @@ global bayestopt_ M_ options_
TeX
=
options_
.
TeX
;
[
s_min
,
k
]
=
min
(
diag
(
hessian
))
;
if
options_
.
bvar_
dsge
if
options_
.
dsge
_var
fval
=
DsgeVarLikelihood
(
x
,
gend
);
else
fval
=
DsgeLikelihood
(
x
,
gend
,
data
,
data_index
,
number_of_observations
,
no_more_missing_observations
);
...
...
@@ -87,7 +87,7 @@ for plt = 1:nbplt,
end
for
i
=
1
:
length
(
z
)
xx
(
kk
)
=
z
(
i
);
if
options_
.
bvar_
dsge
if
options_
.
dsge
_var
[
fval
,
cost_flag
]
=
DsgeVarLikelihood
(
xx
,
gend
);
if
cost_flag
y
(
i
,
1
)
=
fval
;
...
...
matlab/print_info.m
View file @
3aaccc59
...
...
@@ -56,6 +56,8 @@ if ~noprint
error
(
'The steady state is complex.'
)
case
30
error
(
'Variance can
''
t be computed'
)
case
51
error
(
'You are estimating a DSGE-VAR model, but the value of the dsge prior weight is too low!'
)
otherwise
error
(
'This case shouldn
''
t happen. Contact the authors of Dynare'
)
end
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment