irf_matching: add test for interface
parent
2f07fa2921
commit
c46eef685d
|
@ -911,6 +911,12 @@ mod_and_m_tests = [
|
|||
'extra' : [ 'estimation/method_of_moments/AFVRR/AFVRR_common.inc',
|
||||
'estimation/method_of_moments/AFVRR/AFVRR_data.mat',
|
||||
'estimation/method_of_moments/AFVRR/AFVRR_steady_helper.m' ] },
|
||||
{ 'test' : [ 'estimation/method_of_moments/CET/cet_interface.mod' ],
|
||||
'extra' : [ 'estimation/method_of_moments/CET/cet_data.mat',
|
||||
'estimation/method_of_moments/CET/cet_irf_matching_file.m',
|
||||
'estimation/method_of_moments/CET/cet_model.inc',
|
||||
'estimation/method_of_moments/CET/cet_original_mode.mat',
|
||||
'estimation/method_of_moments/CET/cet_steady_helper.m' ] },
|
||||
{ 'test' : [ 'estimation/method_of_moments/CET/cet_imh.mod' ],
|
||||
'extra' : [ 'estimation/method_of_moments/CET/cet_data.mat',
|
||||
'estimation/method_of_moments/CET/cet_irf_matching_file.m',
|
||||
|
|
|
@ -0,0 +1,183 @@
|
|||
% -------------------------------------------------------------------------
|
||||
% Functionality testing of interface for IRF matching
|
||||
% -------------------------------------------------------------------------
|
||||
|
||||
% Copyright © 2023 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/>.
|
||||
|
||||
@#include "cet_model.inc"
|
||||
xx = [23,24,25];
|
||||
ww = [51,52];
|
||||
|
||||
matched_irfs(overwrite);
|
||||
var GDPAGG; varexo epsR_eps; periods 5; values 7; weights 25;
|
||||
var GDPAGG; varexo mupsi_eps; periods 1,2; values 17,18; weights 37,38;
|
||||
var RAGG; varexo muz_eps; periods 3:5; values (xx);
|
||||
var ukAGG; varexo mupsi_eps; periods 1:2; values 30; weights (ww);
|
||||
|
||||
varexo epsR_eps;
|
||||
var wAGG;
|
||||
periods 1, 13:15, 2:12;
|
||||
values 2, (xx), 15;
|
||||
weights 3, (xx), 4;
|
||||
end;
|
||||
|
||||
method_of_moments(mom_method = irf_matching
|
||||
, cova_compute=0
|
||||
, irf_matching_file = cet_irf_matching_file
|
||||
, mcmc_jumping_covariance = prior_variance
|
||||
, mh_jscale = 0.5
|
||||
, mh_nblocks = 1
|
||||
, mh_replic=1000
|
||||
, mode_compute = 0
|
||||
, mode_file = cet_original_mode
|
||||
, plot_priors = 0
|
||||
, posterior_sampling_method = 'independent_metropolis_hastings'
|
||||
);
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% CHECKS ON INTERFACE AND TRANSFORMATIONS %%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
verbatim;
|
||||
|
||||
% check on matched_irfs
|
||||
matched_irfs = [
|
||||
{'GDPAGG'} {'epsR_eps'} {[ {[5] [ 7] [25]} ]};
|
||||
{'GDPAGG'} {'mupsi_eps'} {[ {[1] [17] [37]};
|
||||
{[2] [18] [38]} ]};
|
||||
{'RAGG'} {'muz_eps'} {[ {[3 4 5] [23 24 25] [1]} ]};
|
||||
{'ukAGG'} {'mupsi_eps'} {[ {[1 2] [30] [51 52]} ]};
|
||||
{'wAGG'} {'epsR_eps'} {[ {[1] [2] [3]};
|
||||
{[13:15] [23 24 25] [23 24 25]};
|
||||
{[2:12] [15] [4]}; ]};
|
||||
];
|
||||
if ~isequal(M_.matched_irfs,matched_irfs)
|
||||
error('Something wrong with the transformation of the matched_irfs block!')
|
||||
else
|
||||
fprintf('matched_irfs transformation was successful!\n\n')
|
||||
end
|
||||
|
||||
% check on data_moments
|
||||
data_moments = [7 2 15 15 15 15 15 15 15 15 15 15 15 23 24 25 23 24 25 17 18 30 30]';
|
||||
if ~isequal(oo_.mom.data_moments,data_moments)
|
||||
error('Something wrong with the creation of data_moments!')
|
||||
else
|
||||
fprintf('creation of data_moments was successful!\n\n')
|
||||
end
|
||||
|
||||
% check on weighting matrix
|
||||
weighting_mat = sparse(size(data_moments,1));
|
||||
weighting_mat(1,1) = 25;
|
||||
weighting_mat(2,2) = 3;
|
||||
weighting_mat(3,3) = 4;
|
||||
weighting_mat(4,4) = 4;
|
||||
weighting_mat(5,5) = 4;
|
||||
weighting_mat(6,6) = 4;
|
||||
weighting_mat(7,7) = 4;
|
||||
weighting_mat(8,8) = 4;
|
||||
weighting_mat(9,9) = 4;
|
||||
weighting_mat(10,10) = 4;
|
||||
weighting_mat(11,11) = 4;
|
||||
weighting_mat(12,12) = 4;
|
||||
weighting_mat(13,13) = 4;
|
||||
weighting_mat(14,14) = 23;
|
||||
weighting_mat(15,15) = 24;
|
||||
weighting_mat(16,16) = 25;
|
||||
weighting_mat(17,17) = 1;
|
||||
weighting_mat(18,18) = 1;
|
||||
weighting_mat(19,19) = 1;
|
||||
weighting_mat(20,20) = 37;
|
||||
weighting_mat(21,21) = 38;
|
||||
weighting_mat(22,22) = 51;
|
||||
weighting_mat(23,23) = 52;
|
||||
if ~isequal(oo_.mom.weighting_info.W,weighting_mat)
|
||||
error('Something wrong with the creation of weighting_info.W!')
|
||||
else
|
||||
fprintf('creation of weighting_info.W was successful!\n\n')
|
||||
end
|
||||
|
||||
end;//verbatim
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% SIMPLIFIED EXAMPLE TO TEST INTERFACE ON WEIGHTING MATRIX %%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
matched_irfs(overwrite);
|
||||
var GDPAGG; varexo epsR_eps; periods 1 3; values 11 13; weights 111 222;
|
||||
var RAGG; varexo muz_eps; periods 2 4; values 22 24; weights 333 444;
|
||||
end;
|
||||
|
||||
matched_irfs_weights(overwrite);
|
||||
RAGG(2), muz_eps, GDPAGG(1), epsR_eps, 555;
|
||||
GDPAGG(1), epsR_eps, RAGG(4), muz_eps, 666;
|
||||
RAGG(2), muz_eps, GDPAGG(3), epsR_eps, 777;
|
||||
GDPAGG(3), epsR_eps, RAGG(4), muz_eps, 888;
|
||||
GDPAGG(1), epsR_eps, RAGG(1), muz_eps, 999;
|
||||
end;
|
||||
|
||||
verbatim;
|
||||
% check on matched_irfs_weights
|
||||
matched_irfs_weights = [
|
||||
{'GDPAGG'} {[1]} {'epsR_eps'} {'RAGG' } {[1]} {'muz_eps' } {[999]};
|
||||
{'GDPAGG'} {[1]} {'epsR_eps'} {'RAGG' } {[4]} {'muz_eps' } {[666]};
|
||||
{'GDPAGG'} {[3]} {'epsR_eps'} {'RAGG' } {[4]} {'muz_eps' } {[888]};
|
||||
{'RAGG' } {[2]} {'muz_eps' } {'GDPAGG'} {[1]} {'epsR_eps'} {[555]};
|
||||
{'RAGG' } {[2]} {'muz_eps' } {'GDPAGG'} {[3]} {'epsR_eps'} {[777]};
|
||||
];
|
||||
if ~isequal(M_.matched_irfs_weights,matched_irfs_weights)
|
||||
error('Something wrong with the transformation of the matched_irfs_weights block!')
|
||||
else
|
||||
fprintf('matched_irfs_weights transformation was successful!\n\n')
|
||||
end
|
||||
|
||||
% test transformation function
|
||||
[data_moments, W, irfIndex] = mom.matched_irfs_blocks(M_.matched_irfs, M_.matched_irfs_weights, options_mom_.varobs_id, length(options_mom_.varobs_id), M_.exo_nbr, M_.endo_names, M_.exo_names);
|
||||
|
||||
if ~isequal(data_moments, [11 13 22 24]')
|
||||
error('Something wrong with the creation of data_moments in simple example!');
|
||||
else
|
||||
fprintf('simple example: creation of data_moments was successful!\n\n');
|
||||
end
|
||||
|
||||
if ~isequal(irfIndex, [1 3 58 60]')
|
||||
error('Something wrong with the creation of irfIndex in simple example!');
|
||||
else
|
||||
fprintf('simple example: creation of irfIndex was successful!\n\n')
|
||||
end
|
||||
|
||||
W0 = eye(4);
|
||||
W0(1,1) = 111; % (GDPAGG(1) epsR_eps) x (GDPAGG(1) epsR_eps)
|
||||
W0(2,2) = 222; % (GDPAGG(3) epsR_eps) x (GDPAGG(3) epsR_eps)
|
||||
W0(3,3) = 333; % (RAGG(2) muz_eps) x (RAGG(2) muz_eps)
|
||||
W0(4,4) = 444; % (RAGG(4) muz_eps) x (RAGG(4) muz_eps)
|
||||
W0(1,3) = 555; % (GDPAGG(1) epsR_eps) x (RAGG(2) muz_eps)
|
||||
W0(3,1) = 555; % (RAGG(2) muz_eps) x (GDPAGG(1) epsR_eps)
|
||||
W0(1,4) = 666; % (GDPAGG(1) epsR_eps) x (RAGG(4) muz_eps)
|
||||
W0(4,1) = 666; % (RAGG(4) muz_eps) x (GDPAGG(1) epsR_eps)
|
||||
W0(2,3) = 777; % (GDPAGG(3) epsR_eps) x (RAGG(2) muz_eps)
|
||||
W0(3,2) = 777; % (RAGG(2) muz_eps) x (GDPAGG(3) epsR_eps)
|
||||
W0(2,4) = 888; % (GDPAGG(3) epsR_eps) x (RAGG(4) muz_eps)
|
||||
W0(4,2) = 888; % (RAGG(4) muz_eps) x (GDPAGG(3) epsR_eps)
|
||||
|
||||
if ~isequal(W, W0)
|
||||
error('Something wrong with the creation of W in simple example!')
|
||||
else
|
||||
fprintf('simple example: creation of W was successful!\n\n')
|
||||
end
|
||||
end;
|
Loading…
Reference in New Issue