2009-12-16 18:25:06 +01:00
|
|
|
var z dw dx dy dc1 dc2;
|
|
|
|
varexo e_w e_x e_y e_z;
|
|
|
|
|
|
|
|
parameters rho_w rho_x rho_y rho_z a1 a2 a3 b c;
|
|
|
|
|
|
|
|
model(linear);
|
|
|
|
dw = rho_w*dw(-1)+a1*(dc1(-1))+e_w;
|
|
|
|
dx = rho_x*dx(-1)+a2*(dc1(-1))+e_x;
|
|
|
|
dy = rho_y*dy(-1)+a3*(dc2(-1))+e_y;
|
|
|
|
z = rho_z*z(-1)+dw-dx+e_z;
|
|
|
|
dc1 = dc1(-1)+dx-b*dy-c*dw;
|
|
|
|
dc2 = dc2(-1)+dx-b*dy;
|
|
|
|
end;
|
|
|
|
|
|
|
|
estimated_params;
|
|
|
|
rho_w, normal_pdf, 0.5,0.2;
|
|
|
|
rho_x, normal_pdf, 0.5,0.2;
|
|
|
|
rho_y, normal_pdf, 0.5,0.2;
|
|
|
|
rho_z, normal_pdf, 0.8,0.2;
|
|
|
|
|
|
|
|
a1, normal_pdf, 0.1,0.2;
|
|
|
|
a2, normal_pdf, -0.1,0.2;
|
|
|
|
a3, normal_pdf, 0.1,0.2;
|
|
|
|
b , normal_pdf, 1,0.2;
|
|
|
|
c , normal_pdf, 1,0.2;
|
|
|
|
|
|
|
|
stderr e_w, uniform_pdf,,, 0.01, 0.1;
|
|
|
|
stderr e_x, uniform_pdf,,, 0.01, 0.1;
|
|
|
|
stderr e_y, uniform_pdf,,, 0.01, 0.1;
|
|
|
|
stderr e_z, uniform_pdf,,, 0.01, 0.1;
|
|
|
|
end;
|
|
|
|
|
|
|
|
varobs dw dx dy z;
|
|
|
|
|
2011-11-03 11:14:37 +01:00
|
|
|
estimation(datafile=data,first_obs=1000,nobs=200,mh_replic=0,mode_compute=0,mode_file=algo1_mode,kalman_algo=2,filtered_vars);
|
2009-12-16 18:25:06 +01:00
|
|
|
|
|
|
|
//checking smoother consistency
|
|
|
|
X = oo_.SmoothedVariables;
|
|
|
|
S = [X.z X.dw X.dx X.dy X.dc1 X.dc2];
|
|
|
|
X = oo_.SmoothedShocks;
|
|
|
|
E = [X.e_w X.e_x X.e_y X.e_z];
|
|
|
|
A = oo_.dr.ghx;
|
|
|
|
B = oo_.dr.ghu;
|
|
|
|
err = zeros(6,200);
|
|
|
|
for t=2:200;
|
|
|
|
err(:,t) = S(t,:)'-A*S(t-1,:)'-B*E(t,:)';
|
|
|
|
end;
|
2011-11-02 20:54:58 +01:00
|
|
|
if max(max(abs(err))) > 1e-10;
|
|
|
|
error('Test fails');
|
|
|
|
end;
|
2009-12-16 18:25:06 +01:00
|
|
|
|
|
|
|
d=load('data');
|
|
|
|
dat = [d.dw d.dx d.dy d.z];
|
2011-11-02 20:54:58 +01:00
|
|
|
if max(max(abs(dat(1000:1199,:)-S(:,[2:4 1])))) > 1e-10;
|
|
|
|
error('Test fails');
|
|
|
|
end;
|
2009-12-16 18:25:06 +01:00
|
|
|
|
|
|
|
o1 = load('algo1_results');
|
|
|
|
obj_endo={'SmoothedVariables'; 'FilteredVariables'; 'UpdatedVariables'};
|
|
|
|
obj_exo = {'SmoothedShocks';};
|
|
|
|
nobj_endo = size(obj_endo,1);
|
|
|
|
nobj_exo = size(obj_exo,1);
|
|
|
|
for i=1:nobj_endo;
|
|
|
|
err_endo = zeros(eval(['size(oo_.' obj_endo{i} '.' M_.endo_names(1,:) ',1);']),M_.endo_nbr);
|
|
|
|
for j=1:M_.endo_nbr;
|
|
|
|
var1 = eval(['o1.oo_.' obj_endo{i} '.' M_.endo_names(j,:)]);
|
|
|
|
var2 = eval(['oo_.' obj_endo{i} '.' M_.endo_names(j,:)]);
|
|
|
|
err_endo(:,j) = var1-var2;
|
|
|
|
end;
|
2011-11-02 20:54:58 +01:00
|
|
|
if max(max(abs(err_endo))) > 1e-10;
|
|
|
|
error('Test fails');
|
|
|
|
end;
|
2009-12-16 18:25:06 +01:00
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
err_exo = zeros(200,M_.exo_nbr,nobj_exo);
|
|
|
|
for i=1:nobj_exo;
|
|
|
|
err_exo = zeros(size(eval(['oo_.' obj_exo{i} '.' M_.exo_names(1,:)]),1),M_.exo_nbr);
|
|
|
|
for j=1:M_.exo_nbr;
|
|
|
|
var1 = eval(['o1.oo_.' obj_exo{i} '.' M_.exo_names(j,:)]);
|
|
|
|
var2 = eval(['oo_.' obj_exo{i} '.' M_.exo_names(j,:)]);
|
|
|
|
err_exo(:,j,i) = var1 - var2;
|
|
|
|
end;
|
2011-11-02 20:54:58 +01:00
|
|
|
if max(max(abs(err_exo))) > 1e-10;
|
|
|
|
error('Test fails')
|
|
|
|
end;
|
2009-12-16 18:25:06 +01:00
|
|
|
end;
|