diff --git a/tests/Makefile.am b/tests/Makefile.am index 0679db1115b86a64b44bdc1717a33c3ac53df85a..dbfb5e3cda97ea579f1c82b95100787bbf0379db 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -134,7 +134,8 @@ EXTRA_DIST = \ objectives/sgu_ex1.mat \ conditional_forecasts/fsdat_simul.m \ recursive/data_ca1.m \ - kalman_filter_smoother/fsdat_simul.m + kalman_filter_smoother/fsdat_simul.m \ + kalman_filter_smoother/fs200a_steadystate.m TARGETS = diff --git a/tests/kalman_filter_smoother/fs2000a_steadystate.m b/tests/kalman_filter_smoother/fs2000a_steadystate.m new file mode 100644 index 0000000000000000000000000000000000000000..4833e8b9601223500ccf285e63ebfdd828da6940 --- /dev/null +++ b/tests/kalman_filter_smoother/fs2000a_steadystate.m @@ -0,0 +1,60 @@ +% computes the steady state of fs2000 analyticaly +% largely inspired by the program of F. Schorfheide +function [ys,check] = fs2000a_steadystate(ys,exe) + global M_ + + alp = M_.params(1); + bet = M_.params(2); + gam = M_.params(3); + mst = M_.params(4); + rho = M_.params(5); + psi = M_.params(6); + del = M_.params(7); + + check = 0; + + dA = exp(gam); + gst = 1/dA; + m = mst; + + khst = ( (1-gst*bet*(1-del)) / (alp*gst^alp*bet) )^(1/(alp-1)); + xist = ( ((khst*gst)^alp - (1-gst*(1-del))*khst)/mst )^(-1); + nust = psi*mst^2/( (1-alp)*(1-psi)*bet*gst^alp*khst^alp ); + n = xist/(nust+xist); + P = xist + nust; + k = khst*n; + + l = psi*mst*n/( (1-psi)*(1-n) ); + c = mst/P; + d = l - mst + 1; + y = k^alp*n^(1-alp)*gst^alp; + R = mst/bet; + W = l/n; + ist = y-c; + q = 1 - d; + + e = 1; + + gp_obs = m/dA; + gy_obs = dA; + + P_obs = 1; + Y_obs = 1; + + ys =[ +m +P +c +e +W +R +k +d +n +l +gy_obs +gp_obs +Y_obs +P_obs +y +dA ]; \ No newline at end of file diff --git a/tests/kalman_filter_smoother/gen_data.mod b/tests/kalman_filter_smoother/gen_data.mod index 32c12a7b2548ee2684c6f2dca9c8294431124413..e8afaad769acbc209b71ed220685a107eeec7056 100644 --- a/tests/kalman_filter_smoother/gen_data.mod +++ b/tests/kalman_filter_smoother/gen_data.mod @@ -35,4 +35,4 @@ stoch_simul(periods=2000,irf=0); plot([w x y z]); -save data w x y z dw dx dy; \ No newline at end of file +save data.mat w x y z dw dx dy; \ No newline at end of file