From 02efbd31a8d6f027798b97687fb9b5e2e88a8d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Fri, 8 Jun 2012 19:10:19 +0200 Subject: [PATCH] Convert files to Unix EOL --- doc/userguide/models/fs2000ns_steadystate.m | 104 +- doc/userguide/models/fsdat.m | 418 ++-- matlab/discretionary_policy_1.m | 314 +-- matlab/discretionary_policy_engine.m | 598 ++--- matlab/ident_bruteforce.m | 202 +- mex/sources/estimation/tests/DsgeLikelihood.m | 690 +++--- .../rawdata_euromodel_1.m | 1934 ++++++++--------- .../logposterior_dll_test/sweuromodel_dll.mod | 368 ++-- .../estimation/tests/rawdata_euromodel_1.m | 1934 ++++++++--------- .../estimation/tests/sweuromodel_dll.mod | 364 ++-- .../k_order_perturbation/tests/fs2000k.mod | 238 +- tests/AIM/data_ca1.m | 200 +- tests/AIM/fs2000_b1L1L_AIM_steadystate.m | 128 +- tests/AIM/fs2000_b1L1L_steadystate.m | 128 +- tests/AIM/fsdat.m | 418 ++-- .../example1_varexo_det_bytecode.mod | 116 +- .../dsgevar_forward_calibrated_lambda.mod | 158 +- .../dsgevar_forward_estimated_lambda.mod | 160 +- tests/dsge-var/simul_hybrid.mod | 100 +- tests/ep/linear.mod | 88 +- tests/fs2000/fs2000a_steadystate.m | 118 +- .../fs2000a_steadystate.m | 118 +- tests/kalman_filter_smoother/testsmoother.m | 112 +- tests/ls2003/data_ca1.m | 200 +- tests/measurement_errors/data_ca1.m | 200 +- .../ftd_2s_caseall_upperchol3v.m | 456 ++-- .../ftd_2s_caseall_upperchol4v.m | 662 +++--- .../ftd_2s_caseall_upperchol6v.m | 910 ++++---- .../ftd_2s_caseall_upperchol7v.m | 1050 ++++----- .../ms-sbvar/archive-files/ftd_RSvensson_4v.m | 376 ++-- tests/ms-sbvar/archive-files/ftd_cholesky.m | 502 ++--- tests/ms-sbvar/archive-files/ftd_non_rec_5v.m | 384 ++-- tests/ms-sbvar/archive-files/ftd_simszha5v.m | 380 ++-- .../ms-sbvar/archive-files/ftd_upperchol3v.m | 340 +-- .../ms-sbvar/archive-files/ftd_upperchol4v.m | 356 +-- .../ms-sbvar/archive-files/ftd_upperchol5v.m | 374 ++-- .../ms-sbvar/archive-files/ftd_upperchol6v.m | 388 ++-- .../ms-sbvar/archive-files/ftd_upperchol7v.m | 408 ++-- tests/optimal_policy/nk_ramsey.mod | 180 +- .../optimal_policy/nk_ramsey_expectation.mod | 192 +- .../nk_ramsey_expectation_a.mod | 208 +- tests/pi2004/idata.m | 8 +- tests/practicing/datasaver.m | 116 +- tests/recursive/data_ca1.m | 200 +- tests/steady_state/multi_leads.mod | 54 +- tests/steady_state/walsh1_initval.mod | 136 +- tests/steady_state/walsh1_old_ss.mod | 102 +- tests/steady_state/walsh1_ssm.mod | 144 +- tests/steady_state/walsh1_ssm_block.mod | 144 +- tests/test.m | 6 +- 50 files changed, 8742 insertions(+), 8742 deletions(-) diff --git a/doc/userguide/models/fs2000ns_steadystate.m b/doc/userguide/models/fs2000ns_steadystate.m index e55b40873..3720ec68e 100644 --- a/doc/userguide/models/fs2000ns_steadystate.m +++ b/doc/userguide/models/fs2000ns_steadystate.m @@ -1,53 +1,53 @@ -% computes the steady state of fs2000 analyticaly -% largely inspired by the program of F. Schorfheide -function [ys,check] = fs2000ns_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; - - P_obs = 1; - Y_obs = 1; - - ys =[ -m -P -c -e -W -R -k -d -n -l -Y_obs -P_obs -y +% computes the steady state of fs2000 analyticaly +% largely inspired by the program of F. Schorfheide +function [ys,check] = fs2000ns_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; + + P_obs = 1; + Y_obs = 1; + + ys =[ +m +P +c +e +W +R +k +d +n +l +Y_obs +P_obs +y dA ]; \ No newline at end of file diff --git a/doc/userguide/models/fsdat.m b/doc/userguide/models/fsdat.m index 5a0e3658d..aba209b90 100644 --- a/doc/userguide/models/fsdat.m +++ b/doc/userguide/models/fsdat.m @@ -1,210 +1,210 @@ -data_q = [ -18.02 1474.5 150.2 -17.94 1538.2 150.9 -18.01 1584.5 151.4 -18.42 1644.1 152 -18.73 1678.6 152.7 -19.46 1693.1 153.3 -19.55 1724 153.9 -19.56 1758.2 154.7 -19.79 1760.6 155.4 -19.77 1779.2 156 -19.82 1778.8 156.6 -20.03 1790.9 157.3 -20.12 1846 158 -20.1 1882.6 158.6 -20.14 1897.3 159.2 -20.22 1887.4 160 -20.27 1858.2 160.7 -20.34 1849.9 161.4 -20.39 1848.5 162 -20.42 1868.9 162.8 -20.47 1905.6 163.6 -20.56 1959.6 164.3 -20.62 1994.4 164.9 -20.78 2020.1 165.7 -21 2030.5 166.5 -21.2 2023.6 167.2 -21.33 2037.7 167.9 -21.62 2033.4 168.7 -21.71 2066.2 169.5 -22.01 2077.5 170.2 -22.15 2071.9 170.9 -22.27 2094 171.7 -22.29 2070.8 172.5 -22.56 2012.6 173.1 -22.64 2024.7 173.8 -22.77 2072.3 174.5 -22.88 2120.6 175.3 -22.92 2165 176.045 -22.91 2223.3 176.727 -22.94 2221.4 177.481 -23.03 2230.95 178.268 -23.13 2279.22 179.694 -23.22 2265.48 180.335 -23.32 2268.29 181.094 -23.4 2238.57 181.915 -23.45 2251.68 182.634 -23.51 2292.02 183.337 -23.56 2332.61 184.103 -23.63 2381.01 184.894 -23.75 2422.59 185.553 -23.81 2448.01 186.203 -23.87 2471.86 186.926 -23.94 2476.67 187.68 -24 2508.7 188.299 -24.07 2538.05 188.906 -24.12 2586.26 189.631 -24.29 2604.62 190.362 -24.35 2666.69 190.954 -24.41 2697.54 191.56 -24.52 2729.63 192.256 -24.64 2739.75 192.938 -24.77 2808.88 193.467 -24.88 2846.34 193.994 -25.01 2898.79 194.647 -25.17 2970.48 195.279 -25.32 3042.35 195.763 -25.53 3055.53 196.277 -25.79 3076.51 196.877 -26.02 3102.36 197.481 -26.14 3127.15 197.967 -26.31 3129.53 198.455 -26.6 3154.19 199.012 -26.9 3177.98 199.572 -27.21 3236.18 199.995 -27.49 3292.07 200.452 -27.75 3316.11 200.997 -28.12 3331.22 201.538 -28.39 3381.86 201.955 -28.73 3390.23 202.419 -29.14 3409.65 202.986 -29.51 3392.6 203.584 -29.94 3386.49 204.086 -30.36 3391.61 204.721 -30.61 3422.95 205.419 -31.02 3389.36 206.13 -31.5 3481.4 206.763 -31.93 3500.95 207.362 -32.27 3523.8 208 -32.54 3533.79 208.642 -33.02 3604.73 209.142 -33.2 3687.9 209.637 -33.49 3726.18 210.181 -33.95 3790.44 210.737 -34.36 3892.22 211.192 -34.94 3919.01 211.663 -35.61 3907.08 212.191 -36.29 3947.11 212.708 -37.01 3908.15 213.144 -37.79 3922.57 213.602 -38.96 3879.98 214.147 -40.13 3854.13 214.7 -41.05 3800.93 215.135 -41.66 3835.21 215.652 -42.41 3907.02 216.289 -43.19 3952.48 216.848 -43.69 4044.59 217.314 -44.15 4072.19 217.776 -44.77 4088.49 218.338 -45.57 4126.39 218.917 -46.32 4176.28 219.427 -47.07 4260.08 219.956 -47.66 4329.46 220.573 -48.63 4328.33 221.201 -49.42 4345.51 221.719 -50.41 4510.73 222.281 -51.27 4552.14 222.933 -52.35 4603.65 223.583 -53.51 4605.65 224.152 -54.65 4615.64 224.737 -55.82 4644.93 225.418 -56.92 4656.23 226.117 -58.18 4678.96 226.754 -59.55 4566.62 227.389 -61.01 4562.25 228.07 -62.59 4651.86 228.689 -64.15 4739.16 229.155 -65.37 4696.82 229.674 -66.65 4753.02 230.301 -67.87 4693.76 230.903 -68.86 4615.89 231.395 -69.72 4634.88 231.906 -70.66 4612.08 232.498 -71.44 4618.26 233.074 -72.08 4662.97 233.546 -72.83 4763.57 234.028 -73.48 4849 234.603 -74.19 4939.23 235.153 -75.02 5053.56 235.605 -75.58 5132.87 236.082 -76.25 5170.34 236.657 -76.81 5203.68 237.232 -77.63 5257.26 237.673 -78.25 5283.73 238.176 -78.76 5359.6 238.789 -79.45 5393.57 239.387 -79.81 5460.83 239.861 -80.22 5466.95 240.368 -80.84 5496.29 240.962 -81.45 5526.77 241.539 -82.09 5561.8 242.009 -82.68 5618 242.52 -83.33 5667.39 243.12 -84.09 5750.57 243.721 -84.67 5785.29 244.208 -85.56 5844.05 244.716 -86.66 5878.7 245.354 -87.44 5952.83 245.966 -88.45 6010.96 246.46 -89.39 6055.61 247.017 -90.13 6087.96 247.698 -90.88 6093.51 248.374 -92 6152.59 248.928 -93.18 6171.57 249.564 -94.14 6142.1 250.299 -95.11 6078.96 251.031 -96.27 6047.49 251.65 -97 6074.66 252.295 -97.7 6090.14 253.033 -98.31 6105.25 253.743 -99.13 6175.69 254.338 -99.79 6214.22 255.032 -100.17 6260.74 255.815 -100.88 6327.12 256.543 -101.84 6327.93 257.151 -102.35 6359.9 257.785 -102.83 6393.5 258.516 -103.51 6476.86 259.191 -104.13 6524.5 259.738 -104.71 6600.31 260.351 -105.39 6629.47 261.04 -106.09 6688.61 261.692 -106.75 6717.46 262.236 -107.24 6724.2 262.847 -107.75 6779.53 263.527 -108.29 6825.8 264.169 -108.91 6882 264.681 -109.24 6983.91 265.258 -109.74 7020 265.887 -110.23 7093.12 266.491 -111 7166.68 266.987 -111.43 7236.5 267.545 -111.76 7311.24 268.171 -112.08 7364.63 268.815 -]; -%GDPD GDPQ GPOP - -series = zeros(193,2); -series(:,2) = data_q(:,1); -series(:,1) = 1000*data_q(:,2)./data_q(:,3); - -Y_obs = series(:,1); -P_obs = series(:,2); - -series = series(2:193,:)./series(1:192,:); - -gy_obs = series(:,1); -gp_obs = series(:,2); - +data_q = [ +18.02 1474.5 150.2 +17.94 1538.2 150.9 +18.01 1584.5 151.4 +18.42 1644.1 152 +18.73 1678.6 152.7 +19.46 1693.1 153.3 +19.55 1724 153.9 +19.56 1758.2 154.7 +19.79 1760.6 155.4 +19.77 1779.2 156 +19.82 1778.8 156.6 +20.03 1790.9 157.3 +20.12 1846 158 +20.1 1882.6 158.6 +20.14 1897.3 159.2 +20.22 1887.4 160 +20.27 1858.2 160.7 +20.34 1849.9 161.4 +20.39 1848.5 162 +20.42 1868.9 162.8 +20.47 1905.6 163.6 +20.56 1959.6 164.3 +20.62 1994.4 164.9 +20.78 2020.1 165.7 +21 2030.5 166.5 +21.2 2023.6 167.2 +21.33 2037.7 167.9 +21.62 2033.4 168.7 +21.71 2066.2 169.5 +22.01 2077.5 170.2 +22.15 2071.9 170.9 +22.27 2094 171.7 +22.29 2070.8 172.5 +22.56 2012.6 173.1 +22.64 2024.7 173.8 +22.77 2072.3 174.5 +22.88 2120.6 175.3 +22.92 2165 176.045 +22.91 2223.3 176.727 +22.94 2221.4 177.481 +23.03 2230.95 178.268 +23.13 2279.22 179.694 +23.22 2265.48 180.335 +23.32 2268.29 181.094 +23.4 2238.57 181.915 +23.45 2251.68 182.634 +23.51 2292.02 183.337 +23.56 2332.61 184.103 +23.63 2381.01 184.894 +23.75 2422.59 185.553 +23.81 2448.01 186.203 +23.87 2471.86 186.926 +23.94 2476.67 187.68 +24 2508.7 188.299 +24.07 2538.05 188.906 +24.12 2586.26 189.631 +24.29 2604.62 190.362 +24.35 2666.69 190.954 +24.41 2697.54 191.56 +24.52 2729.63 192.256 +24.64 2739.75 192.938 +24.77 2808.88 193.467 +24.88 2846.34 193.994 +25.01 2898.79 194.647 +25.17 2970.48 195.279 +25.32 3042.35 195.763 +25.53 3055.53 196.277 +25.79 3076.51 196.877 +26.02 3102.36 197.481 +26.14 3127.15 197.967 +26.31 3129.53 198.455 +26.6 3154.19 199.012 +26.9 3177.98 199.572 +27.21 3236.18 199.995 +27.49 3292.07 200.452 +27.75 3316.11 200.997 +28.12 3331.22 201.538 +28.39 3381.86 201.955 +28.73 3390.23 202.419 +29.14 3409.65 202.986 +29.51 3392.6 203.584 +29.94 3386.49 204.086 +30.36 3391.61 204.721 +30.61 3422.95 205.419 +31.02 3389.36 206.13 +31.5 3481.4 206.763 +31.93 3500.95 207.362 +32.27 3523.8 208 +32.54 3533.79 208.642 +33.02 3604.73 209.142 +33.2 3687.9 209.637 +33.49 3726.18 210.181 +33.95 3790.44 210.737 +34.36 3892.22 211.192 +34.94 3919.01 211.663 +35.61 3907.08 212.191 +36.29 3947.11 212.708 +37.01 3908.15 213.144 +37.79 3922.57 213.602 +38.96 3879.98 214.147 +40.13 3854.13 214.7 +41.05 3800.93 215.135 +41.66 3835.21 215.652 +42.41 3907.02 216.289 +43.19 3952.48 216.848 +43.69 4044.59 217.314 +44.15 4072.19 217.776 +44.77 4088.49 218.338 +45.57 4126.39 218.917 +46.32 4176.28 219.427 +47.07 4260.08 219.956 +47.66 4329.46 220.573 +48.63 4328.33 221.201 +49.42 4345.51 221.719 +50.41 4510.73 222.281 +51.27 4552.14 222.933 +52.35 4603.65 223.583 +53.51 4605.65 224.152 +54.65 4615.64 224.737 +55.82 4644.93 225.418 +56.92 4656.23 226.117 +58.18 4678.96 226.754 +59.55 4566.62 227.389 +61.01 4562.25 228.07 +62.59 4651.86 228.689 +64.15 4739.16 229.155 +65.37 4696.82 229.674 +66.65 4753.02 230.301 +67.87 4693.76 230.903 +68.86 4615.89 231.395 +69.72 4634.88 231.906 +70.66 4612.08 232.498 +71.44 4618.26 233.074 +72.08 4662.97 233.546 +72.83 4763.57 234.028 +73.48 4849 234.603 +74.19 4939.23 235.153 +75.02 5053.56 235.605 +75.58 5132.87 236.082 +76.25 5170.34 236.657 +76.81 5203.68 237.232 +77.63 5257.26 237.673 +78.25 5283.73 238.176 +78.76 5359.6 238.789 +79.45 5393.57 239.387 +79.81 5460.83 239.861 +80.22 5466.95 240.368 +80.84 5496.29 240.962 +81.45 5526.77 241.539 +82.09 5561.8 242.009 +82.68 5618 242.52 +83.33 5667.39 243.12 +84.09 5750.57 243.721 +84.67 5785.29 244.208 +85.56 5844.05 244.716 +86.66 5878.7 245.354 +87.44 5952.83 245.966 +88.45 6010.96 246.46 +89.39 6055.61 247.017 +90.13 6087.96 247.698 +90.88 6093.51 248.374 +92 6152.59 248.928 +93.18 6171.57 249.564 +94.14 6142.1 250.299 +95.11 6078.96 251.031 +96.27 6047.49 251.65 +97 6074.66 252.295 +97.7 6090.14 253.033 +98.31 6105.25 253.743 +99.13 6175.69 254.338 +99.79 6214.22 255.032 +100.17 6260.74 255.815 +100.88 6327.12 256.543 +101.84 6327.93 257.151 +102.35 6359.9 257.785 +102.83 6393.5 258.516 +103.51 6476.86 259.191 +104.13 6524.5 259.738 +104.71 6600.31 260.351 +105.39 6629.47 261.04 +106.09 6688.61 261.692 +106.75 6717.46 262.236 +107.24 6724.2 262.847 +107.75 6779.53 263.527 +108.29 6825.8 264.169 +108.91 6882 264.681 +109.24 6983.91 265.258 +109.74 7020 265.887 +110.23 7093.12 266.491 +111 7166.68 266.987 +111.43 7236.5 267.545 +111.76 7311.24 268.171 +112.08 7364.63 268.815 +]; +%GDPD GDPQ GPOP + +series = zeros(193,2); +series(:,2) = data_q(:,1); +series(:,1) = 1000*data_q(:,2)./data_q(:,3); + +Y_obs = series(:,1); +P_obs = series(:,2); + +series = series(2:193,:)./series(1:192,:); + +gy_obs = series(:,1); +gp_obs = series(:,2); + ti = [1950:0.25:1997.75]; \ No newline at end of file diff --git a/matlab/discretionary_policy_1.m b/matlab/discretionary_policy_1.m index 2541df0a7..9deb655ff 100644 --- a/matlab/discretionary_policy_1.m +++ b/matlab/discretionary_policy_1.m @@ -1,157 +1,157 @@ -function [dr,ys,info]=discretionary_policy_1(oo_,Instruments) - -% Copyright (C) 2007-2012 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 . - -global M_ options_ -persistent Hold - -options_ = set_default_option(options_,'qz_criterium',1.000001); -options_ = set_default_option(options_,'solve_maxit',3000); - -% safeguard against issues like running ramsey policy first and then running discretion -if isfield(M_,'orig_model') - orig_model = M_.orig_model; - M_.endo_nbr = orig_model.endo_nbr; - M_.endo_names = orig_model.endo_names; - M_.lead_lag_incidence = orig_model.lead_lag_incidence; - M_.maximum_lead = orig_model.maximum_lead; - M_.maximum_endo_lead = orig_model.maximum_endo_lead; - M_.maximum_lag = orig_model.maximum_lag; - M_.maximum_endo_lag = orig_model.maximum_endo_lag; -else - M_.orig_model = M_; -end - -beta = get_optimal_policy_discount_factor(M_.params,M_.param_names); - -exo_nbr = M_.exo_nbr; -if isfield(M_,'orig_model') - orig_model = M_.orig_model; - endo_nbr = orig_model.endo_nbr; - endo_names = orig_model.endo_names; - lead_lag_incidence = orig_model.lead_lag_incidence; - MaxLead = orig_model.maximum_lead; - MaxLag = orig_model.maximum_lag; -else - endo_names = M_.endo_names; - endo_nbr = M_.endo_nbr; - MaxLag=M_.maximum_lag; - MaxLead=M_.maximum_lead; - lead_lag_incidence = M_.lead_lag_incidence; -end - -[U,Uy,W] = feval([M_.fname,'_objective_static'],zeros(endo_nbr,1),[], M_.params); -if any(any(Uy~=0)) - error(['discretionary_policy: the objective function must have zero ' ... - 'first order derivatives']) -end - -W=reshape(W,endo_nbr,endo_nbr); - -klen = MaxLag + MaxLead + 1; -iyv=lead_lag_incidence'; -% Find the jacobian -z = repmat(zeros(endo_nbr,1),1,klen); -z = z(nonzeros(iyv)) ; -it_ = MaxLag + 1 ; - -if exo_nbr == 0 - oo_.exo_steady_state = [] ; -end -[junk,jacobia_] = feval([M_.fname '_dynamic'],z, [oo_.exo_simul ... - oo_.exo_det_simul], M_.params, zeros(endo_nbr,1), it_); -if any(junk~=0) - error(['discretionary_policy: the model must be written in deviation ' ... - 'form and not have constant terms']) -end - -eq_nbr= size(jacobia_,1); -instr_nbr=endo_nbr-eq_nbr; - -instr_id=nan(instr_nbr,1); -for j=1:instr_nbr - vj=deblank(Instruments(j,:)); - vj_id=strmatch(vj,endo_names,'exact'); - if ~isempty(vj_id) - instr_id(j)=vj_id; - else - error([mfilename,':: instrument ',vj,' not found']) - end -end - -Indices={'lag','0','lead'}; -iter=1; -for j=1:numel(Indices) - eval(['A',Indices{j},'=zeros(eq_nbr,endo_nbr);']) - if strcmp(Indices{j},'0')||(strcmp(Indices{j},'lag') && MaxLag)||(strcmp(Indices{j},'lead') && MaxLead) - [junk,row,col]=find(lead_lag_incidence(iter,:)); - eval(['A',Indices{j},'(:,row)=jacobia_(:,col);']) - iter=iter+1; - end -end -B=jacobia_(:,nnz(iyv)+1:end); - -%%% MAIN ENGINE %%% -qz_criterium = options_.qz_criterium; -solve_maxit = options_.solve_maxit; -discretion_tol = options_.discretionary_tol; - -if ~isempty(Hold) - [H,G,info]=discretionary_policy_engine(Alag,A0,Alead,B,W,instr_id,beta,solve_maxit,discretion_tol,qz_criterium,Hold); -else - [H,G,info]=discretionary_policy_engine(Alag,A0,Alead,B,W,instr_id,beta,solve_maxit,discretion_tol,qz_criterium); -end - -if info - dr=[]; - return -else - Hold=H; - % Hold=[]; use this line if persistent command is not used. -end -% update the following elements - -LLI=lead_lag_incidence; -LLI(MaxLag,:)=any(H); - -LLI=LLI'; -tmp=find(LLI); -LLI(tmp)=1:numel(tmp); - -M_.lead_lag_incidence = LLI'; - -% set the state -dr=oo_.dr; -dr.ys =zeros(endo_nbr,1); -dr=set_state_space(dr,M_); -order_var=dr.order_var; - -T=H(order_var,order_var); -dr.ghu=G(order_var,:); -Selection=any(T); -dr.ghx=T(:,Selection); - -ys=NondistortionarySteadyState(M_); -dr.ys=ys; % <--- dr.ys =zeros(NewEndo_nbr,1); - -function ys=NondistortionarySteadyState(M_) -if exist([M_.fname,'_steadystate.m'],'file') - eval(['ys=',M_.fname,'_steadystate.m;']) -else - ys=zeros(M_.endo_nbr,1); -end +function [dr,ys,info]=discretionary_policy_1(oo_,Instruments) + +% Copyright (C) 2007-2012 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 . + +global M_ options_ +persistent Hold + +options_ = set_default_option(options_,'qz_criterium',1.000001); +options_ = set_default_option(options_,'solve_maxit',3000); + +% safeguard against issues like running ramsey policy first and then running discretion +if isfield(M_,'orig_model') + orig_model = M_.orig_model; + M_.endo_nbr = orig_model.endo_nbr; + M_.endo_names = orig_model.endo_names; + M_.lead_lag_incidence = orig_model.lead_lag_incidence; + M_.maximum_lead = orig_model.maximum_lead; + M_.maximum_endo_lead = orig_model.maximum_endo_lead; + M_.maximum_lag = orig_model.maximum_lag; + M_.maximum_endo_lag = orig_model.maximum_endo_lag; +else + M_.orig_model = M_; +end + +beta = get_optimal_policy_discount_factor(M_.params,M_.param_names); + +exo_nbr = M_.exo_nbr; +if isfield(M_,'orig_model') + orig_model = M_.orig_model; + endo_nbr = orig_model.endo_nbr; + endo_names = orig_model.endo_names; + lead_lag_incidence = orig_model.lead_lag_incidence; + MaxLead = orig_model.maximum_lead; + MaxLag = orig_model.maximum_lag; +else + endo_names = M_.endo_names; + endo_nbr = M_.endo_nbr; + MaxLag=M_.maximum_lag; + MaxLead=M_.maximum_lead; + lead_lag_incidence = M_.lead_lag_incidence; +end + +[U,Uy,W] = feval([M_.fname,'_objective_static'],zeros(endo_nbr,1),[], M_.params); +if any(any(Uy~=0)) + error(['discretionary_policy: the objective function must have zero ' ... + 'first order derivatives']) +end + +W=reshape(W,endo_nbr,endo_nbr); + +klen = MaxLag + MaxLead + 1; +iyv=lead_lag_incidence'; +% Find the jacobian +z = repmat(zeros(endo_nbr,1),1,klen); +z = z(nonzeros(iyv)) ; +it_ = MaxLag + 1 ; + +if exo_nbr == 0 + oo_.exo_steady_state = [] ; +end +[junk,jacobia_] = feval([M_.fname '_dynamic'],z, [oo_.exo_simul ... + oo_.exo_det_simul], M_.params, zeros(endo_nbr,1), it_); +if any(junk~=0) + error(['discretionary_policy: the model must be written in deviation ' ... + 'form and not have constant terms']) +end + +eq_nbr= size(jacobia_,1); +instr_nbr=endo_nbr-eq_nbr; + +instr_id=nan(instr_nbr,1); +for j=1:instr_nbr + vj=deblank(Instruments(j,:)); + vj_id=strmatch(vj,endo_names,'exact'); + if ~isempty(vj_id) + instr_id(j)=vj_id; + else + error([mfilename,':: instrument ',vj,' not found']) + end +end + +Indices={'lag','0','lead'}; +iter=1; +for j=1:numel(Indices) + eval(['A',Indices{j},'=zeros(eq_nbr,endo_nbr);']) + if strcmp(Indices{j},'0')||(strcmp(Indices{j},'lag') && MaxLag)||(strcmp(Indices{j},'lead') && MaxLead) + [junk,row,col]=find(lead_lag_incidence(iter,:)); + eval(['A',Indices{j},'(:,row)=jacobia_(:,col);']) + iter=iter+1; + end +end +B=jacobia_(:,nnz(iyv)+1:end); + +%%% MAIN ENGINE %%% +qz_criterium = options_.qz_criterium; +solve_maxit = options_.solve_maxit; +discretion_tol = options_.discretionary_tol; + +if ~isempty(Hold) + [H,G,info]=discretionary_policy_engine(Alag,A0,Alead,B,W,instr_id,beta,solve_maxit,discretion_tol,qz_criterium,Hold); +else + [H,G,info]=discretionary_policy_engine(Alag,A0,Alead,B,W,instr_id,beta,solve_maxit,discretion_tol,qz_criterium); +end + +if info + dr=[]; + return +else + Hold=H; + % Hold=[]; use this line if persistent command is not used. +end +% update the following elements + +LLI=lead_lag_incidence; +LLI(MaxLag,:)=any(H); + +LLI=LLI'; +tmp=find(LLI); +LLI(tmp)=1:numel(tmp); + +M_.lead_lag_incidence = LLI'; + +% set the state +dr=oo_.dr; +dr.ys =zeros(endo_nbr,1); +dr=set_state_space(dr,M_); +order_var=dr.order_var; + +T=H(order_var,order_var); +dr.ghu=G(order_var,:); +Selection=any(T); +dr.ghx=T(:,Selection); + +ys=NondistortionarySteadyState(M_); +dr.ys=ys; % <--- dr.ys =zeros(NewEndo_nbr,1); + +function ys=NondistortionarySteadyState(M_) +if exist([M_.fname,'_steadystate.m'],'file') + eval(['ys=',M_.fname,'_steadystate.m;']) +else + ys=zeros(M_.endo_nbr,1); +end diff --git a/matlab/discretionary_policy_engine.m b/matlab/discretionary_policy_engine.m index c59b24dcd..9b94d7301 100644 --- a/matlab/discretionary_policy_engine.m +++ b/matlab/discretionary_policy_engine.m @@ -1,299 +1,299 @@ -function [H,G,retcode]=discretionary_policy_engine(AAlag,AA0,AAlead,BB,bigw,instr_id,beta,solve_maxit,discretion_tol,qz_criterium,H00,verbose) - -% Solves the discretionary problem for a model of the form: -% AAlag*yy_{t-1}+AA0*yy_t+AAlead*yy_{t+1}+BB*e=0, with W the weight on the -% variables in vector y_t and instr_id is the location of the instruments -% in the yy_t vector. -% We use the Dennis (2007, Macroeconomic Dynamics) algorithm and so we need -% to re-write the model in the form -% A0*y_t=A1*y_{t-1}+A2*y_{t+1}+A3*x_t+A4*x_{t+1}+A5*e_t, with W the -% weight on the y_t vector and Q the weight on the x_t vector of -% instruments. - -% Copyright (C) 2007-2012 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 . - -if nargin<12 - verbose=0; - if nargin<11 - H00=[]; - if nargin<10 - qz_criterium=1.000001; - if nargin<9 - discretion_tol=sqrt(eps); - if nargin<8 - solve_maxit=3000; - if nargin<7 - beta=.99; - if nargin<6 - error([mfilename,':: Insufficient number of input arguments']) - elseif nargin>12 - error([mfilename,':: Number of input arguments cannot exceed 12']) - end - end - end - end - end - end -end - -[A0,A1,A2,A3,A4,A5,W,Q,endo_nbr,exo_nbr,aux,endo_augm_id]=GetDennisMatrices(AAlag,AA0,AAlead,BB,bigw,instr_id); -% aux is a logical index of the instruments which appear with lags in the -% model. Their location in the state vector is instr_id(aux) -% endo_augm_id is index (not logical) of locations of the augmented vector -% of non-instrumental variables - -AuxiliaryVariables_nbr=sum(aux); -H0=zeros(endo_nbr+AuxiliaryVariables_nbr); -if ~isempty(H00) - H0(1:endo_nbr,1:endo_nbr)=H00;clear H00 -end - -H10=H0(endo_augm_id,endo_augm_id); -F10=H0(instr_id,endo_augm_id); - -iter=0; -H1=H10; -F1=F10; -while 1 - iter=iter+1; - P=SylvesterDoubling(W+beta*F1'*Q*F1,beta*H1',H1,discretion_tol,solve_maxit); - if any(any(isnan(P))) - P=SylvesterHessenbergSchur(W+beta*F1'*Q*F1,beta*H1',H1); - if any(any(isnan(P))) - retcode=2; - return - end - end - D=A0-A2*H1-A4*F1; - Dinv=inv(D); - A3DPD=A3'*Dinv'*P*Dinv; - F1=-(Q+A3DPD*A3)\(A3DPD*A1); - H1=Dinv*(A1+A3*F1); - - [rcode,NQ]=CheckConvergence([H1;F1]-[H10;F10],iter,solve_maxit,discretion_tol); - if rcode - break - else - if verbose - disp(NQ) - end - end - H10=H1; - F10=F1; -end - -retcode = 0; -switch rcode - case 3 % nan - retcode=63; - retcode(2)=10000; - if verbose - disp([mfilename,':: NAN elements in the solution']) - end - case 2% maxiter - retcode = 61 - if verbose - disp([mfilename,':: Maximum Number of Iterations reached']) - end - case 1 - BadEig=max(abs(eig(H1)))>qz_criterium; - if BadEig - retcode=62; - retcode(2)=100*max(abs(eig(H1))); - if verbose - disp([mfilename,':: Some eigenvalues greater than qz_criterium, Model potentially unstable']) - end - end -end - -if retcode(1) - H=[]; - G=[]; -else - F2=-(Q+A3DPD*A3)\(A3DPD*A5); - H2=Dinv*(A5+A3*F2); - H=zeros(endo_nbr+AuxiliaryVariables_nbr); - G=zeros(endo_nbr+AuxiliaryVariables_nbr,exo_nbr); - H(endo_augm_id,endo_augm_id)=H1; - H(instr_id,endo_augm_id)=F1; - G(endo_augm_id,:)=H2; - G(instr_id,:)=F2; - - % Account for auxilliary variables - H(:,instr_id(aux))=H(:,end-(AuxiliaryVariables_nbr-1:-1:0)); - H=H(1:endo_nbr,1:endo_nbr); - G=G(1:endo_nbr,:); -end - -end - - -function [rcode,NQ]=CheckConvergence(Q,iter,MaxIter,crit) - -NQ=max(max(abs(Q)));% norm(Q); seems too costly -if isnan(NQ) - rcode=3; -elseif iter>MaxIter; - rcode=2; -elseif NQ= size(h,1) - [u,gbarp] = hess(g'); - [t,hbar] = schur(h); - [vbar] = sylvest_private(gbarp,u'*d*t,hbar,1e-15); - v = u*vbar*t'; -else - [u,gbar] = schur(g); - [t,hbarp] = hess(h'); - [vbar] = sylvest_private(hbarp,t'*d'*u,gbar,1e-15); - v = u*vbar'*t'; -end - -end - - -function v = sylvest_private(g,d,h,tol) -% -% SYLVEST Solves a Sylvester equation -% -% solves the Sylvester equation -% v = d + g v h -% for v where both g and h must be upper block triangular. -% The output info is zero on a successful return. -% The input tol indicates when an element of g or h should be considered -% zero. - -[m,n] = size(d); -v = zeros(m,n); -w = eye(m); -i = 1; -temp = []; - -%First handle the i = 1 case outside the loop - -if i< n, - if abs(h(i+1,i)) < tol, - v(:,i)= (w - g*h(i,i))\d(:,i); - i = i+1; - else - A = [w-g*h(i,i) (-g*h(i+1,i));... - -g*h(i,i+1) w-g*h(i+1,i+1)]; - C = [d(:,i); d(:,i+1)]; - X = A\C; - v(:,i) = X(1:m,:); - v(:,i+1) = X(m+1:2*m, :); - i = i+2; - end -end - -%Handle the rest of the matrix with the possible exception of i=n - -while i - if abs(h(i+1,i)) < tol, - v(:,i) = (w - g*h(i,i))\(d(:,i) + temp*h(1:b,i)); - i = i+1; - else - A = [w - g*h(i,i) (-g*h(i+1,i)); ... - -g*h(i,i+1) w - g*h(i+1,i+1)]; - C = [d(:,i) + temp*h(1:b,i); ... - d(:,i+1) + temp*h(1:b,i+1)]; - X = A\C; - v(:,i) = X(1:m,:); - v(:,i+1) = X(m+1:2*m, :); - i = i+2; - end -end - -%Handle the i = n case if i=n was not in a 2-2 block - -if i==n, - b = i-1; - temp = [temp g*v(:,size(temp,2)+1:b)]; - v(:,i) = (w-g*h(i,i))\(d(:,i) + temp*h(1:b,i)); -end - -end +function [H,G,retcode]=discretionary_policy_engine(AAlag,AA0,AAlead,BB,bigw,instr_id,beta,solve_maxit,discretion_tol,qz_criterium,H00,verbose) + +% Solves the discretionary problem for a model of the form: +% AAlag*yy_{t-1}+AA0*yy_t+AAlead*yy_{t+1}+BB*e=0, with W the weight on the +% variables in vector y_t and instr_id is the location of the instruments +% in the yy_t vector. +% We use the Dennis (2007, Macroeconomic Dynamics) algorithm and so we need +% to re-write the model in the form +% A0*y_t=A1*y_{t-1}+A2*y_{t+1}+A3*x_t+A4*x_{t+1}+A5*e_t, with W the +% weight on the y_t vector and Q the weight on the x_t vector of +% instruments. + +% Copyright (C) 2007-2012 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 . + +if nargin<12 + verbose=0; + if nargin<11 + H00=[]; + if nargin<10 + qz_criterium=1.000001; + if nargin<9 + discretion_tol=sqrt(eps); + if nargin<8 + solve_maxit=3000; + if nargin<7 + beta=.99; + if nargin<6 + error([mfilename,':: Insufficient number of input arguments']) + elseif nargin>12 + error([mfilename,':: Number of input arguments cannot exceed 12']) + end + end + end + end + end + end +end + +[A0,A1,A2,A3,A4,A5,W,Q,endo_nbr,exo_nbr,aux,endo_augm_id]=GetDennisMatrices(AAlag,AA0,AAlead,BB,bigw,instr_id); +% aux is a logical index of the instruments which appear with lags in the +% model. Their location in the state vector is instr_id(aux) +% endo_augm_id is index (not logical) of locations of the augmented vector +% of non-instrumental variables + +AuxiliaryVariables_nbr=sum(aux); +H0=zeros(endo_nbr+AuxiliaryVariables_nbr); +if ~isempty(H00) + H0(1:endo_nbr,1:endo_nbr)=H00;clear H00 +end + +H10=H0(endo_augm_id,endo_augm_id); +F10=H0(instr_id,endo_augm_id); + +iter=0; +H1=H10; +F1=F10; +while 1 + iter=iter+1; + P=SylvesterDoubling(W+beta*F1'*Q*F1,beta*H1',H1,discretion_tol,solve_maxit); + if any(any(isnan(P))) + P=SylvesterHessenbergSchur(W+beta*F1'*Q*F1,beta*H1',H1); + if any(any(isnan(P))) + retcode=2; + return + end + end + D=A0-A2*H1-A4*F1; + Dinv=inv(D); + A3DPD=A3'*Dinv'*P*Dinv; + F1=-(Q+A3DPD*A3)\(A3DPD*A1); + H1=Dinv*(A1+A3*F1); + + [rcode,NQ]=CheckConvergence([H1;F1]-[H10;F10],iter,solve_maxit,discretion_tol); + if rcode + break + else + if verbose + disp(NQ) + end + end + H10=H1; + F10=F1; +end + +retcode = 0; +switch rcode + case 3 % nan + retcode=63; + retcode(2)=10000; + if verbose + disp([mfilename,':: NAN elements in the solution']) + end + case 2% maxiter + retcode = 61 + if verbose + disp([mfilename,':: Maximum Number of Iterations reached']) + end + case 1 + BadEig=max(abs(eig(H1)))>qz_criterium; + if BadEig + retcode=62; + retcode(2)=100*max(abs(eig(H1))); + if verbose + disp([mfilename,':: Some eigenvalues greater than qz_criterium, Model potentially unstable']) + end + end +end + +if retcode(1) + H=[]; + G=[]; +else + F2=-(Q+A3DPD*A3)\(A3DPD*A5); + H2=Dinv*(A5+A3*F2); + H=zeros(endo_nbr+AuxiliaryVariables_nbr); + G=zeros(endo_nbr+AuxiliaryVariables_nbr,exo_nbr); + H(endo_augm_id,endo_augm_id)=H1; + H(instr_id,endo_augm_id)=F1; + G(endo_augm_id,:)=H2; + G(instr_id,:)=F2; + + % Account for auxilliary variables + H(:,instr_id(aux))=H(:,end-(AuxiliaryVariables_nbr-1:-1:0)); + H=H(1:endo_nbr,1:endo_nbr); + G=G(1:endo_nbr,:); +end + +end + + +function [rcode,NQ]=CheckConvergence(Q,iter,MaxIter,crit) + +NQ=max(max(abs(Q)));% norm(Q); seems too costly +if isnan(NQ) + rcode=3; +elseif iter>MaxIter; + rcode=2; +elseif NQ= size(h,1) + [u,gbarp] = hess(g'); + [t,hbar] = schur(h); + [vbar] = sylvest_private(gbarp,u'*d*t,hbar,1e-15); + v = u*vbar*t'; +else + [u,gbar] = schur(g); + [t,hbarp] = hess(h'); + [vbar] = sylvest_private(hbarp,t'*d'*u,gbar,1e-15); + v = u*vbar'*t'; +end + +end + + +function v = sylvest_private(g,d,h,tol) +% +% SYLVEST Solves a Sylvester equation +% +% solves the Sylvester equation +% v = d + g v h +% for v where both g and h must be upper block triangular. +% The output info is zero on a successful return. +% The input tol indicates when an element of g or h should be considered +% zero. + +[m,n] = size(d); +v = zeros(m,n); +w = eye(m); +i = 1; +temp = []; + +%First handle the i = 1 case outside the loop + +if i< n, + if abs(h(i+1,i)) < tol, + v(:,i)= (w - g*h(i,i))\d(:,i); + i = i+1; + else + A = [w-g*h(i,i) (-g*h(i+1,i));... + -g*h(i,i+1) w-g*h(i+1,i+1)]; + C = [d(:,i); d(:,i+1)]; + X = A\C; + v(:,i) = X(1:m,:); + v(:,i+1) = X(m+1:2*m, :); + i = i+2; + end +end + +%Handle the rest of the matrix with the possible exception of i=n + +while i + if abs(h(i+1,i)) < tol, + v(:,i) = (w - g*h(i,i))\(d(:,i) + temp*h(1:b,i)); + i = i+1; + else + A = [w - g*h(i,i) (-g*h(i+1,i)); ... + -g*h(i,i+1) w - g*h(i+1,i+1)]; + C = [d(:,i) + temp*h(1:b,i); ... + d(:,i+1) + temp*h(1:b,i+1)]; + X = A\C; + v(:,i) = X(1:m,:); + v(:,i+1) = X(m+1:2*m, :); + i = i+2; + end +end + +%Handle the i = n case if i=n was not in a 2-2 block + +if i==n, + b = i-1; + temp = [temp g*v(:,size(temp,2)+1:b)]; + v(:,i) = (w-g*h(i,i))\(d(:,i) + temp*h(1:b,i)); +end + +end diff --git a/matlab/ident_bruteforce.m b/matlab/ident_bruteforce.m index 7f1e84485..344fd408d 100644 --- a/matlab/ident_bruteforce.m +++ b/matlab/ident_bruteforce.m @@ -1,102 +1,102 @@ -function [pars, cosnJ] = ident_bruteforce(J,n,TeX, pnames_TeX) -% function [pars, cosnJ] = ident_bruteforce(J,n,TeX, pnames_TeX) -% -% given the Jacobian matrix J of moment derivatives w.r.t. parameters -% computes, for each column of J, the groups of columns from 1 to n that -% can repliate at best the derivatives of that column -% -% OUTPUTS -% pars : cell array with groupf of params for each column of J for 1 to n -% cosnJ : the cosn of each column with the selected group of columns - -% Copyright (C) 2009-2011 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 1.e-8, - if ll>1 && ((cosnJ(ii,ll)-cosnJ(ii,ll-1))<1.e-8), - pars{ii,ll} = [pars{ii,ll-1} NaN]; - cosnJ(ii,ll) = cosnJ(ii,ll-1); - else - pars{ii,ll} = tmp2(find(cosnJ2(:,1)==max(cosnJ2(:,1))),:); - end - else - pars{ii,ll} = NaN(1,ll); - end - dyn_waitbar(ii/k,h) - end - dyn_waitbar_close(h); - if TeX - filename = [OutputDirectoryName '/' M_.fname '_collinearity_patterns' int2str(ll) '.TeX']; - fidTeX = fopen(filename,'w'); - fprintf(fidTeX,'%% TeX-table generated by ident_bruteforce (Dynare).\n'); - fprintf(fidTeX,['%% Collinearity patterns with ',int2str(ll),' parameter(s)\n']); - fprintf(fidTeX,['%% ' datestr(now,0)]); - fprintf(fidTeX,' \n'); - fprintf(fidTeX,' \n'); - fprintf(fidTeX,'{\\tiny \n'); - fprintf(fidTeX,'\\begin{table}\n'); - fprintf(fidTeX,'\\centering\n'); - fprintf(fidTeX,'\\begin{tabular}{l|lc} \n'); - fprintf(fidTeX,'\\hline\\hline \\\\ \n'); - fprintf(fidTeX,' Parameter & Explanatory & cosn \\\\ \n'); - fprintf(fidTeX,' & parameter(s) & \\\\ \n'); - fprintf(fidTeX,'\\hline \\\\ \n'); - for i=1:k, - plist=''; - for ii=1:ll, - plist = [plist ' $' pnames_TeX(pars{i,ll}(ii),:) '$ ']; - end - fprintf(fidTeX,'$%s$ & [%s] & %7.3f \\\\ \n',... - pnames_TeX(i,:),... - plist,... - cosnJ(i,ll)); - end - fprintf(fidTeX,'\\hline\\hline \n'); - fprintf(fidTeX,'\\end{tabular}\n '); - fprintf(fidTeX,['\\caption{Collinearity patterns with ',int2str(ll),' parameter(s)}\n ']); - fprintf(fidTeX,['\\label{Table:CollinearityPatterns:',int2str(ll),'}\n']); - fprintf(fidTeX,'\\end{table}\n'); - fprintf(fidTeX,'} \n'); - fprintf(fidTeX,'%% End of TeX file.\n'); - fclose(fidTeX); - end +function [pars, cosnJ] = ident_bruteforce(J,n,TeX, pnames_TeX) +% function [pars, cosnJ] = ident_bruteforce(J,n,TeX, pnames_TeX) +% +% given the Jacobian matrix J of moment derivatives w.r.t. parameters +% computes, for each column of J, the groups of columns from 1 to n that +% can repliate at best the derivatives of that column +% +% OUTPUTS +% pars : cell array with groupf of params for each column of J for 1 to n +% cosnJ : the cosn of each column with the selected group of columns + +% Copyright (C) 2009-2011 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 1.e-8, + if ll>1 && ((cosnJ(ii,ll)-cosnJ(ii,ll-1))<1.e-8), + pars{ii,ll} = [pars{ii,ll-1} NaN]; + cosnJ(ii,ll) = cosnJ(ii,ll-1); + else + pars{ii,ll} = tmp2(find(cosnJ2(:,1)==max(cosnJ2(:,1))),:); + end + else + pars{ii,ll} = NaN(1,ll); + end + dyn_waitbar(ii/k,h) + end + dyn_waitbar_close(h); + if TeX + filename = [OutputDirectoryName '/' M_.fname '_collinearity_patterns' int2str(ll) '.TeX']; + fidTeX = fopen(filename,'w'); + fprintf(fidTeX,'%% TeX-table generated by ident_bruteforce (Dynare).\n'); + fprintf(fidTeX,['%% Collinearity patterns with ',int2str(ll),' parameter(s)\n']); + fprintf(fidTeX,['%% ' datestr(now,0)]); + fprintf(fidTeX,' \n'); + fprintf(fidTeX,' \n'); + fprintf(fidTeX,'{\\tiny \n'); + fprintf(fidTeX,'\\begin{table}\n'); + fprintf(fidTeX,'\\centering\n'); + fprintf(fidTeX,'\\begin{tabular}{l|lc} \n'); + fprintf(fidTeX,'\\hline\\hline \\\\ \n'); + fprintf(fidTeX,' Parameter & Explanatory & cosn \\\\ \n'); + fprintf(fidTeX,' & parameter(s) & \\\\ \n'); + fprintf(fidTeX,'\\hline \\\\ \n'); + for i=1:k, + plist=''; + for ii=1:ll, + plist = [plist ' $' pnames_TeX(pars{i,ll}(ii),:) '$ ']; + end + fprintf(fidTeX,'$%s$ & [%s] & %7.3f \\\\ \n',... + pnames_TeX(i,:),... + plist,... + cosnJ(i,ll)); + end + fprintf(fidTeX,'\\hline\\hline \n'); + fprintf(fidTeX,'\\end{tabular}\n '); + fprintf(fidTeX,['\\caption{Collinearity patterns with ',int2str(ll),' parameter(s)}\n ']); + fprintf(fidTeX,['\\label{Table:CollinearityPatterns:',int2str(ll),'}\n']); + fprintf(fidTeX,'\\end{table}\n'); + fprintf(fidTeX,'} \n'); + fprintf(fidTeX,'%% End of TeX file.\n'); + fclose(fidTeX); + end end \ No newline at end of file diff --git a/mex/sources/estimation/tests/DsgeLikelihood.m b/mex/sources/estimation/tests/DsgeLikelihood.m index a22501b58..6de151c6d 100644 --- a/mex/sources/estimation/tests/DsgeLikelihood.m +++ b/mex/sources/estimation/tests/DsgeLikelihood.m @@ -1,345 +1,345 @@ -function [fval,cost_flag,ys,trend_coeff,info] = DsgeLikelihood(xparam1,gend,data,data_index,number_of_observations,no_more_missing_observations) -% function [fval,cost_flag,ys,trend_coeff,info] = DsgeLikelihood(xparam1,gend,data,data_index,number_of_observations,no_more_missing_observations) -% Evaluates the posterior kernel of a dsge model. -% -% INPUTS -% xparam1 [double] vector of model parameters. -% gend [integer] scalar specifying the number of observations. -% data [double] matrix of data -% data_index [cell] cell of column vectors -% number_of_observations [integer] -% no_more_missing_observations [integer] -% OUTPUTS -% fval : value of the posterior kernel at xparam1. -% cost_flag : zero if the function returns a penalty, one otherwise. -% ys : steady state of original endogenous variables -% trend_coeff : -% info : vector of informations about the penalty: -% 41: one (many) parameter(s) do(es) not satisfied the lower bound -% 42: one (many) parameter(s) do(es) not satisfied the upper bound -% -% SPECIAL REQUIREMENTS -% - -% Copyright (C) 2004-2010 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 . - -global bayestopt_ estim_params_ options_ trend_coeff_ M_ oo_ -fval = []; -ys = []; -trend_coeff = []; -cost_flag = 1; -nobs = size(options_.varobs,1); -%------------------------------------------------------------------------------ -% 1. Get the structural parameters & define penalties -%------------------------------------------------------------------------------ -if options_.mode_compute ~= 1 & any(xparam1 < bayestopt_.lb) - k = find(xparam1 < bayestopt_.lb); - fval = bayestopt_.penalty+sum((bayestopt_.lb(k)-xparam1(k)).^2); - cost_flag = 0; - info = 41; - return; -end -if options_.mode_compute ~= 1 & any(xparam1 > bayestopt_.ub) - k = find(xparam1 > bayestopt_.ub); - fval = bayestopt_.penalty+sum((xparam1(k)-bayestopt_.ub(k)).^2); - cost_flag = 0; - info = 42; - return; -end -Q = M_.Sigma_e; -H = M_.H; -for i=1:estim_params_.nvx - k =estim_params_.var_exo(i,1); - Q(k,k) = xparam1(i)*xparam1(i); -end -offset = estim_params_.nvx; -if estim_params_.nvn - for i=1:estim_params_.nvn - k = estim_params_.var_endo(i,1); - H(k,k) = xparam1(i+offset)*xparam1(i+offset); - end - offset = offset+estim_params_.nvn; -end -if estim_params_.ncx - for i=1:estim_params_.ncx - k1 =estim_params_.corrx(i,1); - k2 =estim_params_.corrx(i,2); - Q(k1,k2) = xparam1(i+offset)*sqrt(Q(k1,k1)*Q(k2,k2)); - Q(k2,k1) = Q(k1,k2); - end - [CholQ,testQ] = chol(Q); - if testQ %% The variance-covariance matrix of the structural innovations is not definite positive. - %% We have to compute the eigenvalues of this matrix in order to build the penalty. - a = diag(eig(Q)); - k = find(a < 0); - if k > 0 - fval = bayestopt_.penalty+sum(-a(k)); - cost_flag = 0; - info = 43; - return - end - end - offset = offset+estim_params_.ncx; -end -if estim_params_.ncn - for i=1:estim_params_.ncn - k1 = options_.lgyidx2varobs(estim_params_.corrn(i,1)); - k2 = options_.lgyidx2varobs(estim_params_.corrn(i,2)); - H(k1,k2) = xparam1(i+offset)*sqrt(H(k1,k1)*H(k2,k2)); - H(k2,k1) = H(k1,k2); - end - [CholH,testH] = chol(H); - if testH - a = diag(eig(H)); - k = find(a < 0); - if k > 0 - fval = bayestopt_.penalty+sum(-a(k)); - cost_flag = 0; - info = 44; - return - end - end - offset = offset+estim_params_.ncn; -end -if estim_params_.np > 0 - M_.params(estim_params_.param_vals(:,1)) = xparam1(offset+1:end); -end -M_.Sigma_e = Q; -M_.H = H; -%------------------------------------------------------------------------------ -% 2. call model setup & reduction program -%------------------------------------------------------------------------------ -[T,R,SteadyState,info] = dynare_resolve(bayestopt_.restrict_var_list,... - bayestopt_.restrict_columns,... - bayestopt_.restrict_aux); -if info(1) == 1 || info(1) == 2 || info(1) == 5 - fval = bayestopt_.penalty+1; - cost_flag = 0; - return -elseif info(1) == 3 || info(1) == 4 || info(1)==6 ||info(1) == 19 || info(1) == 20 || info(1) == 21 - fval = bayestopt_.penalty+info(2); - cost_flag = 0; - return -end -bayestopt_.mf = bayestopt_.mf1; -if options_.noconstant - constant = zeros(nobs,1); -else - if options_.loglinear - constant = log(SteadyState(bayestopt_.mfys)); - else - constant = SteadyState(bayestopt_.mfys); - end -end -if bayestopt_.with_trend - trend_coeff = zeros(nobs,1); - t = options_.trend_coeffs; - for i=1:length(t) - if ~isempty(t{i}) - trend_coeff(i) = evalin('base',t{i}); - end - end - trend = repmat(constant,1,gend)+trend_coeff*[1:gend]; -else - trend = repmat(constant,1,gend); -end -start = options_.presample+1; -np = size(T,1); -mf = bayestopt_.mf; -no_missing_data_flag = (number_of_observations==gend*nobs); -%------------------------------------------------------------------------------ -% 3. Initial condition of the Kalman filter -%------------------------------------------------------------------------------ -T -R -Q -R*Q*R' -pause -options_.lik_init = 1; -kalman_algo = options_.kalman_algo; -if options_.lik_init == 1 % Kalman filter - if kalman_algo ~= 2 - kalman_algo = 1; - end - Pstar = lyapunov_symm(T,R*Q*R',options_.qz_criterium,options_.lyapunov_complex_threshold); - Pinf = []; -elseif options_.lik_init == 2 % Old Diffuse Kalman filter - if kalman_algo ~= 2 - kalman_algo = 1; - end - Pstar = options_.Harvey_scale_factor*eye(np); - Pinf = []; -elseif options_.lik_init == 3 % Diffuse Kalman filter - if kalman_algo ~= 4 - kalman_algo = 3; - end - [QT,ST] = schur(T); - e1 = abs(ordeig(ST)) > 2-options_.qz_criterium; - [QT,ST] = ordschur(QT,ST,e1); - k = find(abs(ordeig(ST)) > 2-options_.qz_criterium); - nk = length(k); - nk1 = nk+1; - Pinf = zeros(np,np); - Pinf(1:nk,1:nk) = eye(nk); - Pstar = zeros(np,np); - B = QT'*R*Q*R'*QT; - for i=np:-1:nk+2 - if ST(i,i-1) == 0 - if i == np - c = zeros(np-nk,1); - else - c = ST(nk1:i,:)*(Pstar(:,i+1:end)*ST(i,i+1:end)')+... - ST(i,i)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i); - end - q = eye(i-nk)-ST(nk1:i,nk1:i)*ST(i,i); - Pstar(nk1:i,i) = q\(B(nk1:i,i)+c); - Pstar(i,nk1:i-1) = Pstar(nk1:i-1,i)'; - else - if i == np - c = zeros(np-nk,1); - c1 = zeros(np-nk,1); - else - c = ST(nk1:i,:)*(Pstar(:,i+1:end)*ST(i,i+1:end)')+... - ST(i,i)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i)+... - ST(i,i-1)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i-1); - c1 = ST(nk1:i,:)*(Pstar(:,i+1:end)*ST(i-1,i+1:end)')+... - ST(i-1,i-1)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i-1)+... - ST(i-1,i)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i); - end - q = [eye(i-nk)-ST(nk1:i,nk1:i)*ST(i,i) -ST(nk1:i,nk1:i)*ST(i,i-1);... - -ST(nk1:i,nk1:i)*ST(i-1,i) eye(i-nk)-ST(nk1:i,nk1:i)*ST(i-1,i-1)]; - z = q\[B(nk1:i,i)+c;B(nk1:i,i-1)+c1]; - Pstar(nk1:i,i) = z(1:(i-nk)); - Pstar(nk1:i,i-1) = z(i-nk+1:end); - Pstar(i,nk1:i-1) = Pstar(nk1:i-1,i)'; - Pstar(i-1,nk1:i-2) = Pstar(nk1:i-2,i-1)'; - i = i - 1; - end - end - if i == nk+2 - c = ST(nk+1,:)*(Pstar(:,nk+2:end)*ST(nk1,nk+2:end)')+ST(nk1,nk1)*ST(nk1,nk+2:end)*Pstar(nk+2:end,nk1); - Pstar(nk1,nk1)=(B(nk1,nk1)+c)/(1-ST(nk1,nk1)*ST(nk1,nk1)); - end - Z = QT(mf,:); - R1 = QT'*R; - [QQ,RR,EE] = qr(Z*ST(:,1:nk),0); - k = find(abs(diag([RR; zeros(nk-size(Z,1),size(RR,2))])) < 1e-8); - if length(k) > 0 - k1 = EE(:,k); - dd =ones(nk,1); - dd(k1) = zeros(length(k1),1); - Pinf(1:nk,1:nk) = diag(dd); - end -end -if kalman_algo == 2 -end -kalman_tol = options_.kalman_tol; -riccati_tol = options_.riccati_tol; -mf = bayestopt_.mf1; -Y = data-trend; -Pstar -pause -%------------------------------------------------------------------------------ -% 4. Likelihood evaluation -%------------------------------------------------------------------------------ -if (kalman_algo==1)% Multivariate Kalman Filter - if no_missing_data_flag - LIK = kalman_filter(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol); - else - LIK = ... - missing_observations_kalman_filter(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol, ... - data_index,number_of_observations,no_more_missing_observations); - end - if isinf(LIK) - kalman_algo = 2; - end -end -if (kalman_algo==2)% Univariate Kalman Filter - no_correlation_flag = 1; - if length(H)==1 & H == 0 - H = zeros(nobs,1); - else - if all(all(abs(H-diag(diag(H)))<1e-14))% ie, the covariance matrix is diagonal... - H = diag(H); - else - no_correlation_flag = 0; - end - end - if no_correlation_flag - LIK = univariate_kalman_filter(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol,data_index,number_of_observations,no_more_missing_observations); - else - LIK = univariate_kalman_filter_corr(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol,data_index,number_of_observations,no_more_missing_observations); - end -end -if (kalman_algo==3)% Multivariate Diffuse Kalman Filter - if no_missing_data_flag - LIK = diffuse_kalman_filter(ST,R1,Q,H,Pinf,Pstar,Y,start,Z,kalman_tol, ... - riccati_tol); - else - LIK = missing_observations_diffuse_kalman_filter(ST,R1,Q,H,Pinf, ... - Pstar,Y,start,Z,kalman_tol,riccati_tol,... - data_index,number_of_observations,... - no_more_missing_observations); - end - if isinf(LIK) - kalman_algo = 4; - end -end -if (kalman_algo==4)% Univariate Diffuse Kalman Filter - no_correlation_flag = 1; - if length(H)==1 & H == 0 - H = zeros(nobs,1); - else - if all(all(abs(H-diag(diag(H)))<1e-14))% ie, the covariance matrix is diagonal... - H = diag(H); - else - no_correlation_flag = 0; - end - end - if no_correlation_flag - LIK = univariate_diffuse_kalman_filter(ST,R1,Q,H,Pinf,Pstar,Y, ... - start,Z,kalman_tol,riccati_tol,data_index,... - number_of_observations,no_more_missing_observations); - else - LIK = univariate_diffuse_kalman_filter_corr(ST,R1,Q,H,Pinf,Pstar, ... - Y,start,Z,kalman_tol,riccati_tol,... - data_index,number_of_observations,... - no_more_missing_observations); - end -end -if isnan(LIK) - cost_flag = 0; - return -end -if imag(LIK)~=0 - likelihood = bayestopt_.penalty; -else - likelihood = LIK; -end -% ------------------------------------------------------------------------------ -% Adds prior if necessary -% ------------------------------------------------------------------------------ -lnprior = priordens(xparam1,bayestopt_.pshape,bayestopt_.p6,bayestopt_.p7,bayestopt_.p3,bayestopt_.p4); -fval = (likelihood-lnprior); -likelihood -lnprior -fval -pause -LIKDLL=logposterior(xparam1,Y,mexext) -pause -options_.kalman_algo = kalman_algo; +function [fval,cost_flag,ys,trend_coeff,info] = DsgeLikelihood(xparam1,gend,data,data_index,number_of_observations,no_more_missing_observations) +% function [fval,cost_flag,ys,trend_coeff,info] = DsgeLikelihood(xparam1,gend,data,data_index,number_of_observations,no_more_missing_observations) +% Evaluates the posterior kernel of a dsge model. +% +% INPUTS +% xparam1 [double] vector of model parameters. +% gend [integer] scalar specifying the number of observations. +% data [double] matrix of data +% data_index [cell] cell of column vectors +% number_of_observations [integer] +% no_more_missing_observations [integer] +% OUTPUTS +% fval : value of the posterior kernel at xparam1. +% cost_flag : zero if the function returns a penalty, one otherwise. +% ys : steady state of original endogenous variables +% trend_coeff : +% info : vector of informations about the penalty: +% 41: one (many) parameter(s) do(es) not satisfied the lower bound +% 42: one (many) parameter(s) do(es) not satisfied the upper bound +% +% SPECIAL REQUIREMENTS +% + +% Copyright (C) 2004-2010 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 . + +global bayestopt_ estim_params_ options_ trend_coeff_ M_ oo_ +fval = []; +ys = []; +trend_coeff = []; +cost_flag = 1; +nobs = size(options_.varobs,1); +%------------------------------------------------------------------------------ +% 1. Get the structural parameters & define penalties +%------------------------------------------------------------------------------ +if options_.mode_compute ~= 1 & any(xparam1 < bayestopt_.lb) + k = find(xparam1 < bayestopt_.lb); + fval = bayestopt_.penalty+sum((bayestopt_.lb(k)-xparam1(k)).^2); + cost_flag = 0; + info = 41; + return; +end +if options_.mode_compute ~= 1 & any(xparam1 > bayestopt_.ub) + k = find(xparam1 > bayestopt_.ub); + fval = bayestopt_.penalty+sum((xparam1(k)-bayestopt_.ub(k)).^2); + cost_flag = 0; + info = 42; + return; +end +Q = M_.Sigma_e; +H = M_.H; +for i=1:estim_params_.nvx + k =estim_params_.var_exo(i,1); + Q(k,k) = xparam1(i)*xparam1(i); +end +offset = estim_params_.nvx; +if estim_params_.nvn + for i=1:estim_params_.nvn + k = estim_params_.var_endo(i,1); + H(k,k) = xparam1(i+offset)*xparam1(i+offset); + end + offset = offset+estim_params_.nvn; +end +if estim_params_.ncx + for i=1:estim_params_.ncx + k1 =estim_params_.corrx(i,1); + k2 =estim_params_.corrx(i,2); + Q(k1,k2) = xparam1(i+offset)*sqrt(Q(k1,k1)*Q(k2,k2)); + Q(k2,k1) = Q(k1,k2); + end + [CholQ,testQ] = chol(Q); + if testQ %% The variance-covariance matrix of the structural innovations is not definite positive. + %% We have to compute the eigenvalues of this matrix in order to build the penalty. + a = diag(eig(Q)); + k = find(a < 0); + if k > 0 + fval = bayestopt_.penalty+sum(-a(k)); + cost_flag = 0; + info = 43; + return + end + end + offset = offset+estim_params_.ncx; +end +if estim_params_.ncn + for i=1:estim_params_.ncn + k1 = options_.lgyidx2varobs(estim_params_.corrn(i,1)); + k2 = options_.lgyidx2varobs(estim_params_.corrn(i,2)); + H(k1,k2) = xparam1(i+offset)*sqrt(H(k1,k1)*H(k2,k2)); + H(k2,k1) = H(k1,k2); + end + [CholH,testH] = chol(H); + if testH + a = diag(eig(H)); + k = find(a < 0); + if k > 0 + fval = bayestopt_.penalty+sum(-a(k)); + cost_flag = 0; + info = 44; + return + end + end + offset = offset+estim_params_.ncn; +end +if estim_params_.np > 0 + M_.params(estim_params_.param_vals(:,1)) = xparam1(offset+1:end); +end +M_.Sigma_e = Q; +M_.H = H; +%------------------------------------------------------------------------------ +% 2. call model setup & reduction program +%------------------------------------------------------------------------------ +[T,R,SteadyState,info] = dynare_resolve(bayestopt_.restrict_var_list,... + bayestopt_.restrict_columns,... + bayestopt_.restrict_aux); +if info(1) == 1 || info(1) == 2 || info(1) == 5 + fval = bayestopt_.penalty+1; + cost_flag = 0; + return +elseif info(1) == 3 || info(1) == 4 || info(1)==6 ||info(1) == 19 || info(1) == 20 || info(1) == 21 + fval = bayestopt_.penalty+info(2); + cost_flag = 0; + return +end +bayestopt_.mf = bayestopt_.mf1; +if options_.noconstant + constant = zeros(nobs,1); +else + if options_.loglinear + constant = log(SteadyState(bayestopt_.mfys)); + else + constant = SteadyState(bayestopt_.mfys); + end +end +if bayestopt_.with_trend + trend_coeff = zeros(nobs,1); + t = options_.trend_coeffs; + for i=1:length(t) + if ~isempty(t{i}) + trend_coeff(i) = evalin('base',t{i}); + end + end + trend = repmat(constant,1,gend)+trend_coeff*[1:gend]; +else + trend = repmat(constant,1,gend); +end +start = options_.presample+1; +np = size(T,1); +mf = bayestopt_.mf; +no_missing_data_flag = (number_of_observations==gend*nobs); +%------------------------------------------------------------------------------ +% 3. Initial condition of the Kalman filter +%------------------------------------------------------------------------------ +T +R +Q +R*Q*R' +pause +options_.lik_init = 1; +kalman_algo = options_.kalman_algo; +if options_.lik_init == 1 % Kalman filter + if kalman_algo ~= 2 + kalman_algo = 1; + end + Pstar = lyapunov_symm(T,R*Q*R',options_.qz_criterium,options_.lyapunov_complex_threshold); + Pinf = []; +elseif options_.lik_init == 2 % Old Diffuse Kalman filter + if kalman_algo ~= 2 + kalman_algo = 1; + end + Pstar = options_.Harvey_scale_factor*eye(np); + Pinf = []; +elseif options_.lik_init == 3 % Diffuse Kalman filter + if kalman_algo ~= 4 + kalman_algo = 3; + end + [QT,ST] = schur(T); + e1 = abs(ordeig(ST)) > 2-options_.qz_criterium; + [QT,ST] = ordschur(QT,ST,e1); + k = find(abs(ordeig(ST)) > 2-options_.qz_criterium); + nk = length(k); + nk1 = nk+1; + Pinf = zeros(np,np); + Pinf(1:nk,1:nk) = eye(nk); + Pstar = zeros(np,np); + B = QT'*R*Q*R'*QT; + for i=np:-1:nk+2 + if ST(i,i-1) == 0 + if i == np + c = zeros(np-nk,1); + else + c = ST(nk1:i,:)*(Pstar(:,i+1:end)*ST(i,i+1:end)')+... + ST(i,i)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i); + end + q = eye(i-nk)-ST(nk1:i,nk1:i)*ST(i,i); + Pstar(nk1:i,i) = q\(B(nk1:i,i)+c); + Pstar(i,nk1:i-1) = Pstar(nk1:i-1,i)'; + else + if i == np + c = zeros(np-nk,1); + c1 = zeros(np-nk,1); + else + c = ST(nk1:i,:)*(Pstar(:,i+1:end)*ST(i,i+1:end)')+... + ST(i,i)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i)+... + ST(i,i-1)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i-1); + c1 = ST(nk1:i,:)*(Pstar(:,i+1:end)*ST(i-1,i+1:end)')+... + ST(i-1,i-1)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i-1)+... + ST(i-1,i)*ST(nk1:i,i+1:end)*Pstar(i+1:end,i); + end + q = [eye(i-nk)-ST(nk1:i,nk1:i)*ST(i,i) -ST(nk1:i,nk1:i)*ST(i,i-1);... + -ST(nk1:i,nk1:i)*ST(i-1,i) eye(i-nk)-ST(nk1:i,nk1:i)*ST(i-1,i-1)]; + z = q\[B(nk1:i,i)+c;B(nk1:i,i-1)+c1]; + Pstar(nk1:i,i) = z(1:(i-nk)); + Pstar(nk1:i,i-1) = z(i-nk+1:end); + Pstar(i,nk1:i-1) = Pstar(nk1:i-1,i)'; + Pstar(i-1,nk1:i-2) = Pstar(nk1:i-2,i-1)'; + i = i - 1; + end + end + if i == nk+2 + c = ST(nk+1,:)*(Pstar(:,nk+2:end)*ST(nk1,nk+2:end)')+ST(nk1,nk1)*ST(nk1,nk+2:end)*Pstar(nk+2:end,nk1); + Pstar(nk1,nk1)=(B(nk1,nk1)+c)/(1-ST(nk1,nk1)*ST(nk1,nk1)); + end + Z = QT(mf,:); + R1 = QT'*R; + [QQ,RR,EE] = qr(Z*ST(:,1:nk),0); + k = find(abs(diag([RR; zeros(nk-size(Z,1),size(RR,2))])) < 1e-8); + if length(k) > 0 + k1 = EE(:,k); + dd =ones(nk,1); + dd(k1) = zeros(length(k1),1); + Pinf(1:nk,1:nk) = diag(dd); + end +end +if kalman_algo == 2 +end +kalman_tol = options_.kalman_tol; +riccati_tol = options_.riccati_tol; +mf = bayestopt_.mf1; +Y = data-trend; +Pstar +pause +%------------------------------------------------------------------------------ +% 4. Likelihood evaluation +%------------------------------------------------------------------------------ +if (kalman_algo==1)% Multivariate Kalman Filter + if no_missing_data_flag + LIK = kalman_filter(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol); + else + LIK = ... + missing_observations_kalman_filter(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol, ... + data_index,number_of_observations,no_more_missing_observations); + end + if isinf(LIK) + kalman_algo = 2; + end +end +if (kalman_algo==2)% Univariate Kalman Filter + no_correlation_flag = 1; + if length(H)==1 & H == 0 + H = zeros(nobs,1); + else + if all(all(abs(H-diag(diag(H)))<1e-14))% ie, the covariance matrix is diagonal... + H = diag(H); + else + no_correlation_flag = 0; + end + end + if no_correlation_flag + LIK = univariate_kalman_filter(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol,data_index,number_of_observations,no_more_missing_observations); + else + LIK = univariate_kalman_filter_corr(T,R,Q,H,Pstar,Y,start,mf,kalman_tol,riccati_tol,data_index,number_of_observations,no_more_missing_observations); + end +end +if (kalman_algo==3)% Multivariate Diffuse Kalman Filter + if no_missing_data_flag + LIK = diffuse_kalman_filter(ST,R1,Q,H,Pinf,Pstar,Y,start,Z,kalman_tol, ... + riccati_tol); + else + LIK = missing_observations_diffuse_kalman_filter(ST,R1,Q,H,Pinf, ... + Pstar,Y,start,Z,kalman_tol,riccati_tol,... + data_index,number_of_observations,... + no_more_missing_observations); + end + if isinf(LIK) + kalman_algo = 4; + end +end +if (kalman_algo==4)% Univariate Diffuse Kalman Filter + no_correlation_flag = 1; + if length(H)==1 & H == 0 + H = zeros(nobs,1); + else + if all(all(abs(H-diag(diag(H)))<1e-14))% ie, the covariance matrix is diagonal... + H = diag(H); + else + no_correlation_flag = 0; + end + end + if no_correlation_flag + LIK = univariate_diffuse_kalman_filter(ST,R1,Q,H,Pinf,Pstar,Y, ... + start,Z,kalman_tol,riccati_tol,data_index,... + number_of_observations,no_more_missing_observations); + else + LIK = univariate_diffuse_kalman_filter_corr(ST,R1,Q,H,Pinf,Pstar, ... + Y,start,Z,kalman_tol,riccati_tol,... + data_index,number_of_observations,... + no_more_missing_observations); + end +end +if isnan(LIK) + cost_flag = 0; + return +end +if imag(LIK)~=0 + likelihood = bayestopt_.penalty; +else + likelihood = LIK; +end +% ------------------------------------------------------------------------------ +% Adds prior if necessary +% ------------------------------------------------------------------------------ +lnprior = priordens(xparam1,bayestopt_.pshape,bayestopt_.p6,bayestopt_.p7,bayestopt_.p3,bayestopt_.p4); +fval = (likelihood-lnprior); +likelihood +lnprior +fval +pause +LIKDLL=logposterior(xparam1,Y,mexext) +pause +options_.kalman_algo = kalman_algo; diff --git a/mex/sources/estimation/tests/logposterior_dll_test/rawdata_euromodel_1.m b/mex/sources/estimation/tests/logposterior_dll_test/rawdata_euromodel_1.m index cde44abc9..25bbc9241 100644 --- a/mex/sources/estimation/tests/logposterior_dll_test/rawdata_euromodel_1.m +++ b/mex/sources/estimation/tests/logposterior_dll_test/rawdata_euromodel_1.m @@ -1,967 +1,967 @@ -C =[ - -7.4073 - -6.1860 - -6.5983 - -5.6088 - -5.0547 - -4.4774 - -3.8081 - -3.8425 - -2.4178 - -1.9835 - -1.0395 - -0.1583 - -0.0397 - 0.3505 - -0.1879 - -0.0067 - 0.0478 - -1.2247 - -1.4349 - -0.7973 - -0.0461 - 0.5844 - 1.1372 - 1.3801 - 1.8023 - 2.2972 - 2.0469 - 2.5435 - 2.8169 - 3.2007 - 2.6705 - 3.0518 - 3.2445 - 3.8443 - 3.8525 - 4.9494 - 4.2770 - 4.9532 - 5.1441 - 3.7124 - 3.9880 - 3.6926 - 2.6005 - 1.8679 - 1.9085 - 1.5563 - 1.2308 - 0.3264 - -0.2208 - -0.2483 - -0.4082 - -1.0315 - -1.6030 - -1.5499 - -1.3777 - -2.1675 - -2.5138 - -2.8820 - -2.6958 - -2.4719 - -1.9854 - -1.7954 - -2.2362 - -1.0595 - -0.8808 - -0.8548 - -1.2839 - -0.1363 - 0.2104 - 0.8810 - 0.3555 - 0.4766 - 1.3269 - 1.4506 - 1.4308 - 1.6263 - 1.9842 - 2.3948 - 2.8710 - 3.0177 - 2.9305 - 3.1739 - 3.7380 - 3.8285 - 3.3342 - 3.7447 - 3.7830 - 3.1039 - 2.8413 - 3.0338 - 0.3669 - 0.0847 - 0.0104 - 0.2115 - -0.6649 - -0.9625 - -0.7330 - -0.8664 - -1.4441 - -1.0179 - -1.2729 - -1.9539 - -1.4427 - -2.0371 - -1.9764 - -2.5654 - -2.8570 - -2.5842 - -3.0427 - -2.8312 - -2.3320 - -2.2768 - -2.1816 - -2.1043 - -1.8969 - -2.2388 - -2.1679 - -2.1172 -]; - -E =[ - 0.6263 - 0.7368 - 0.7477 - 1.0150 - 0.6934 - 0.4135 - 0.3845 - 0.2380 - 0.2853 - 0.5999 - 0.8622 - 1.2116 - 1.4921 - 1.5816 - 1.7259 - 1.6276 - 1.2422 - 0.8084 - 0.4710 - -0.3704 - -0.6427 - -0.5323 - -0.5562 - -0.3651 - -0.4356 - -0.7164 - -0.5816 - -0.4635 - -0.8456 - -0.9708 - -0.7138 - -0.7499 - -0.6941 - -0.6656 - -0.2912 - -0.1650 - 0.0774 - 0.2307 - 0.4484 - 0.4942 - 0.4653 - 0.2196 - 0.1736 - -0.1595 - -0.3918 - -0.4611 - -0.8493 - -0.7384 - -1.0604 - -1.2166 - -1.7187 - -1.6932 - -1.7830 - -1.7035 - -2.2079 - -2.3769 - -2.2511 - -2.1093 - -2.4638 - -2.4027 - -2.1313 - -1.9199 - -1.7941 - -1.4661 - -1.2269 - -1.0392 - -1.0725 - -0.7156 - -0.4778 - -0.4233 - -0.0409 - 0.1620 - 0.4280 - 0.5873 - 1.0323 - 1.3420 - 1.6902 - 2.0680 - 2.8219 - 3.2511 - 3.2930 - 3.5633 - 3.8992 - 3.6874 - 3.2849 - 3.1614 - 2.6221 - 2.5067 - 1.9223 - 1.1777 - 0.4483 - -0.0661 - -0.4424 - -0.9000 - -1.1478 - -1.2047 - -1.1412 - -1.2383 - -1.1048 - -0.9716 - -0.9287 - -1.0057 - -1.0827 - -1.0200 - -1.0072 - -1.1740 - -1.2809 - -1.1086 - -0.9866 - -0.8947 - -0.5875 - -0.2329 - 0.1493 - 0.4906 - 0.8400 - 1.0720 - 1.2648 - 1.5431 -]; - -I =[ - 2.6617 - 2.4325 - 1.9592 - 3.2530 - 2.9949 - 3.7918 - 4.7444 - 4.8289 - 5.5983 - 7.8923 - 9.4297 - 9.5010 - 10.0150 - 10.0413 - 9.6046 - 6.4766 - 5.9647 - 3.0114 - 0.5683 - -2.1226 - -2.1855 - -0.8329 - -1.5207 - -1.3419 - -1.7897 - -0.1476 - 0.4675 - -1.6516 - -1.5419 - -1.3050 - -1.2451 - -0.7815 - -0.7796 - -0.3612 - -2.4072 - 1.1162 - 1.1383 - 3.4132 - 5.0356 - 2.8016 - 2.1734 - 0.9366 - -0.7050 - -1.5021 - -2.9868 - -6.0237 - -6.2589 - -6.9138 - -8.2340 - -9.2589 - -9.2465 - -9.6988 - -9.7782 - -10.5645 - -10.7544 - -13.1583 - -12.2718 - -12.0131 - -13.5983 - -12.3579 - -10.9146 - -11.1572 - -12.4935 - -9.4393 - -8.5535 - -7.3723 - -10.0169 - -6.6088 - -5.2045 - -4.1024 - -2.8472 - -1.3139 - 0.0477 - 1.5629 - 3.6947 - 4.0327 - 4.1320 - 7.1400 - 9.1036 - 8.5609 - 7.6576 - 8.8022 - 8.9611 - 10.0871 - 9.4797 - 9.3964 - 10.0363 - 8.6340 - 6.6522 - 4.4471 - 0.2854 - -2.1879 - -2.9879 - -4.1021 - -2.7713 - -2.2281 - -1.2908 - -0.3250 - 0.6534 - 0.3942 - 0.3534 - -0.1532 - -1.7936 - 0.4909 - 0.3634 - 0.4290 - -0.9709 - 0.1942 - 0.6103 - 1.4426 - 2.7225 - 1.7525 - 3.2780 - 3.5985 - 4.9011 - 5.3312 - 6.4402 - 6.6529 -]; - -L =[ - 0.6263 - 0.7368 - 0.7477 - 1.0150 - 0.6934 - 0.4135 - 0.3845 - 0.2380 - 0.2853 - 0.5999 - 0.8622 - 1.2116 - 1.4921 - 1.5816 - 1.7259 - 1.6276 - 1.2422 - 0.8084 - 0.4710 - -0.3704 - -0.6427 - -0.5323 - -0.5562 - -0.3651 - -0.4356 - -0.7164 - -0.5816 - -0.4635 - -0.8456 - -0.9708 - -0.7138 - -0.7499 - -0.6941 - -0.6656 - -0.2912 - -0.1650 - 0.0774 - 0.2307 - 0.4484 - 0.4942 - 0.4653 - 0.2196 - 0.1736 - -0.1595 - -0.3918 - -0.4611 - -0.8493 - -0.7384 - -1.0604 - -1.2166 - -1.7187 - -1.6932 - -1.7830 - -1.7035 - -2.2079 - -2.3769 - -2.2511 - -2.1093 - -2.4638 - -2.4027 - -2.1313 - -1.9199 - -1.7941 - -1.4661 - -1.2269 - -1.0392 - -1.0725 - -0.7156 - -0.4778 - -0.4233 - -0.0409 - 0.1620 - 0.4280 - 0.5873 - 1.0323 - 1.3420 - 1.6902 - 2.0680 - 2.8219 - 3.2511 - 3.2930 - 3.5633 - 3.8992 - 3.6874 - 3.2849 - 3.1614 - 2.6221 - 2.5067 - 1.9223 - 1.1777 - 0.4483 - -0.0661 - -0.4424 - -0.9000 - -1.1478 - -1.2047 - -1.1412 - -1.2383 - -1.1048 - -0.9716 - -0.9287 - -1.0057 - -1.0827 - -1.0200 - -1.0072 - -1.1740 - -1.2809 - -1.1086 - -0.9866 - -0.8947 - -0.5875 - -0.2329 - 0.1493 - 0.4906 - 0.8400 - 1.0720 - 1.2648 - 1.5431 -]; - -PIE =[ - -1.0113 - -0.8305 - 0.2332 - -0.8746 - -0.7978 - -0.9220 - -0.2487 - -0.7749 - -0.5460 - -0.5347 - 0.5050 - -0.0334 - 0.6756 - 0.8791 - 0.7267 - 1.0997 - 1.1750 - 1.1927 - 0.4420 - 0.5357 - 0.0345 - 0.0196 - 0.3371 - 0.9379 - 1.2160 - 0.3393 - 0.5813 - 0.7410 - 0.3374 - 0.2616 - 0.4025 - 0.4799 - 0.5981 - -0.1523 - 0.4458 - 0.2182 - 0.9793 - 0.7562 - 1.0064 - 0.8203 - 0.6966 - 0.3352 - 0.6581 - 0.6111 - 0.9833 - 1.1991 - 0.9562 - 0.3868 - 0.2939 - 0.2471 - 0.8331 - 0.0715 - 0.3910 - 0.3301 - 0.2547 - -0.2702 - -0.2998 - -0.1953 - -0.2293 - -0.3284 - 0.0480 - -0.0374 - 0.3253 - -0.3434 - -0.3892 - -0.7178 - -0.4758 - -0.6794 - -0.8505 - -0.3512 - -0.4436 - -0.5101 - -0.4574 - -0.2696 - -0.1047 - -0.5745 - -0.2989 - -0.0063 - 0.0088 - -0.1184 - -0.1506 - -0.4073 - 0.2674 - 0.2896 - 0.0669 - 0.1166 - -0.1699 - -0.2518 - -0.0562 - -0.3269 - -0.0703 - -0.1046 - -0.4888 - -0.3524 - -0.2485 - -0.5870 - -0.4546 - -0.3970 - -0.2353 - -0.0352 - -0.2171 - -0.3754 - -0.4322 - -0.4572 - -0.4903 - -0.4518 - -0.6435 - -0.6304 - -0.4148 - -0.2892 - -0.4318 - -0.6010 - -0.4148 - -0.4315 - -0.3531 - -0.8053 - -0.4680 - -0.4263 -]; - -R =[ - -1.0750 - -1.1540 - -1.3682 - -1.4569 - -1.3490 - -1.4011 - -1.6486 - -1.6968 - -1.6976 - -1.2567 - -1.1392 - -0.7783 - -0.3021 - -0.0435 - 0.0066 - -0.0043 - 0.1029 - -0.0628 - -0.5358 - -0.9627 - -1.1079 - -1.0918 - -0.9966 - -0.6223 - -0.3616 - -0.2711 - -0.0997 - -0.2810 - -0.3710 - -0.3167 - -0.5301 - -0.5826 - -0.3194 - -0.2713 - -0.5287 - -0.2432 - 0.1098 - 0.5349 - 0.7094 - 0.8415 - 0.6226 - 0.7376 - 0.9316 - 1.4370 - 1.5853 - 1.4267 - 1.1783 - 1.2046 - 0.9689 - 0.7918 - 0.6315 - 0.5950 - 0.6853 - 0.7171 - 0.5887 - 0.4873 - 0.4027 - 0.3489 - 0.2934 - 0.3060 - 0.1741 - 0.0348 - 0.0771 - -0.1005 - -0.1518 - -0.1104 - -0.0681 - -0.0059 - 0.0256 - 0.0404 - -0.1721 - -0.2002 - 0.0015 - 0.1249 - 0.3738 - 0.4320 - 0.5579 - 0.8186 - 0.8727 - 0.7356 - 0.7243 - 0.8635 - 0.9058 - 0.7656 - 0.7936 - 0.8631 - 0.9074 - 0.9547 - 1.2045 - 1.0850 - 0.9178 - 0.5242 - 0.3178 - 0.1472 - 0.0227 - -0.0799 - -0.0611 - -0.0140 - 0.1132 - 0.1774 - 0.0782 - 0.0436 - -0.1596 - -0.2691 - -0.2895 - -0.3791 - -0.4020 - -0.4166 - -0.4037 - -0.3636 - -0.4075 - -0.4311 - -0.4470 - -0.5111 - -0.6274 - -0.7261 - -0.6974 - -0.5012 -]; - -W =[ - -14.8791 - -13.2300 - -13.5037 - -13.0249 - -11.2546 - -10.0148 - -8.8586 - -8.5739 - -7.7851 - -6.7136 - -5.5878 - -4.6881 - -3.8039 - -3.0366 - -2.7342 - -1.3135 - -0.7387 - -0.1131 - -0.2769 - 0.8696 - 1.8855 - 2.3667 - 2.4942 - 3.2049 - 3.9682 - 5.1500 - 4.7047 - 4.7827 - 5.3377 - 5.6614 - 5.2813 - 5.2967 - 5.5175 - 6.1526 - 5.6627 - 6.0694 - 6.5824 - 6.9032 - 6.7849 - 6.6896 - 6.6201 - 6.9933 - 5.8959 - 6.7419 - 6.9999 - 6.4009 - 5.5083 - 5.1054 - 5.2813 - 4.5790 - 3.9589 - 3.8599 - 3.8978 - 2.7957 - 3.2480 - 1.4634 - 1.9219 - 1.8398 - 1.9279 - 1.8316 - 1.6092 - 1.2741 - 0.2031 - -0.0236 - -0.1004 - -0.3034 - -1.0273 - -0.2205 - 0.0458 - 0.2386 - -0.0977 - -0.3145 - -0.1416 - -0.7009 - -0.9082 - -0.8802 - -0.5644 - -0.5852 - -0.5346 - 0.0652 - 0.1301 - 0.3444 - -0.3592 - 0.8096 - 0.9644 - 1.0289 - 1.2781 - 1.2298 - 2.2134 - 2.0808 - 0.4925 - 0.6506 - 0.5531 - 0.2456 - -0.5351 - -0.8183 - -0.8967 - -0.7268 - -1.0738 - -1.2844 - -1.4338 - -1.6995 - -1.7085 - -2.2889 - -2.1018 - -2.4273 - -2.4609 - -2.1407 - -2.3847 - -3.1689 - -4.5581 - -4.1027 - -4.2436 - -4.8836 - -5.9660 - -4.9971 - -5.2386 - -5.6618 -]; - -Y =[ - -4.9347 - -4.6205 - -5.2198 - -4.5937 - -3.8015 - -3.6643 - -2.7239 - -2.7524 - -2.0634 - -1.0112 - 0.0530 - 0.7623 - 1.7927 - 2.1486 - 2.4866 - 2.1456 - 2.1671 - -0.0254 - -1.6716 - -1.9673 - -1.6109 - -1.0292 - -0.1222 - 0.7329 - 1.1234 - 2.0603 - 1.7998 - 1.4820 - 1.1732 - 1.6424 - 1.5382 - 2.1399 - 2.0127 - 2.7210 - 2.4966 - 3.5249 - 3.6237 - 4.2011 - 4.5634 - 3.3442 - 2.7761 - 1.9812 - 1.3779 - 1.4616 - 1.3029 - 0.7594 - 0.3695 - 0.0832 - -0.8118 - -1.4557 - -1.4850 - -1.2346 - -1.5696 - -1.3785 - -0.7682 - -2.0308 - -1.7778 - -1.7801 - -2.1711 - -1.7469 - -1.3413 - -1.3352 - -2.4390 - -1.2125 - -1.1695 - -1.0891 - -2.4753 - -1.3503 - -0.9412 - -0.1470 - 0.0026 - 0.1108 - 0.6890 - 1.3520 - 1.6018 - 2.0667 - 1.7625 - 2.6658 - 3.4048 - 3.2507 - 3.4251 - 3.2174 - 3.1903 - 3.3396 - 3.1358 - 2.8625 - 3.3546 - 2.4609 - 1.9534 - 0.9962 - -0.7904 - -1.1672 - -1.2586 - -1.3593 - -1.3443 - -0.9413 - -0.6023 - -0.4516 - -0.5129 - -0.8741 - -1.0784 - -1.4091 - -1.3627 - -1.5731 - -1.6037 - -1.8814 - -2.1482 - -1.3597 - -1.1855 - -1.1122 - -0.8424 - -0.9747 - -1.1385 - -1.4548 - -1.4284 - -1.4633 - -1.0621 - -0.7871 -]; +C =[ + -7.4073 + -6.1860 + -6.5983 + -5.6088 + -5.0547 + -4.4774 + -3.8081 + -3.8425 + -2.4178 + -1.9835 + -1.0395 + -0.1583 + -0.0397 + 0.3505 + -0.1879 + -0.0067 + 0.0478 + -1.2247 + -1.4349 + -0.7973 + -0.0461 + 0.5844 + 1.1372 + 1.3801 + 1.8023 + 2.2972 + 2.0469 + 2.5435 + 2.8169 + 3.2007 + 2.6705 + 3.0518 + 3.2445 + 3.8443 + 3.8525 + 4.9494 + 4.2770 + 4.9532 + 5.1441 + 3.7124 + 3.9880 + 3.6926 + 2.6005 + 1.8679 + 1.9085 + 1.5563 + 1.2308 + 0.3264 + -0.2208 + -0.2483 + -0.4082 + -1.0315 + -1.6030 + -1.5499 + -1.3777 + -2.1675 + -2.5138 + -2.8820 + -2.6958 + -2.4719 + -1.9854 + -1.7954 + -2.2362 + -1.0595 + -0.8808 + -0.8548 + -1.2839 + -0.1363 + 0.2104 + 0.8810 + 0.3555 + 0.4766 + 1.3269 + 1.4506 + 1.4308 + 1.6263 + 1.9842 + 2.3948 + 2.8710 + 3.0177 + 2.9305 + 3.1739 + 3.7380 + 3.8285 + 3.3342 + 3.7447 + 3.7830 + 3.1039 + 2.8413 + 3.0338 + 0.3669 + 0.0847 + 0.0104 + 0.2115 + -0.6649 + -0.9625 + -0.7330 + -0.8664 + -1.4441 + -1.0179 + -1.2729 + -1.9539 + -1.4427 + -2.0371 + -1.9764 + -2.5654 + -2.8570 + -2.5842 + -3.0427 + -2.8312 + -2.3320 + -2.2768 + -2.1816 + -2.1043 + -1.8969 + -2.2388 + -2.1679 + -2.1172 +]; + +E =[ + 0.6263 + 0.7368 + 0.7477 + 1.0150 + 0.6934 + 0.4135 + 0.3845 + 0.2380 + 0.2853 + 0.5999 + 0.8622 + 1.2116 + 1.4921 + 1.5816 + 1.7259 + 1.6276 + 1.2422 + 0.8084 + 0.4710 + -0.3704 + -0.6427 + -0.5323 + -0.5562 + -0.3651 + -0.4356 + -0.7164 + -0.5816 + -0.4635 + -0.8456 + -0.9708 + -0.7138 + -0.7499 + -0.6941 + -0.6656 + -0.2912 + -0.1650 + 0.0774 + 0.2307 + 0.4484 + 0.4942 + 0.4653 + 0.2196 + 0.1736 + -0.1595 + -0.3918 + -0.4611 + -0.8493 + -0.7384 + -1.0604 + -1.2166 + -1.7187 + -1.6932 + -1.7830 + -1.7035 + -2.2079 + -2.3769 + -2.2511 + -2.1093 + -2.4638 + -2.4027 + -2.1313 + -1.9199 + -1.7941 + -1.4661 + -1.2269 + -1.0392 + -1.0725 + -0.7156 + -0.4778 + -0.4233 + -0.0409 + 0.1620 + 0.4280 + 0.5873 + 1.0323 + 1.3420 + 1.6902 + 2.0680 + 2.8219 + 3.2511 + 3.2930 + 3.5633 + 3.8992 + 3.6874 + 3.2849 + 3.1614 + 2.6221 + 2.5067 + 1.9223 + 1.1777 + 0.4483 + -0.0661 + -0.4424 + -0.9000 + -1.1478 + -1.2047 + -1.1412 + -1.2383 + -1.1048 + -0.9716 + -0.9287 + -1.0057 + -1.0827 + -1.0200 + -1.0072 + -1.1740 + -1.2809 + -1.1086 + -0.9866 + -0.8947 + -0.5875 + -0.2329 + 0.1493 + 0.4906 + 0.8400 + 1.0720 + 1.2648 + 1.5431 +]; + +I =[ + 2.6617 + 2.4325 + 1.9592 + 3.2530 + 2.9949 + 3.7918 + 4.7444 + 4.8289 + 5.5983 + 7.8923 + 9.4297 + 9.5010 + 10.0150 + 10.0413 + 9.6046 + 6.4766 + 5.9647 + 3.0114 + 0.5683 + -2.1226 + -2.1855 + -0.8329 + -1.5207 + -1.3419 + -1.7897 + -0.1476 + 0.4675 + -1.6516 + -1.5419 + -1.3050 + -1.2451 + -0.7815 + -0.7796 + -0.3612 + -2.4072 + 1.1162 + 1.1383 + 3.4132 + 5.0356 + 2.8016 + 2.1734 + 0.9366 + -0.7050 + -1.5021 + -2.9868 + -6.0237 + -6.2589 + -6.9138 + -8.2340 + -9.2589 + -9.2465 + -9.6988 + -9.7782 + -10.5645 + -10.7544 + -13.1583 + -12.2718 + -12.0131 + -13.5983 + -12.3579 + -10.9146 + -11.1572 + -12.4935 + -9.4393 + -8.5535 + -7.3723 + -10.0169 + -6.6088 + -5.2045 + -4.1024 + -2.8472 + -1.3139 + 0.0477 + 1.5629 + 3.6947 + 4.0327 + 4.1320 + 7.1400 + 9.1036 + 8.5609 + 7.6576 + 8.8022 + 8.9611 + 10.0871 + 9.4797 + 9.3964 + 10.0363 + 8.6340 + 6.6522 + 4.4471 + 0.2854 + -2.1879 + -2.9879 + -4.1021 + -2.7713 + -2.2281 + -1.2908 + -0.3250 + 0.6534 + 0.3942 + 0.3534 + -0.1532 + -1.7936 + 0.4909 + 0.3634 + 0.4290 + -0.9709 + 0.1942 + 0.6103 + 1.4426 + 2.7225 + 1.7525 + 3.2780 + 3.5985 + 4.9011 + 5.3312 + 6.4402 + 6.6529 +]; + +L =[ + 0.6263 + 0.7368 + 0.7477 + 1.0150 + 0.6934 + 0.4135 + 0.3845 + 0.2380 + 0.2853 + 0.5999 + 0.8622 + 1.2116 + 1.4921 + 1.5816 + 1.7259 + 1.6276 + 1.2422 + 0.8084 + 0.4710 + -0.3704 + -0.6427 + -0.5323 + -0.5562 + -0.3651 + -0.4356 + -0.7164 + -0.5816 + -0.4635 + -0.8456 + -0.9708 + -0.7138 + -0.7499 + -0.6941 + -0.6656 + -0.2912 + -0.1650 + 0.0774 + 0.2307 + 0.4484 + 0.4942 + 0.4653 + 0.2196 + 0.1736 + -0.1595 + -0.3918 + -0.4611 + -0.8493 + -0.7384 + -1.0604 + -1.2166 + -1.7187 + -1.6932 + -1.7830 + -1.7035 + -2.2079 + -2.3769 + -2.2511 + -2.1093 + -2.4638 + -2.4027 + -2.1313 + -1.9199 + -1.7941 + -1.4661 + -1.2269 + -1.0392 + -1.0725 + -0.7156 + -0.4778 + -0.4233 + -0.0409 + 0.1620 + 0.4280 + 0.5873 + 1.0323 + 1.3420 + 1.6902 + 2.0680 + 2.8219 + 3.2511 + 3.2930 + 3.5633 + 3.8992 + 3.6874 + 3.2849 + 3.1614 + 2.6221 + 2.5067 + 1.9223 + 1.1777 + 0.4483 + -0.0661 + -0.4424 + -0.9000 + -1.1478 + -1.2047 + -1.1412 + -1.2383 + -1.1048 + -0.9716 + -0.9287 + -1.0057 + -1.0827 + -1.0200 + -1.0072 + -1.1740 + -1.2809 + -1.1086 + -0.9866 + -0.8947 + -0.5875 + -0.2329 + 0.1493 + 0.4906 + 0.8400 + 1.0720 + 1.2648 + 1.5431 +]; + +PIE =[ + -1.0113 + -0.8305 + 0.2332 + -0.8746 + -0.7978 + -0.9220 + -0.2487 + -0.7749 + -0.5460 + -0.5347 + 0.5050 + -0.0334 + 0.6756 + 0.8791 + 0.7267 + 1.0997 + 1.1750 + 1.1927 + 0.4420 + 0.5357 + 0.0345 + 0.0196 + 0.3371 + 0.9379 + 1.2160 + 0.3393 + 0.5813 + 0.7410 + 0.3374 + 0.2616 + 0.4025 + 0.4799 + 0.5981 + -0.1523 + 0.4458 + 0.2182 + 0.9793 + 0.7562 + 1.0064 + 0.8203 + 0.6966 + 0.3352 + 0.6581 + 0.6111 + 0.9833 + 1.1991 + 0.9562 + 0.3868 + 0.2939 + 0.2471 + 0.8331 + 0.0715 + 0.3910 + 0.3301 + 0.2547 + -0.2702 + -0.2998 + -0.1953 + -0.2293 + -0.3284 + 0.0480 + -0.0374 + 0.3253 + -0.3434 + -0.3892 + -0.7178 + -0.4758 + -0.6794 + -0.8505 + -0.3512 + -0.4436 + -0.5101 + -0.4574 + -0.2696 + -0.1047 + -0.5745 + -0.2989 + -0.0063 + 0.0088 + -0.1184 + -0.1506 + -0.4073 + 0.2674 + 0.2896 + 0.0669 + 0.1166 + -0.1699 + -0.2518 + -0.0562 + -0.3269 + -0.0703 + -0.1046 + -0.4888 + -0.3524 + -0.2485 + -0.5870 + -0.4546 + -0.3970 + -0.2353 + -0.0352 + -0.2171 + -0.3754 + -0.4322 + -0.4572 + -0.4903 + -0.4518 + -0.6435 + -0.6304 + -0.4148 + -0.2892 + -0.4318 + -0.6010 + -0.4148 + -0.4315 + -0.3531 + -0.8053 + -0.4680 + -0.4263 +]; + +R =[ + -1.0750 + -1.1540 + -1.3682 + -1.4569 + -1.3490 + -1.4011 + -1.6486 + -1.6968 + -1.6976 + -1.2567 + -1.1392 + -0.7783 + -0.3021 + -0.0435 + 0.0066 + -0.0043 + 0.1029 + -0.0628 + -0.5358 + -0.9627 + -1.1079 + -1.0918 + -0.9966 + -0.6223 + -0.3616 + -0.2711 + -0.0997 + -0.2810 + -0.3710 + -0.3167 + -0.5301 + -0.5826 + -0.3194 + -0.2713 + -0.5287 + -0.2432 + 0.1098 + 0.5349 + 0.7094 + 0.8415 + 0.6226 + 0.7376 + 0.9316 + 1.4370 + 1.5853 + 1.4267 + 1.1783 + 1.2046 + 0.9689 + 0.7918 + 0.6315 + 0.5950 + 0.6853 + 0.7171 + 0.5887 + 0.4873 + 0.4027 + 0.3489 + 0.2934 + 0.3060 + 0.1741 + 0.0348 + 0.0771 + -0.1005 + -0.1518 + -0.1104 + -0.0681 + -0.0059 + 0.0256 + 0.0404 + -0.1721 + -0.2002 + 0.0015 + 0.1249 + 0.3738 + 0.4320 + 0.5579 + 0.8186 + 0.8727 + 0.7356 + 0.7243 + 0.8635 + 0.9058 + 0.7656 + 0.7936 + 0.8631 + 0.9074 + 0.9547 + 1.2045 + 1.0850 + 0.9178 + 0.5242 + 0.3178 + 0.1472 + 0.0227 + -0.0799 + -0.0611 + -0.0140 + 0.1132 + 0.1774 + 0.0782 + 0.0436 + -0.1596 + -0.2691 + -0.2895 + -0.3791 + -0.4020 + -0.4166 + -0.4037 + -0.3636 + -0.4075 + -0.4311 + -0.4470 + -0.5111 + -0.6274 + -0.7261 + -0.6974 + -0.5012 +]; + +W =[ + -14.8791 + -13.2300 + -13.5037 + -13.0249 + -11.2546 + -10.0148 + -8.8586 + -8.5739 + -7.7851 + -6.7136 + -5.5878 + -4.6881 + -3.8039 + -3.0366 + -2.7342 + -1.3135 + -0.7387 + -0.1131 + -0.2769 + 0.8696 + 1.8855 + 2.3667 + 2.4942 + 3.2049 + 3.9682 + 5.1500 + 4.7047 + 4.7827 + 5.3377 + 5.6614 + 5.2813 + 5.2967 + 5.5175 + 6.1526 + 5.6627 + 6.0694 + 6.5824 + 6.9032 + 6.7849 + 6.6896 + 6.6201 + 6.9933 + 5.8959 + 6.7419 + 6.9999 + 6.4009 + 5.5083 + 5.1054 + 5.2813 + 4.5790 + 3.9589 + 3.8599 + 3.8978 + 2.7957 + 3.2480 + 1.4634 + 1.9219 + 1.8398 + 1.9279 + 1.8316 + 1.6092 + 1.2741 + 0.2031 + -0.0236 + -0.1004 + -0.3034 + -1.0273 + -0.2205 + 0.0458 + 0.2386 + -0.0977 + -0.3145 + -0.1416 + -0.7009 + -0.9082 + -0.8802 + -0.5644 + -0.5852 + -0.5346 + 0.0652 + 0.1301 + 0.3444 + -0.3592 + 0.8096 + 0.9644 + 1.0289 + 1.2781 + 1.2298 + 2.2134 + 2.0808 + 0.4925 + 0.6506 + 0.5531 + 0.2456 + -0.5351 + -0.8183 + -0.8967 + -0.7268 + -1.0738 + -1.2844 + -1.4338 + -1.6995 + -1.7085 + -2.2889 + -2.1018 + -2.4273 + -2.4609 + -2.1407 + -2.3847 + -3.1689 + -4.5581 + -4.1027 + -4.2436 + -4.8836 + -5.9660 + -4.9971 + -5.2386 + -5.6618 +]; + +Y =[ + -4.9347 + -4.6205 + -5.2198 + -4.5937 + -3.8015 + -3.6643 + -2.7239 + -2.7524 + -2.0634 + -1.0112 + 0.0530 + 0.7623 + 1.7927 + 2.1486 + 2.4866 + 2.1456 + 2.1671 + -0.0254 + -1.6716 + -1.9673 + -1.6109 + -1.0292 + -0.1222 + 0.7329 + 1.1234 + 2.0603 + 1.7998 + 1.4820 + 1.1732 + 1.6424 + 1.5382 + 2.1399 + 2.0127 + 2.7210 + 2.4966 + 3.5249 + 3.6237 + 4.2011 + 4.5634 + 3.3442 + 2.7761 + 1.9812 + 1.3779 + 1.4616 + 1.3029 + 0.7594 + 0.3695 + 0.0832 + -0.8118 + -1.4557 + -1.4850 + -1.2346 + -1.5696 + -1.3785 + -0.7682 + -2.0308 + -1.7778 + -1.7801 + -2.1711 + -1.7469 + -1.3413 + -1.3352 + -2.4390 + -1.2125 + -1.1695 + -1.0891 + -2.4753 + -1.3503 + -0.9412 + -0.1470 + 0.0026 + 0.1108 + 0.6890 + 1.3520 + 1.6018 + 2.0667 + 1.7625 + 2.6658 + 3.4048 + 3.2507 + 3.4251 + 3.2174 + 3.1903 + 3.3396 + 3.1358 + 2.8625 + 3.3546 + 2.4609 + 1.9534 + 0.9962 + -0.7904 + -1.1672 + -1.2586 + -1.3593 + -1.3443 + -0.9413 + -0.6023 + -0.4516 + -0.5129 + -0.8741 + -1.0784 + -1.4091 + -1.3627 + -1.5731 + -1.6037 + -1.8814 + -2.1482 + -1.3597 + -1.1855 + -1.1122 + -0.8424 + -0.9747 + -1.1385 + -1.4548 + -1.4284 + -1.4633 + -1.0621 + -0.7871 +]; diff --git a/mex/sources/estimation/tests/logposterior_dll_test/sweuromodel_dll.mod b/mex/sources/estimation/tests/logposterior_dll_test/sweuromodel_dll.mod index 999485ee8..a6a19f55b 100644 --- a/mex/sources/estimation/tests/logposterior_dll_test/sweuromodel_dll.mod +++ b/mex/sources/estimation/tests/logposterior_dll_test/sweuromodel_dll.mod @@ -1,184 +1,184 @@ -//options_.usePartInfo=1; - -var MC E EF R_KF QF CF IF YF LF PIEF WF RF R_K Q C I Y L PIE W R EE_A PIE_BAR EE_B EE_G EE_L EE_I KF K one BIGTHETA; - -varexo E_A E_B E_G E_L E_I ETA_R E_PIE_BAR ETA_Q ETA_P ETA_W ; - -parameters -xi_e lambda_w alpha czcap beta phi_i tau sig_c hab ccs cinvs phi_y gamma_w xi_w gamma_p xi_p sig_l r_dpi -r_pie r_dy r_y rho rho_a rho_pb rho_b rho_g rho_l rho_i LMP ; - - - -alpha=.30; -beta=.99; -tau=0.025; -ccs=0.6; -cinvs=.22; //% alpha*(tau+ctrend)/R_K R_K=ctrend/beta-1+tau -lambda_w = 0.5; -phi_i= 6.771; -sig_c= 1.353; -hab= 0.573; -xi_w= 0.737; -sig_l= 2.400; -xi_p= 0.908; -xi_e= 0.599; -gamma_w= 0.763; -gamma_p= 0.469; -czcap= 0.169; -phi_y= 1.408; -r_pie= 1.684; -r_dpi= 0.14; -rho= 0.961; -r_y= 0.099; -r_dy= 0.159; -rho_a= 0.823; -rho_b= 0.855; -rho_g= 0.949; -rho_l= 0.889; -rho_i= 0.927; -rho_pb= 0.924; -LMP = 0.0 ; //NEW. - -model(linear, use_dll); - CF = (1/(1+hab))*(CF(1)+hab*CF(-1))-((1-hab)/((1+hab)*sig_c))*(RF-PIEF(1)-EE_B) ; - 0 = alpha*R_KF+(1-alpha)*WF -EE_A ; - PIEF = 0*one; - IF = (1/(1+beta))* (( IF(-1) + beta*(IF(1)))+(1/phi_i)*QF)+0*ETA_Q+EE_I ; - QF = -(RF-PIEF(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_KF(1)+beta*(1-tau)*QF(1) +0*EE_I ; - KF = (1-tau)*KF(-1)+tau*IF(-1) ; - YF = (ccs*CF+cinvs*IF)+EE_G ; - - YF = 1*phi_y*( alpha*KF+alpha*(1/czcap)*R_KF+(1-alpha)*LF+EE_A ) ; - WF = (sig_c/(1-hab))*(CF-hab*CF(-1)) + sig_l*LF - EE_L ; - LF = R_KF*((1+czcap)/czcap)-WF+KF ; - EF = EF(-1)+EF(1)-EF+(LF-EF)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); - - C = (hab/(1+hab))*C(-1)+(1/(1+hab))*C(1)-((1-hab)/((1+hab)*sig_c))*(R-PIE(1)-EE_B) ; - I = (1/(1+beta))* (( I(-1) + beta*(I(1)))+(1/phi_i)*Q )+1*ETA_Q+1*EE_I ; - Q = -(R-PIE(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_K(1)+beta*(1-tau)*Q(1) +EE_I*0+0*ETA_Q ; - K = (1-tau)*K(-1)+tau*I(-1) ; - Y = (ccs*C+cinvs*I)+ EE_G ; - Y = phi_y*( alpha*K+alpha*(1/czcap)*R_K+(1-alpha)*L ) +phi_y*EE_A ; - PIE = (1/(1+beta*gamma_p))* - ( - (beta)*(PIE(1)) +(gamma_p)*(PIE(-1)) - +((1-xi_p)*(1-beta*xi_p)/(xi_p))*(MC) - ) + ETA_P ; - - MC = alpha*R_K+(1-alpha)*W -EE_A; - W = (1/(1+beta))*(beta*W(+1)+W(-1)) - +(beta/(1+beta))*(PIE(+1)) - -((1+beta*gamma_w)/(1+beta))*(PIE) - +(gamma_w/(1+beta))*(PIE(-1)) - -(1/(1+beta))*(((1-beta*xi_w)*(1-xi_w))/(((1+(((1+lambda_w)*sig_l)/(lambda_w))))*xi_w))*(W-sig_l*L-(sig_c/(1-hab))*(C-hab*C(-1))+EE_L) - +ETA_W; - L = R_K*((1+czcap)/czcap)-W+K ; - -// R = r_dpi*(PIE-PIE(-1)) -// +(1-rho)*(r_pie*(PIE(-1)-PIE_BAR)+r_y*(Y-YF)) -// +r_dy*(Y-YF-(Y(-1)-YF(-1))) -// +rho*(R(-1)-PIE_BAR) -// +PIE_BAR -// +ETA_R; - - - R = - -r_dpi*(PIE-PIE(-1)) - - +(1-rho)*(r_pie*(BIGTHETA)+r_y*(Y-YF)) - +r_dy*(Y-YF-(Y(-1)-YF(-1))) - +rho*(R(-1)-PIE_BAR) - +PIE_BAR - +ETA_R; - - - E = E(-1)+E(1)-E+(L-E)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); - - - EE_A = (rho_a)*EE_A(-1) + E_A; - PIE_BAR = rho_pb*PIE_BAR(-1)+ E_PIE_BAR ; - EE_B = rho_b*EE_B(-1) + E_B ; - EE_G = rho_g*EE_G(-1) + E_G ; - EE_L = rho_l*EE_L(-1) + E_L ; - EE_I = rho_i*EE_I(-1) + E_I ; - one = 0*one(-1) ; - - LMP*BIGTHETA(1) = BIGTHETA - (PIE(-1) - PIE_BAR) ; - -end; - - -shocks; -var E_A; stderr 0.598; -var E_B; stderr 0.336; -var E_G; stderr 0.325; -var E_I; stderr 0.085; -var E_L; stderr 3.520; -var ETA_P; stderr 0.160; -var ETA_W; stderr 0.289; -var ETA_R; stderr 0.081; -var ETA_Q; stderr 0.604; -var E_PIE_BAR; stderr 0.017; -end; - -//stoch_simul(irf=20) Y C PIE R W R_K L Q I K ; - -// stoch_simul generates what kind of standard errors for the shocks ? - -//steady; -//check; -//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE MC R W R_K E L I ; - -//datatomfile('ddd',[]); - -// new syntax - -estimated_params; -// PARAM NAME, INITVAL, LB, UB, PRIOR_SHAPE, PRIOR_P1, PRIOR_P2, PRIOR_P3, PRIOR_P4, JSCALE -// PRIOR_SHAPE: BETA_PDF, GAMMA_PDF, NORMAL_PDF, INV_GAMMA_PDF -stderr E_A,0.543,0.01,4,INV_GAMMA_PDF,0.4,2; -stderr E_PIE_BAR,0.072,0.001,4,INV_GAMMA_PDF,0.02,10; -stderr E_B,0.2694,0.01,4,INV_GAMMA_PDF,0.2,2; -stderr E_G,0.3052,0.01,4,INV_GAMMA_PDF,0.3,2; -stderr E_L,1.4575,0.1,6,INV_GAMMA_PDF,1,2; -stderr E_I,0.1318,0.01,4,INV_GAMMA_PDF,0.1,2; -stderr ETA_R,0.1363,0.01,4,INV_GAMMA_PDF,0.1,2; -stderr ETA_Q,0.4842,0.01,4,INV_GAMMA_PDF,0.4,2; -stderr ETA_P,0.1731,0.01,4,INV_GAMMA_PDF,0.15,2; -stderr ETA_W,0.2462,0.1,4,INV_GAMMA_PDF,0.25,2; -rho_a,.9722,.1,.9999,BETA_PDF,0.85,0.1; -rho_pb,.85,.1,.999,BETA_PDF,0.85,0.1; -rho_b,.7647,.1,.99,BETA_PDF,0.85,0.1; -rho_g,.9502,.1,.9999,BETA_PDF,0.85,0.1; -rho_l,.9542,.1,.9999,BETA_PDF,0.85,0.1; -rho_i,.6705,.1,.99,BETA_PDF,0.85,0.1; -phi_i,5.2083,1,15,NORMAL_PDF,4,1.5; -sig_c,0.9817,0.25,3,NORMAL_PDF,1,0.375; -hab,0.5612,0.3,0.95,BETA_PDF,0.7,0.1; -xi_w,0.7661,0.3,0.9,BETA_PDF,0.75,0.05; -sig_l,1.7526,0.5,5,NORMAL_PDF,2,0.75; -xi_p,0.8684,0.3,0.95,BETA_PDF,0.75,0.05; -xi_e,0.5724,0.1,0.95,BETA_PDF,0.5,0.15; -gamma_w,0.6202,0.1,0.99,BETA_PDF,0.75,0.15; -gamma_p,0.6638,0.1,0.99,BETA_PDF,0.75,0.15; -czcap,0.2516,0.01,2,NORMAL_PDF,0.2,0.075; -phi_y,1.3011,1.001,2,NORMAL_PDF,1.45,0.125; -r_pie,1.4616,1.2,2,NORMAL_PDF,1.7,0.1; -r_dpi,0.1144,0.01,0.5,NORMAL_PDF,0.3,0.1; -rho,0.8865,0.5,0.99,BETA_PDF,0.8,0.10; -r_y,0.0571,0.01,0.2,NORMAL_PDF,0.125,0.05; -r_dy,0.2228,0.05,0.5,NORMAL_PDF,0.0625,0.05; -end; - -varobs Y C I E PIE W R; - -//estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118, lik_init=2, mode_compute=1,mh_replic=0); -estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118,mh_jscale=0.2,mh_replic=1000 -//,mode_compute=0,mode_file=sweuromodel_dll_mode -); - - -//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE R W R_K L Q I K ; - +//options_.usePartInfo=1; + +var MC E EF R_KF QF CF IF YF LF PIEF WF RF R_K Q C I Y L PIE W R EE_A PIE_BAR EE_B EE_G EE_L EE_I KF K one BIGTHETA; + +varexo E_A E_B E_G E_L E_I ETA_R E_PIE_BAR ETA_Q ETA_P ETA_W ; + +parameters +xi_e lambda_w alpha czcap beta phi_i tau sig_c hab ccs cinvs phi_y gamma_w xi_w gamma_p xi_p sig_l r_dpi +r_pie r_dy r_y rho rho_a rho_pb rho_b rho_g rho_l rho_i LMP ; + + + +alpha=.30; +beta=.99; +tau=0.025; +ccs=0.6; +cinvs=.22; //% alpha*(tau+ctrend)/R_K R_K=ctrend/beta-1+tau +lambda_w = 0.5; +phi_i= 6.771; +sig_c= 1.353; +hab= 0.573; +xi_w= 0.737; +sig_l= 2.400; +xi_p= 0.908; +xi_e= 0.599; +gamma_w= 0.763; +gamma_p= 0.469; +czcap= 0.169; +phi_y= 1.408; +r_pie= 1.684; +r_dpi= 0.14; +rho= 0.961; +r_y= 0.099; +r_dy= 0.159; +rho_a= 0.823; +rho_b= 0.855; +rho_g= 0.949; +rho_l= 0.889; +rho_i= 0.927; +rho_pb= 0.924; +LMP = 0.0 ; //NEW. + +model(linear, use_dll); + CF = (1/(1+hab))*(CF(1)+hab*CF(-1))-((1-hab)/((1+hab)*sig_c))*(RF-PIEF(1)-EE_B) ; + 0 = alpha*R_KF+(1-alpha)*WF -EE_A ; + PIEF = 0*one; + IF = (1/(1+beta))* (( IF(-1) + beta*(IF(1)))+(1/phi_i)*QF)+0*ETA_Q+EE_I ; + QF = -(RF-PIEF(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_KF(1)+beta*(1-tau)*QF(1) +0*EE_I ; + KF = (1-tau)*KF(-1)+tau*IF(-1) ; + YF = (ccs*CF+cinvs*IF)+EE_G ; + + YF = 1*phi_y*( alpha*KF+alpha*(1/czcap)*R_KF+(1-alpha)*LF+EE_A ) ; + WF = (sig_c/(1-hab))*(CF-hab*CF(-1)) + sig_l*LF - EE_L ; + LF = R_KF*((1+czcap)/czcap)-WF+KF ; + EF = EF(-1)+EF(1)-EF+(LF-EF)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); + + C = (hab/(1+hab))*C(-1)+(1/(1+hab))*C(1)-((1-hab)/((1+hab)*sig_c))*(R-PIE(1)-EE_B) ; + I = (1/(1+beta))* (( I(-1) + beta*(I(1)))+(1/phi_i)*Q )+1*ETA_Q+1*EE_I ; + Q = -(R-PIE(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_K(1)+beta*(1-tau)*Q(1) +EE_I*0+0*ETA_Q ; + K = (1-tau)*K(-1)+tau*I(-1) ; + Y = (ccs*C+cinvs*I)+ EE_G ; + Y = phi_y*( alpha*K+alpha*(1/czcap)*R_K+(1-alpha)*L ) +phi_y*EE_A ; + PIE = (1/(1+beta*gamma_p))* + ( + (beta)*(PIE(1)) +(gamma_p)*(PIE(-1)) + +((1-xi_p)*(1-beta*xi_p)/(xi_p))*(MC) + ) + ETA_P ; + + MC = alpha*R_K+(1-alpha)*W -EE_A; + W = (1/(1+beta))*(beta*W(+1)+W(-1)) + +(beta/(1+beta))*(PIE(+1)) + -((1+beta*gamma_w)/(1+beta))*(PIE) + +(gamma_w/(1+beta))*(PIE(-1)) + -(1/(1+beta))*(((1-beta*xi_w)*(1-xi_w))/(((1+(((1+lambda_w)*sig_l)/(lambda_w))))*xi_w))*(W-sig_l*L-(sig_c/(1-hab))*(C-hab*C(-1))+EE_L) + +ETA_W; + L = R_K*((1+czcap)/czcap)-W+K ; + +// R = r_dpi*(PIE-PIE(-1)) +// +(1-rho)*(r_pie*(PIE(-1)-PIE_BAR)+r_y*(Y-YF)) +// +r_dy*(Y-YF-(Y(-1)-YF(-1))) +// +rho*(R(-1)-PIE_BAR) +// +PIE_BAR +// +ETA_R; + + + R = + +r_dpi*(PIE-PIE(-1)) + + +(1-rho)*(r_pie*(BIGTHETA)+r_y*(Y-YF)) + +r_dy*(Y-YF-(Y(-1)-YF(-1))) + +rho*(R(-1)-PIE_BAR) + +PIE_BAR + +ETA_R; + + + E = E(-1)+E(1)-E+(L-E)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); + + + EE_A = (rho_a)*EE_A(-1) + E_A; + PIE_BAR = rho_pb*PIE_BAR(-1)+ E_PIE_BAR ; + EE_B = rho_b*EE_B(-1) + E_B ; + EE_G = rho_g*EE_G(-1) + E_G ; + EE_L = rho_l*EE_L(-1) + E_L ; + EE_I = rho_i*EE_I(-1) + E_I ; + one = 0*one(-1) ; + + LMP*BIGTHETA(1) = BIGTHETA - (PIE(-1) - PIE_BAR) ; + +end; + + +shocks; +var E_A; stderr 0.598; +var E_B; stderr 0.336; +var E_G; stderr 0.325; +var E_I; stderr 0.085; +var E_L; stderr 3.520; +var ETA_P; stderr 0.160; +var ETA_W; stderr 0.289; +var ETA_R; stderr 0.081; +var ETA_Q; stderr 0.604; +var E_PIE_BAR; stderr 0.017; +end; + +//stoch_simul(irf=20) Y C PIE R W R_K L Q I K ; + +// stoch_simul generates what kind of standard errors for the shocks ? + +//steady; +//check; +//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE MC R W R_K E L I ; + +//datatomfile('ddd',[]); + +// new syntax + +estimated_params; +// PARAM NAME, INITVAL, LB, UB, PRIOR_SHAPE, PRIOR_P1, PRIOR_P2, PRIOR_P3, PRIOR_P4, JSCALE +// PRIOR_SHAPE: BETA_PDF, GAMMA_PDF, NORMAL_PDF, INV_GAMMA_PDF +stderr E_A,0.543,0.01,4,INV_GAMMA_PDF,0.4,2; +stderr E_PIE_BAR,0.072,0.001,4,INV_GAMMA_PDF,0.02,10; +stderr E_B,0.2694,0.01,4,INV_GAMMA_PDF,0.2,2; +stderr E_G,0.3052,0.01,4,INV_GAMMA_PDF,0.3,2; +stderr E_L,1.4575,0.1,6,INV_GAMMA_PDF,1,2; +stderr E_I,0.1318,0.01,4,INV_GAMMA_PDF,0.1,2; +stderr ETA_R,0.1363,0.01,4,INV_GAMMA_PDF,0.1,2; +stderr ETA_Q,0.4842,0.01,4,INV_GAMMA_PDF,0.4,2; +stderr ETA_P,0.1731,0.01,4,INV_GAMMA_PDF,0.15,2; +stderr ETA_W,0.2462,0.1,4,INV_GAMMA_PDF,0.25,2; +rho_a,.9722,.1,.9999,BETA_PDF,0.85,0.1; +rho_pb,.85,.1,.999,BETA_PDF,0.85,0.1; +rho_b,.7647,.1,.99,BETA_PDF,0.85,0.1; +rho_g,.9502,.1,.9999,BETA_PDF,0.85,0.1; +rho_l,.9542,.1,.9999,BETA_PDF,0.85,0.1; +rho_i,.6705,.1,.99,BETA_PDF,0.85,0.1; +phi_i,5.2083,1,15,NORMAL_PDF,4,1.5; +sig_c,0.9817,0.25,3,NORMAL_PDF,1,0.375; +hab,0.5612,0.3,0.95,BETA_PDF,0.7,0.1; +xi_w,0.7661,0.3,0.9,BETA_PDF,0.75,0.05; +sig_l,1.7526,0.5,5,NORMAL_PDF,2,0.75; +xi_p,0.8684,0.3,0.95,BETA_PDF,0.75,0.05; +xi_e,0.5724,0.1,0.95,BETA_PDF,0.5,0.15; +gamma_w,0.6202,0.1,0.99,BETA_PDF,0.75,0.15; +gamma_p,0.6638,0.1,0.99,BETA_PDF,0.75,0.15; +czcap,0.2516,0.01,2,NORMAL_PDF,0.2,0.075; +phi_y,1.3011,1.001,2,NORMAL_PDF,1.45,0.125; +r_pie,1.4616,1.2,2,NORMAL_PDF,1.7,0.1; +r_dpi,0.1144,0.01,0.5,NORMAL_PDF,0.3,0.1; +rho,0.8865,0.5,0.99,BETA_PDF,0.8,0.10; +r_y,0.0571,0.01,0.2,NORMAL_PDF,0.125,0.05; +r_dy,0.2228,0.05,0.5,NORMAL_PDF,0.0625,0.05; +end; + +varobs Y C I E PIE W R; + +//estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118, lik_init=2, mode_compute=1,mh_replic=0); +estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118,mh_jscale=0.2,mh_replic=1000 +//,mode_compute=0,mode_file=sweuromodel_dll_mode +); + + +//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE R W R_K L Q I K ; + diff --git a/mex/sources/estimation/tests/rawdata_euromodel_1.m b/mex/sources/estimation/tests/rawdata_euromodel_1.m index cde44abc9..25bbc9241 100644 --- a/mex/sources/estimation/tests/rawdata_euromodel_1.m +++ b/mex/sources/estimation/tests/rawdata_euromodel_1.m @@ -1,967 +1,967 @@ -C =[ - -7.4073 - -6.1860 - -6.5983 - -5.6088 - -5.0547 - -4.4774 - -3.8081 - -3.8425 - -2.4178 - -1.9835 - -1.0395 - -0.1583 - -0.0397 - 0.3505 - -0.1879 - -0.0067 - 0.0478 - -1.2247 - -1.4349 - -0.7973 - -0.0461 - 0.5844 - 1.1372 - 1.3801 - 1.8023 - 2.2972 - 2.0469 - 2.5435 - 2.8169 - 3.2007 - 2.6705 - 3.0518 - 3.2445 - 3.8443 - 3.8525 - 4.9494 - 4.2770 - 4.9532 - 5.1441 - 3.7124 - 3.9880 - 3.6926 - 2.6005 - 1.8679 - 1.9085 - 1.5563 - 1.2308 - 0.3264 - -0.2208 - -0.2483 - -0.4082 - -1.0315 - -1.6030 - -1.5499 - -1.3777 - -2.1675 - -2.5138 - -2.8820 - -2.6958 - -2.4719 - -1.9854 - -1.7954 - -2.2362 - -1.0595 - -0.8808 - -0.8548 - -1.2839 - -0.1363 - 0.2104 - 0.8810 - 0.3555 - 0.4766 - 1.3269 - 1.4506 - 1.4308 - 1.6263 - 1.9842 - 2.3948 - 2.8710 - 3.0177 - 2.9305 - 3.1739 - 3.7380 - 3.8285 - 3.3342 - 3.7447 - 3.7830 - 3.1039 - 2.8413 - 3.0338 - 0.3669 - 0.0847 - 0.0104 - 0.2115 - -0.6649 - -0.9625 - -0.7330 - -0.8664 - -1.4441 - -1.0179 - -1.2729 - -1.9539 - -1.4427 - -2.0371 - -1.9764 - -2.5654 - -2.8570 - -2.5842 - -3.0427 - -2.8312 - -2.3320 - -2.2768 - -2.1816 - -2.1043 - -1.8969 - -2.2388 - -2.1679 - -2.1172 -]; - -E =[ - 0.6263 - 0.7368 - 0.7477 - 1.0150 - 0.6934 - 0.4135 - 0.3845 - 0.2380 - 0.2853 - 0.5999 - 0.8622 - 1.2116 - 1.4921 - 1.5816 - 1.7259 - 1.6276 - 1.2422 - 0.8084 - 0.4710 - -0.3704 - -0.6427 - -0.5323 - -0.5562 - -0.3651 - -0.4356 - -0.7164 - -0.5816 - -0.4635 - -0.8456 - -0.9708 - -0.7138 - -0.7499 - -0.6941 - -0.6656 - -0.2912 - -0.1650 - 0.0774 - 0.2307 - 0.4484 - 0.4942 - 0.4653 - 0.2196 - 0.1736 - -0.1595 - -0.3918 - -0.4611 - -0.8493 - -0.7384 - -1.0604 - -1.2166 - -1.7187 - -1.6932 - -1.7830 - -1.7035 - -2.2079 - -2.3769 - -2.2511 - -2.1093 - -2.4638 - -2.4027 - -2.1313 - -1.9199 - -1.7941 - -1.4661 - -1.2269 - -1.0392 - -1.0725 - -0.7156 - -0.4778 - -0.4233 - -0.0409 - 0.1620 - 0.4280 - 0.5873 - 1.0323 - 1.3420 - 1.6902 - 2.0680 - 2.8219 - 3.2511 - 3.2930 - 3.5633 - 3.8992 - 3.6874 - 3.2849 - 3.1614 - 2.6221 - 2.5067 - 1.9223 - 1.1777 - 0.4483 - -0.0661 - -0.4424 - -0.9000 - -1.1478 - -1.2047 - -1.1412 - -1.2383 - -1.1048 - -0.9716 - -0.9287 - -1.0057 - -1.0827 - -1.0200 - -1.0072 - -1.1740 - -1.2809 - -1.1086 - -0.9866 - -0.8947 - -0.5875 - -0.2329 - 0.1493 - 0.4906 - 0.8400 - 1.0720 - 1.2648 - 1.5431 -]; - -I =[ - 2.6617 - 2.4325 - 1.9592 - 3.2530 - 2.9949 - 3.7918 - 4.7444 - 4.8289 - 5.5983 - 7.8923 - 9.4297 - 9.5010 - 10.0150 - 10.0413 - 9.6046 - 6.4766 - 5.9647 - 3.0114 - 0.5683 - -2.1226 - -2.1855 - -0.8329 - -1.5207 - -1.3419 - -1.7897 - -0.1476 - 0.4675 - -1.6516 - -1.5419 - -1.3050 - -1.2451 - -0.7815 - -0.7796 - -0.3612 - -2.4072 - 1.1162 - 1.1383 - 3.4132 - 5.0356 - 2.8016 - 2.1734 - 0.9366 - -0.7050 - -1.5021 - -2.9868 - -6.0237 - -6.2589 - -6.9138 - -8.2340 - -9.2589 - -9.2465 - -9.6988 - -9.7782 - -10.5645 - -10.7544 - -13.1583 - -12.2718 - -12.0131 - -13.5983 - -12.3579 - -10.9146 - -11.1572 - -12.4935 - -9.4393 - -8.5535 - -7.3723 - -10.0169 - -6.6088 - -5.2045 - -4.1024 - -2.8472 - -1.3139 - 0.0477 - 1.5629 - 3.6947 - 4.0327 - 4.1320 - 7.1400 - 9.1036 - 8.5609 - 7.6576 - 8.8022 - 8.9611 - 10.0871 - 9.4797 - 9.3964 - 10.0363 - 8.6340 - 6.6522 - 4.4471 - 0.2854 - -2.1879 - -2.9879 - -4.1021 - -2.7713 - -2.2281 - -1.2908 - -0.3250 - 0.6534 - 0.3942 - 0.3534 - -0.1532 - -1.7936 - 0.4909 - 0.3634 - 0.4290 - -0.9709 - 0.1942 - 0.6103 - 1.4426 - 2.7225 - 1.7525 - 3.2780 - 3.5985 - 4.9011 - 5.3312 - 6.4402 - 6.6529 -]; - -L =[ - 0.6263 - 0.7368 - 0.7477 - 1.0150 - 0.6934 - 0.4135 - 0.3845 - 0.2380 - 0.2853 - 0.5999 - 0.8622 - 1.2116 - 1.4921 - 1.5816 - 1.7259 - 1.6276 - 1.2422 - 0.8084 - 0.4710 - -0.3704 - -0.6427 - -0.5323 - -0.5562 - -0.3651 - -0.4356 - -0.7164 - -0.5816 - -0.4635 - -0.8456 - -0.9708 - -0.7138 - -0.7499 - -0.6941 - -0.6656 - -0.2912 - -0.1650 - 0.0774 - 0.2307 - 0.4484 - 0.4942 - 0.4653 - 0.2196 - 0.1736 - -0.1595 - -0.3918 - -0.4611 - -0.8493 - -0.7384 - -1.0604 - -1.2166 - -1.7187 - -1.6932 - -1.7830 - -1.7035 - -2.2079 - -2.3769 - -2.2511 - -2.1093 - -2.4638 - -2.4027 - -2.1313 - -1.9199 - -1.7941 - -1.4661 - -1.2269 - -1.0392 - -1.0725 - -0.7156 - -0.4778 - -0.4233 - -0.0409 - 0.1620 - 0.4280 - 0.5873 - 1.0323 - 1.3420 - 1.6902 - 2.0680 - 2.8219 - 3.2511 - 3.2930 - 3.5633 - 3.8992 - 3.6874 - 3.2849 - 3.1614 - 2.6221 - 2.5067 - 1.9223 - 1.1777 - 0.4483 - -0.0661 - -0.4424 - -0.9000 - -1.1478 - -1.2047 - -1.1412 - -1.2383 - -1.1048 - -0.9716 - -0.9287 - -1.0057 - -1.0827 - -1.0200 - -1.0072 - -1.1740 - -1.2809 - -1.1086 - -0.9866 - -0.8947 - -0.5875 - -0.2329 - 0.1493 - 0.4906 - 0.8400 - 1.0720 - 1.2648 - 1.5431 -]; - -PIE =[ - -1.0113 - -0.8305 - 0.2332 - -0.8746 - -0.7978 - -0.9220 - -0.2487 - -0.7749 - -0.5460 - -0.5347 - 0.5050 - -0.0334 - 0.6756 - 0.8791 - 0.7267 - 1.0997 - 1.1750 - 1.1927 - 0.4420 - 0.5357 - 0.0345 - 0.0196 - 0.3371 - 0.9379 - 1.2160 - 0.3393 - 0.5813 - 0.7410 - 0.3374 - 0.2616 - 0.4025 - 0.4799 - 0.5981 - -0.1523 - 0.4458 - 0.2182 - 0.9793 - 0.7562 - 1.0064 - 0.8203 - 0.6966 - 0.3352 - 0.6581 - 0.6111 - 0.9833 - 1.1991 - 0.9562 - 0.3868 - 0.2939 - 0.2471 - 0.8331 - 0.0715 - 0.3910 - 0.3301 - 0.2547 - -0.2702 - -0.2998 - -0.1953 - -0.2293 - -0.3284 - 0.0480 - -0.0374 - 0.3253 - -0.3434 - -0.3892 - -0.7178 - -0.4758 - -0.6794 - -0.8505 - -0.3512 - -0.4436 - -0.5101 - -0.4574 - -0.2696 - -0.1047 - -0.5745 - -0.2989 - -0.0063 - 0.0088 - -0.1184 - -0.1506 - -0.4073 - 0.2674 - 0.2896 - 0.0669 - 0.1166 - -0.1699 - -0.2518 - -0.0562 - -0.3269 - -0.0703 - -0.1046 - -0.4888 - -0.3524 - -0.2485 - -0.5870 - -0.4546 - -0.3970 - -0.2353 - -0.0352 - -0.2171 - -0.3754 - -0.4322 - -0.4572 - -0.4903 - -0.4518 - -0.6435 - -0.6304 - -0.4148 - -0.2892 - -0.4318 - -0.6010 - -0.4148 - -0.4315 - -0.3531 - -0.8053 - -0.4680 - -0.4263 -]; - -R =[ - -1.0750 - -1.1540 - -1.3682 - -1.4569 - -1.3490 - -1.4011 - -1.6486 - -1.6968 - -1.6976 - -1.2567 - -1.1392 - -0.7783 - -0.3021 - -0.0435 - 0.0066 - -0.0043 - 0.1029 - -0.0628 - -0.5358 - -0.9627 - -1.1079 - -1.0918 - -0.9966 - -0.6223 - -0.3616 - -0.2711 - -0.0997 - -0.2810 - -0.3710 - -0.3167 - -0.5301 - -0.5826 - -0.3194 - -0.2713 - -0.5287 - -0.2432 - 0.1098 - 0.5349 - 0.7094 - 0.8415 - 0.6226 - 0.7376 - 0.9316 - 1.4370 - 1.5853 - 1.4267 - 1.1783 - 1.2046 - 0.9689 - 0.7918 - 0.6315 - 0.5950 - 0.6853 - 0.7171 - 0.5887 - 0.4873 - 0.4027 - 0.3489 - 0.2934 - 0.3060 - 0.1741 - 0.0348 - 0.0771 - -0.1005 - -0.1518 - -0.1104 - -0.0681 - -0.0059 - 0.0256 - 0.0404 - -0.1721 - -0.2002 - 0.0015 - 0.1249 - 0.3738 - 0.4320 - 0.5579 - 0.8186 - 0.8727 - 0.7356 - 0.7243 - 0.8635 - 0.9058 - 0.7656 - 0.7936 - 0.8631 - 0.9074 - 0.9547 - 1.2045 - 1.0850 - 0.9178 - 0.5242 - 0.3178 - 0.1472 - 0.0227 - -0.0799 - -0.0611 - -0.0140 - 0.1132 - 0.1774 - 0.0782 - 0.0436 - -0.1596 - -0.2691 - -0.2895 - -0.3791 - -0.4020 - -0.4166 - -0.4037 - -0.3636 - -0.4075 - -0.4311 - -0.4470 - -0.5111 - -0.6274 - -0.7261 - -0.6974 - -0.5012 -]; - -W =[ - -14.8791 - -13.2300 - -13.5037 - -13.0249 - -11.2546 - -10.0148 - -8.8586 - -8.5739 - -7.7851 - -6.7136 - -5.5878 - -4.6881 - -3.8039 - -3.0366 - -2.7342 - -1.3135 - -0.7387 - -0.1131 - -0.2769 - 0.8696 - 1.8855 - 2.3667 - 2.4942 - 3.2049 - 3.9682 - 5.1500 - 4.7047 - 4.7827 - 5.3377 - 5.6614 - 5.2813 - 5.2967 - 5.5175 - 6.1526 - 5.6627 - 6.0694 - 6.5824 - 6.9032 - 6.7849 - 6.6896 - 6.6201 - 6.9933 - 5.8959 - 6.7419 - 6.9999 - 6.4009 - 5.5083 - 5.1054 - 5.2813 - 4.5790 - 3.9589 - 3.8599 - 3.8978 - 2.7957 - 3.2480 - 1.4634 - 1.9219 - 1.8398 - 1.9279 - 1.8316 - 1.6092 - 1.2741 - 0.2031 - -0.0236 - -0.1004 - -0.3034 - -1.0273 - -0.2205 - 0.0458 - 0.2386 - -0.0977 - -0.3145 - -0.1416 - -0.7009 - -0.9082 - -0.8802 - -0.5644 - -0.5852 - -0.5346 - 0.0652 - 0.1301 - 0.3444 - -0.3592 - 0.8096 - 0.9644 - 1.0289 - 1.2781 - 1.2298 - 2.2134 - 2.0808 - 0.4925 - 0.6506 - 0.5531 - 0.2456 - -0.5351 - -0.8183 - -0.8967 - -0.7268 - -1.0738 - -1.2844 - -1.4338 - -1.6995 - -1.7085 - -2.2889 - -2.1018 - -2.4273 - -2.4609 - -2.1407 - -2.3847 - -3.1689 - -4.5581 - -4.1027 - -4.2436 - -4.8836 - -5.9660 - -4.9971 - -5.2386 - -5.6618 -]; - -Y =[ - -4.9347 - -4.6205 - -5.2198 - -4.5937 - -3.8015 - -3.6643 - -2.7239 - -2.7524 - -2.0634 - -1.0112 - 0.0530 - 0.7623 - 1.7927 - 2.1486 - 2.4866 - 2.1456 - 2.1671 - -0.0254 - -1.6716 - -1.9673 - -1.6109 - -1.0292 - -0.1222 - 0.7329 - 1.1234 - 2.0603 - 1.7998 - 1.4820 - 1.1732 - 1.6424 - 1.5382 - 2.1399 - 2.0127 - 2.7210 - 2.4966 - 3.5249 - 3.6237 - 4.2011 - 4.5634 - 3.3442 - 2.7761 - 1.9812 - 1.3779 - 1.4616 - 1.3029 - 0.7594 - 0.3695 - 0.0832 - -0.8118 - -1.4557 - -1.4850 - -1.2346 - -1.5696 - -1.3785 - -0.7682 - -2.0308 - -1.7778 - -1.7801 - -2.1711 - -1.7469 - -1.3413 - -1.3352 - -2.4390 - -1.2125 - -1.1695 - -1.0891 - -2.4753 - -1.3503 - -0.9412 - -0.1470 - 0.0026 - 0.1108 - 0.6890 - 1.3520 - 1.6018 - 2.0667 - 1.7625 - 2.6658 - 3.4048 - 3.2507 - 3.4251 - 3.2174 - 3.1903 - 3.3396 - 3.1358 - 2.8625 - 3.3546 - 2.4609 - 1.9534 - 0.9962 - -0.7904 - -1.1672 - -1.2586 - -1.3593 - -1.3443 - -0.9413 - -0.6023 - -0.4516 - -0.5129 - -0.8741 - -1.0784 - -1.4091 - -1.3627 - -1.5731 - -1.6037 - -1.8814 - -2.1482 - -1.3597 - -1.1855 - -1.1122 - -0.8424 - -0.9747 - -1.1385 - -1.4548 - -1.4284 - -1.4633 - -1.0621 - -0.7871 -]; +C =[ + -7.4073 + -6.1860 + -6.5983 + -5.6088 + -5.0547 + -4.4774 + -3.8081 + -3.8425 + -2.4178 + -1.9835 + -1.0395 + -0.1583 + -0.0397 + 0.3505 + -0.1879 + -0.0067 + 0.0478 + -1.2247 + -1.4349 + -0.7973 + -0.0461 + 0.5844 + 1.1372 + 1.3801 + 1.8023 + 2.2972 + 2.0469 + 2.5435 + 2.8169 + 3.2007 + 2.6705 + 3.0518 + 3.2445 + 3.8443 + 3.8525 + 4.9494 + 4.2770 + 4.9532 + 5.1441 + 3.7124 + 3.9880 + 3.6926 + 2.6005 + 1.8679 + 1.9085 + 1.5563 + 1.2308 + 0.3264 + -0.2208 + -0.2483 + -0.4082 + -1.0315 + -1.6030 + -1.5499 + -1.3777 + -2.1675 + -2.5138 + -2.8820 + -2.6958 + -2.4719 + -1.9854 + -1.7954 + -2.2362 + -1.0595 + -0.8808 + -0.8548 + -1.2839 + -0.1363 + 0.2104 + 0.8810 + 0.3555 + 0.4766 + 1.3269 + 1.4506 + 1.4308 + 1.6263 + 1.9842 + 2.3948 + 2.8710 + 3.0177 + 2.9305 + 3.1739 + 3.7380 + 3.8285 + 3.3342 + 3.7447 + 3.7830 + 3.1039 + 2.8413 + 3.0338 + 0.3669 + 0.0847 + 0.0104 + 0.2115 + -0.6649 + -0.9625 + -0.7330 + -0.8664 + -1.4441 + -1.0179 + -1.2729 + -1.9539 + -1.4427 + -2.0371 + -1.9764 + -2.5654 + -2.8570 + -2.5842 + -3.0427 + -2.8312 + -2.3320 + -2.2768 + -2.1816 + -2.1043 + -1.8969 + -2.2388 + -2.1679 + -2.1172 +]; + +E =[ + 0.6263 + 0.7368 + 0.7477 + 1.0150 + 0.6934 + 0.4135 + 0.3845 + 0.2380 + 0.2853 + 0.5999 + 0.8622 + 1.2116 + 1.4921 + 1.5816 + 1.7259 + 1.6276 + 1.2422 + 0.8084 + 0.4710 + -0.3704 + -0.6427 + -0.5323 + -0.5562 + -0.3651 + -0.4356 + -0.7164 + -0.5816 + -0.4635 + -0.8456 + -0.9708 + -0.7138 + -0.7499 + -0.6941 + -0.6656 + -0.2912 + -0.1650 + 0.0774 + 0.2307 + 0.4484 + 0.4942 + 0.4653 + 0.2196 + 0.1736 + -0.1595 + -0.3918 + -0.4611 + -0.8493 + -0.7384 + -1.0604 + -1.2166 + -1.7187 + -1.6932 + -1.7830 + -1.7035 + -2.2079 + -2.3769 + -2.2511 + -2.1093 + -2.4638 + -2.4027 + -2.1313 + -1.9199 + -1.7941 + -1.4661 + -1.2269 + -1.0392 + -1.0725 + -0.7156 + -0.4778 + -0.4233 + -0.0409 + 0.1620 + 0.4280 + 0.5873 + 1.0323 + 1.3420 + 1.6902 + 2.0680 + 2.8219 + 3.2511 + 3.2930 + 3.5633 + 3.8992 + 3.6874 + 3.2849 + 3.1614 + 2.6221 + 2.5067 + 1.9223 + 1.1777 + 0.4483 + -0.0661 + -0.4424 + -0.9000 + -1.1478 + -1.2047 + -1.1412 + -1.2383 + -1.1048 + -0.9716 + -0.9287 + -1.0057 + -1.0827 + -1.0200 + -1.0072 + -1.1740 + -1.2809 + -1.1086 + -0.9866 + -0.8947 + -0.5875 + -0.2329 + 0.1493 + 0.4906 + 0.8400 + 1.0720 + 1.2648 + 1.5431 +]; + +I =[ + 2.6617 + 2.4325 + 1.9592 + 3.2530 + 2.9949 + 3.7918 + 4.7444 + 4.8289 + 5.5983 + 7.8923 + 9.4297 + 9.5010 + 10.0150 + 10.0413 + 9.6046 + 6.4766 + 5.9647 + 3.0114 + 0.5683 + -2.1226 + -2.1855 + -0.8329 + -1.5207 + -1.3419 + -1.7897 + -0.1476 + 0.4675 + -1.6516 + -1.5419 + -1.3050 + -1.2451 + -0.7815 + -0.7796 + -0.3612 + -2.4072 + 1.1162 + 1.1383 + 3.4132 + 5.0356 + 2.8016 + 2.1734 + 0.9366 + -0.7050 + -1.5021 + -2.9868 + -6.0237 + -6.2589 + -6.9138 + -8.2340 + -9.2589 + -9.2465 + -9.6988 + -9.7782 + -10.5645 + -10.7544 + -13.1583 + -12.2718 + -12.0131 + -13.5983 + -12.3579 + -10.9146 + -11.1572 + -12.4935 + -9.4393 + -8.5535 + -7.3723 + -10.0169 + -6.6088 + -5.2045 + -4.1024 + -2.8472 + -1.3139 + 0.0477 + 1.5629 + 3.6947 + 4.0327 + 4.1320 + 7.1400 + 9.1036 + 8.5609 + 7.6576 + 8.8022 + 8.9611 + 10.0871 + 9.4797 + 9.3964 + 10.0363 + 8.6340 + 6.6522 + 4.4471 + 0.2854 + -2.1879 + -2.9879 + -4.1021 + -2.7713 + -2.2281 + -1.2908 + -0.3250 + 0.6534 + 0.3942 + 0.3534 + -0.1532 + -1.7936 + 0.4909 + 0.3634 + 0.4290 + -0.9709 + 0.1942 + 0.6103 + 1.4426 + 2.7225 + 1.7525 + 3.2780 + 3.5985 + 4.9011 + 5.3312 + 6.4402 + 6.6529 +]; + +L =[ + 0.6263 + 0.7368 + 0.7477 + 1.0150 + 0.6934 + 0.4135 + 0.3845 + 0.2380 + 0.2853 + 0.5999 + 0.8622 + 1.2116 + 1.4921 + 1.5816 + 1.7259 + 1.6276 + 1.2422 + 0.8084 + 0.4710 + -0.3704 + -0.6427 + -0.5323 + -0.5562 + -0.3651 + -0.4356 + -0.7164 + -0.5816 + -0.4635 + -0.8456 + -0.9708 + -0.7138 + -0.7499 + -0.6941 + -0.6656 + -0.2912 + -0.1650 + 0.0774 + 0.2307 + 0.4484 + 0.4942 + 0.4653 + 0.2196 + 0.1736 + -0.1595 + -0.3918 + -0.4611 + -0.8493 + -0.7384 + -1.0604 + -1.2166 + -1.7187 + -1.6932 + -1.7830 + -1.7035 + -2.2079 + -2.3769 + -2.2511 + -2.1093 + -2.4638 + -2.4027 + -2.1313 + -1.9199 + -1.7941 + -1.4661 + -1.2269 + -1.0392 + -1.0725 + -0.7156 + -0.4778 + -0.4233 + -0.0409 + 0.1620 + 0.4280 + 0.5873 + 1.0323 + 1.3420 + 1.6902 + 2.0680 + 2.8219 + 3.2511 + 3.2930 + 3.5633 + 3.8992 + 3.6874 + 3.2849 + 3.1614 + 2.6221 + 2.5067 + 1.9223 + 1.1777 + 0.4483 + -0.0661 + -0.4424 + -0.9000 + -1.1478 + -1.2047 + -1.1412 + -1.2383 + -1.1048 + -0.9716 + -0.9287 + -1.0057 + -1.0827 + -1.0200 + -1.0072 + -1.1740 + -1.2809 + -1.1086 + -0.9866 + -0.8947 + -0.5875 + -0.2329 + 0.1493 + 0.4906 + 0.8400 + 1.0720 + 1.2648 + 1.5431 +]; + +PIE =[ + -1.0113 + -0.8305 + 0.2332 + -0.8746 + -0.7978 + -0.9220 + -0.2487 + -0.7749 + -0.5460 + -0.5347 + 0.5050 + -0.0334 + 0.6756 + 0.8791 + 0.7267 + 1.0997 + 1.1750 + 1.1927 + 0.4420 + 0.5357 + 0.0345 + 0.0196 + 0.3371 + 0.9379 + 1.2160 + 0.3393 + 0.5813 + 0.7410 + 0.3374 + 0.2616 + 0.4025 + 0.4799 + 0.5981 + -0.1523 + 0.4458 + 0.2182 + 0.9793 + 0.7562 + 1.0064 + 0.8203 + 0.6966 + 0.3352 + 0.6581 + 0.6111 + 0.9833 + 1.1991 + 0.9562 + 0.3868 + 0.2939 + 0.2471 + 0.8331 + 0.0715 + 0.3910 + 0.3301 + 0.2547 + -0.2702 + -0.2998 + -0.1953 + -0.2293 + -0.3284 + 0.0480 + -0.0374 + 0.3253 + -0.3434 + -0.3892 + -0.7178 + -0.4758 + -0.6794 + -0.8505 + -0.3512 + -0.4436 + -0.5101 + -0.4574 + -0.2696 + -0.1047 + -0.5745 + -0.2989 + -0.0063 + 0.0088 + -0.1184 + -0.1506 + -0.4073 + 0.2674 + 0.2896 + 0.0669 + 0.1166 + -0.1699 + -0.2518 + -0.0562 + -0.3269 + -0.0703 + -0.1046 + -0.4888 + -0.3524 + -0.2485 + -0.5870 + -0.4546 + -0.3970 + -0.2353 + -0.0352 + -0.2171 + -0.3754 + -0.4322 + -0.4572 + -0.4903 + -0.4518 + -0.6435 + -0.6304 + -0.4148 + -0.2892 + -0.4318 + -0.6010 + -0.4148 + -0.4315 + -0.3531 + -0.8053 + -0.4680 + -0.4263 +]; + +R =[ + -1.0750 + -1.1540 + -1.3682 + -1.4569 + -1.3490 + -1.4011 + -1.6486 + -1.6968 + -1.6976 + -1.2567 + -1.1392 + -0.7783 + -0.3021 + -0.0435 + 0.0066 + -0.0043 + 0.1029 + -0.0628 + -0.5358 + -0.9627 + -1.1079 + -1.0918 + -0.9966 + -0.6223 + -0.3616 + -0.2711 + -0.0997 + -0.2810 + -0.3710 + -0.3167 + -0.5301 + -0.5826 + -0.3194 + -0.2713 + -0.5287 + -0.2432 + 0.1098 + 0.5349 + 0.7094 + 0.8415 + 0.6226 + 0.7376 + 0.9316 + 1.4370 + 1.5853 + 1.4267 + 1.1783 + 1.2046 + 0.9689 + 0.7918 + 0.6315 + 0.5950 + 0.6853 + 0.7171 + 0.5887 + 0.4873 + 0.4027 + 0.3489 + 0.2934 + 0.3060 + 0.1741 + 0.0348 + 0.0771 + -0.1005 + -0.1518 + -0.1104 + -0.0681 + -0.0059 + 0.0256 + 0.0404 + -0.1721 + -0.2002 + 0.0015 + 0.1249 + 0.3738 + 0.4320 + 0.5579 + 0.8186 + 0.8727 + 0.7356 + 0.7243 + 0.8635 + 0.9058 + 0.7656 + 0.7936 + 0.8631 + 0.9074 + 0.9547 + 1.2045 + 1.0850 + 0.9178 + 0.5242 + 0.3178 + 0.1472 + 0.0227 + -0.0799 + -0.0611 + -0.0140 + 0.1132 + 0.1774 + 0.0782 + 0.0436 + -0.1596 + -0.2691 + -0.2895 + -0.3791 + -0.4020 + -0.4166 + -0.4037 + -0.3636 + -0.4075 + -0.4311 + -0.4470 + -0.5111 + -0.6274 + -0.7261 + -0.6974 + -0.5012 +]; + +W =[ + -14.8791 + -13.2300 + -13.5037 + -13.0249 + -11.2546 + -10.0148 + -8.8586 + -8.5739 + -7.7851 + -6.7136 + -5.5878 + -4.6881 + -3.8039 + -3.0366 + -2.7342 + -1.3135 + -0.7387 + -0.1131 + -0.2769 + 0.8696 + 1.8855 + 2.3667 + 2.4942 + 3.2049 + 3.9682 + 5.1500 + 4.7047 + 4.7827 + 5.3377 + 5.6614 + 5.2813 + 5.2967 + 5.5175 + 6.1526 + 5.6627 + 6.0694 + 6.5824 + 6.9032 + 6.7849 + 6.6896 + 6.6201 + 6.9933 + 5.8959 + 6.7419 + 6.9999 + 6.4009 + 5.5083 + 5.1054 + 5.2813 + 4.5790 + 3.9589 + 3.8599 + 3.8978 + 2.7957 + 3.2480 + 1.4634 + 1.9219 + 1.8398 + 1.9279 + 1.8316 + 1.6092 + 1.2741 + 0.2031 + -0.0236 + -0.1004 + -0.3034 + -1.0273 + -0.2205 + 0.0458 + 0.2386 + -0.0977 + -0.3145 + -0.1416 + -0.7009 + -0.9082 + -0.8802 + -0.5644 + -0.5852 + -0.5346 + 0.0652 + 0.1301 + 0.3444 + -0.3592 + 0.8096 + 0.9644 + 1.0289 + 1.2781 + 1.2298 + 2.2134 + 2.0808 + 0.4925 + 0.6506 + 0.5531 + 0.2456 + -0.5351 + -0.8183 + -0.8967 + -0.7268 + -1.0738 + -1.2844 + -1.4338 + -1.6995 + -1.7085 + -2.2889 + -2.1018 + -2.4273 + -2.4609 + -2.1407 + -2.3847 + -3.1689 + -4.5581 + -4.1027 + -4.2436 + -4.8836 + -5.9660 + -4.9971 + -5.2386 + -5.6618 +]; + +Y =[ + -4.9347 + -4.6205 + -5.2198 + -4.5937 + -3.8015 + -3.6643 + -2.7239 + -2.7524 + -2.0634 + -1.0112 + 0.0530 + 0.7623 + 1.7927 + 2.1486 + 2.4866 + 2.1456 + 2.1671 + -0.0254 + -1.6716 + -1.9673 + -1.6109 + -1.0292 + -0.1222 + 0.7329 + 1.1234 + 2.0603 + 1.7998 + 1.4820 + 1.1732 + 1.6424 + 1.5382 + 2.1399 + 2.0127 + 2.7210 + 2.4966 + 3.5249 + 3.6237 + 4.2011 + 4.5634 + 3.3442 + 2.7761 + 1.9812 + 1.3779 + 1.4616 + 1.3029 + 0.7594 + 0.3695 + 0.0832 + -0.8118 + -1.4557 + -1.4850 + -1.2346 + -1.5696 + -1.3785 + -0.7682 + -2.0308 + -1.7778 + -1.7801 + -2.1711 + -1.7469 + -1.3413 + -1.3352 + -2.4390 + -1.2125 + -1.1695 + -1.0891 + -2.4753 + -1.3503 + -0.9412 + -0.1470 + 0.0026 + 0.1108 + 0.6890 + 1.3520 + 1.6018 + 2.0667 + 1.7625 + 2.6658 + 3.4048 + 3.2507 + 3.4251 + 3.2174 + 3.1903 + 3.3396 + 3.1358 + 2.8625 + 3.3546 + 2.4609 + 1.9534 + 0.9962 + -0.7904 + -1.1672 + -1.2586 + -1.3593 + -1.3443 + -0.9413 + -0.6023 + -0.4516 + -0.5129 + -0.8741 + -1.0784 + -1.4091 + -1.3627 + -1.5731 + -1.6037 + -1.8814 + -2.1482 + -1.3597 + -1.1855 + -1.1122 + -0.8424 + -0.9747 + -1.1385 + -1.4548 + -1.4284 + -1.4633 + -1.0621 + -0.7871 +]; diff --git a/mex/sources/estimation/tests/sweuromodel_dll.mod b/mex/sources/estimation/tests/sweuromodel_dll.mod index 363e31088..658dec00a 100644 --- a/mex/sources/estimation/tests/sweuromodel_dll.mod +++ b/mex/sources/estimation/tests/sweuromodel_dll.mod @@ -1,182 +1,182 @@ -//options_.usePartInfo=1; - -var MC E EF R_KF QF CF IF YF LF PIEF WF RF R_K Q C I Y L PIE W R EE_A PIE_BAR EE_B EE_G EE_L EE_I KF K one BIGTHETA; - -varexo E_A E_B E_G E_L E_I ETA_R E_PIE_BAR ETA_Q ETA_P ETA_W ; - -parameters -xi_e lambda_w alpha czcap beta phi_i tau sig_c hab ccs cinvs phi_y gamma_w xi_w gamma_p xi_p sig_l r_dpi -r_pie r_dy r_y rho rho_a rho_pb rho_b rho_g rho_l rho_i LMP ; - - - -alpha=.30; -beta=.99; -tau=0.025; -ccs=0.6; -cinvs=.22; //% alpha*(tau+ctrend)/R_K R_K=ctrend/beta-1+tau -lambda_w = 0.5; -phi_i= 6.771; -sig_c= 1.353; -hab= 0.573; -xi_w= 0.737; -sig_l= 2.400; -xi_p= 0.908; -xi_e= 0.599; -gamma_w= 0.763; -gamma_p= 0.469; -czcap= 0.169; -phi_y= 1.408; -r_pie= 1.684; -r_dpi= 0.14; -rho= 0.961; -r_y= 0.099; -r_dy= 0.159; -rho_a= 0.823; -rho_b= 0.855; -rho_g= 0.949; -rho_l= 0.889; -rho_i= 0.927; -rho_pb= 0.924; -LMP = 0.0 ; //NEW. - -model(linear, use_dll); - CF = (1/(1+hab))*(CF(1)+hab*CF(-1))-((1-hab)/((1+hab)*sig_c))*(RF-PIEF(1)-EE_B) ; - 0 = alpha*R_KF+(1-alpha)*WF -EE_A ; - PIEF = 0*one; - IF = (1/(1+beta))* (( IF(-1) + beta*(IF(1)))+(1/phi_i)*QF)+0*ETA_Q+EE_I ; - QF = -(RF-PIEF(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_KF(1)+beta*(1-tau)*QF(1) +0*EE_I ; - KF = (1-tau)*KF(-1)+tau*IF(-1) ; - YF = (ccs*CF+cinvs*IF)+EE_G ; - - YF = 1*phi_y*( alpha*KF+alpha*(1/czcap)*R_KF+(1-alpha)*LF+EE_A ) ; - WF = (sig_c/(1-hab))*(CF-hab*CF(-1)) + sig_l*LF - EE_L ; - LF = R_KF*((1+czcap)/czcap)-WF+KF ; - EF = EF(-1)+EF(1)-EF+(LF-EF)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); - - C = (hab/(1+hab))*C(-1)+(1/(1+hab))*C(1)-((1-hab)/((1+hab)*sig_c))*(R-PIE(1)-EE_B) ; - I = (1/(1+beta))* (( I(-1) + beta*(I(1)))+(1/phi_i)*Q )+1*ETA_Q+1*EE_I ; - Q = -(R-PIE(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_K(1)+beta*(1-tau)*Q(1) +EE_I*0+0*ETA_Q ; - K = (1-tau)*K(-1)+tau*I(-1) ; - Y = (ccs*C+cinvs*I)+ EE_G ; - Y = phi_y*( alpha*K+alpha*(1/czcap)*R_K+(1-alpha)*L ) +phi_y*EE_A ; - PIE = (1/(1+beta*gamma_p))* - ( - (beta)*(PIE(1)) +(gamma_p)*(PIE(-1)) - +((1-xi_p)*(1-beta*xi_p)/(xi_p))*(MC) - ) + ETA_P ; - - MC = alpha*R_K+(1-alpha)*W -EE_A; - W = (1/(1+beta))*(beta*W(+1)+W(-1)) - +(beta/(1+beta))*(PIE(+1)) - -((1+beta*gamma_w)/(1+beta))*(PIE) - +(gamma_w/(1+beta))*(PIE(-1)) - -(1/(1+beta))*(((1-beta*xi_w)*(1-xi_w))/(((1+(((1+lambda_w)*sig_l)/(lambda_w))))*xi_w))*(W-sig_l*L-(sig_c/(1-hab))*(C-hab*C(-1))+EE_L) - +ETA_W; - L = R_K*((1+czcap)/czcap)-W+K ; - -// R = r_dpi*(PIE-PIE(-1)) -// +(1-rho)*(r_pie*(PIE(-1)-PIE_BAR)+r_y*(Y-YF)) -// +r_dy*(Y-YF-(Y(-1)-YF(-1))) -// +rho*(R(-1)-PIE_BAR) -// +PIE_BAR -// +ETA_R; - - - R = - -r_dpi*(PIE-PIE(-1)) - - +(1-rho)*(r_pie*(BIGTHETA)+r_y*(Y-YF)) - +r_dy*(Y-YF-(Y(-1)-YF(-1))) - +rho*(R(-1)-PIE_BAR) - +PIE_BAR - +ETA_R; - - - E = E(-1)+E(1)-E+(L-E)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); - - - EE_A = (rho_a)*EE_A(-1) + E_A; - PIE_BAR = rho_pb*PIE_BAR(-1)+ E_PIE_BAR ; - EE_B = rho_b*EE_B(-1) + E_B ; - EE_G = rho_g*EE_G(-1) + E_G ; - EE_L = rho_l*EE_L(-1) + E_L ; - EE_I = rho_i*EE_I(-1) + E_I ; - one = 0*one(-1) ; - - LMP*BIGTHETA(1) = BIGTHETA - (PIE(-1) - PIE_BAR) ; - -end; - - -shocks; -var E_A; stderr 0.598; -var E_B; stderr 0.336; -var E_G; stderr 0.325; -var E_I; stderr 0.085; -var E_L; stderr 3.520; -var ETA_P; stderr 0.160; -var ETA_W; stderr 0.289; -var ETA_R; stderr 0.081; -var ETA_Q; stderr 0.604; -var E_PIE_BAR; stderr 0.017; -end; - -//stoch_simul(irf=20) Y C PIE R W R_K L Q I K ; - -// stoch_simul generates what kind of standard errors for the shocks ? - -//steady; -//check; -//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE MC R W R_K E L I ; - -//datatomfile('ddd',[]); - -// new syntax - -estimated_params; -// PARAM NAME, INITVAL, LB, UB, PRIOR_SHAPE, PRIOR_P1, PRIOR_P2, PRIOR_P3, PRIOR_P4, JSCALE -// PRIOR_SHAPE: BETA_PDF, GAMMA_PDF, NORMAL_PDF, INV_GAMMA_PDF -stderr E_A,0.543,0.01,4,INV_GAMMA_PDF,0.4,2; -stderr E_PIE_BAR,0.072,0.001,4,INV_GAMMA_PDF,0.02,10; -stderr E_B,0.2694,0.01,4,INV_GAMMA_PDF,0.2,2; -stderr E_G,0.3052,0.01,4,INV_GAMMA_PDF,0.3,2; -stderr E_L,1.4575,0.1,6,INV_GAMMA_PDF,1,2; -stderr E_I,0.1318,0.01,4,INV_GAMMA_PDF,0.1,2; -stderr ETA_R,0.1363,0.01,4,INV_GAMMA_PDF,0.1,2; -stderr ETA_Q,0.4842,0.01,4,INV_GAMMA_PDF,0.4,2; -stderr ETA_P,0.1731,0.01,4,INV_GAMMA_PDF,0.15,2; -stderr ETA_W,0.2462,0.1,4,INV_GAMMA_PDF,0.25,2; -rho_a,.9722,.1,.9999,BETA_PDF,0.85,0.1; -rho_pb,.85,.1,.999,BETA_PDF,0.85,0.1; -rho_b,.7647,.1,.99,BETA_PDF,0.85,0.1; -rho_g,.9502,.1,.9999,BETA_PDF,0.85,0.1; -rho_l,.9542,.1,.9999,BETA_PDF,0.85,0.1; -rho_i,.6705,.1,.99,BETA_PDF,0.85,0.1; -phi_i,5.2083,1,15,NORMAL_PDF,4,1.5; -sig_c,0.9817,0.25,3,NORMAL_PDF,1,0.375; -hab,0.5612,0.3,0.95,BETA_PDF,0.7,0.1; -xi_w,0.7661,0.3,0.9,BETA_PDF,0.75,0.05; -sig_l,1.7526,0.5,5,NORMAL_PDF,2,0.75; -xi_p,0.8684,0.3,0.95,BETA_PDF,0.75,0.05; -xi_e,0.5724,0.1,0.95,BETA_PDF,0.5,0.15; -gamma_w,0.6202,0.1,0.99,BETA_PDF,0.75,0.15; -gamma_p,0.6638,0.1,0.99,BETA_PDF,0.75,0.15; -czcap,0.2516,0.01,2,NORMAL_PDF,0.2,0.075; -phi_y,1.3011,1.001,2,NORMAL_PDF,1.45,0.125; -r_pie,1.4616,1.2,2,NORMAL_PDF,1.7,0.1; -r_dpi,0.1144,0.01,0.5,NORMAL_PDF,0.3,0.1; -rho,0.8865,0.5,0.99,BETA_PDF,0.8,0.10; -r_y,0.0571,0.01,0.2,NORMAL_PDF,0.125,0.05; -r_dy,0.2228,0.05,0.5,NORMAL_PDF,0.0625,0.05; -end; - -varobs Y C I E PIE W R; - -//estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118, lik_init=2, mode_compute=1,mh_replic=0); -estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118,mh_jscale=0.2,mh_replic=150000, mode_check); // - - -//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE R W R_K L Q I K ; - +//options_.usePartInfo=1; + +var MC E EF R_KF QF CF IF YF LF PIEF WF RF R_K Q C I Y L PIE W R EE_A PIE_BAR EE_B EE_G EE_L EE_I KF K one BIGTHETA; + +varexo E_A E_B E_G E_L E_I ETA_R E_PIE_BAR ETA_Q ETA_P ETA_W ; + +parameters +xi_e lambda_w alpha czcap beta phi_i tau sig_c hab ccs cinvs phi_y gamma_w xi_w gamma_p xi_p sig_l r_dpi +r_pie r_dy r_y rho rho_a rho_pb rho_b rho_g rho_l rho_i LMP ; + + + +alpha=.30; +beta=.99; +tau=0.025; +ccs=0.6; +cinvs=.22; //% alpha*(tau+ctrend)/R_K R_K=ctrend/beta-1+tau +lambda_w = 0.5; +phi_i= 6.771; +sig_c= 1.353; +hab= 0.573; +xi_w= 0.737; +sig_l= 2.400; +xi_p= 0.908; +xi_e= 0.599; +gamma_w= 0.763; +gamma_p= 0.469; +czcap= 0.169; +phi_y= 1.408; +r_pie= 1.684; +r_dpi= 0.14; +rho= 0.961; +r_y= 0.099; +r_dy= 0.159; +rho_a= 0.823; +rho_b= 0.855; +rho_g= 0.949; +rho_l= 0.889; +rho_i= 0.927; +rho_pb= 0.924; +LMP = 0.0 ; //NEW. + +model(linear, use_dll); + CF = (1/(1+hab))*(CF(1)+hab*CF(-1))-((1-hab)/((1+hab)*sig_c))*(RF-PIEF(1)-EE_B) ; + 0 = alpha*R_KF+(1-alpha)*WF -EE_A ; + PIEF = 0*one; + IF = (1/(1+beta))* (( IF(-1) + beta*(IF(1)))+(1/phi_i)*QF)+0*ETA_Q+EE_I ; + QF = -(RF-PIEF(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_KF(1)+beta*(1-tau)*QF(1) +0*EE_I ; + KF = (1-tau)*KF(-1)+tau*IF(-1) ; + YF = (ccs*CF+cinvs*IF)+EE_G ; + + YF = 1*phi_y*( alpha*KF+alpha*(1/czcap)*R_KF+(1-alpha)*LF+EE_A ) ; + WF = (sig_c/(1-hab))*(CF-hab*CF(-1)) + sig_l*LF - EE_L ; + LF = R_KF*((1+czcap)/czcap)-WF+KF ; + EF = EF(-1)+EF(1)-EF+(LF-EF)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); + + C = (hab/(1+hab))*C(-1)+(1/(1+hab))*C(1)-((1-hab)/((1+hab)*sig_c))*(R-PIE(1)-EE_B) ; + I = (1/(1+beta))* (( I(-1) + beta*(I(1)))+(1/phi_i)*Q )+1*ETA_Q+1*EE_I ; + Q = -(R-PIE(1))+(1-beta*(1-tau))*((0+czcap)/czcap)*R_K(1)+beta*(1-tau)*Q(1) +EE_I*0+0*ETA_Q ; + K = (1-tau)*K(-1)+tau*I(-1) ; + Y = (ccs*C+cinvs*I)+ EE_G ; + Y = phi_y*( alpha*K+alpha*(1/czcap)*R_K+(1-alpha)*L ) +phi_y*EE_A ; + PIE = (1/(1+beta*gamma_p))* + ( + (beta)*(PIE(1)) +(gamma_p)*(PIE(-1)) + +((1-xi_p)*(1-beta*xi_p)/(xi_p))*(MC) + ) + ETA_P ; + + MC = alpha*R_K+(1-alpha)*W -EE_A; + W = (1/(1+beta))*(beta*W(+1)+W(-1)) + +(beta/(1+beta))*(PIE(+1)) + -((1+beta*gamma_w)/(1+beta))*(PIE) + +(gamma_w/(1+beta))*(PIE(-1)) + -(1/(1+beta))*(((1-beta*xi_w)*(1-xi_w))/(((1+(((1+lambda_w)*sig_l)/(lambda_w))))*xi_w))*(W-sig_l*L-(sig_c/(1-hab))*(C-hab*C(-1))+EE_L) + +ETA_W; + L = R_K*((1+czcap)/czcap)-W+K ; + +// R = r_dpi*(PIE-PIE(-1)) +// +(1-rho)*(r_pie*(PIE(-1)-PIE_BAR)+r_y*(Y-YF)) +// +r_dy*(Y-YF-(Y(-1)-YF(-1))) +// +rho*(R(-1)-PIE_BAR) +// +PIE_BAR +// +ETA_R; + + + R = + +r_dpi*(PIE-PIE(-1)) + + +(1-rho)*(r_pie*(BIGTHETA)+r_y*(Y-YF)) + +r_dy*(Y-YF-(Y(-1)-YF(-1))) + +rho*(R(-1)-PIE_BAR) + +PIE_BAR + +ETA_R; + + + E = E(-1)+E(1)-E+(L-E)*((1-xi_e)*(1-xi_e*beta)/(xi_e)); + + + EE_A = (rho_a)*EE_A(-1) + E_A; + PIE_BAR = rho_pb*PIE_BAR(-1)+ E_PIE_BAR ; + EE_B = rho_b*EE_B(-1) + E_B ; + EE_G = rho_g*EE_G(-1) + E_G ; + EE_L = rho_l*EE_L(-1) + E_L ; + EE_I = rho_i*EE_I(-1) + E_I ; + one = 0*one(-1) ; + + LMP*BIGTHETA(1) = BIGTHETA - (PIE(-1) - PIE_BAR) ; + +end; + + +shocks; +var E_A; stderr 0.598; +var E_B; stderr 0.336; +var E_G; stderr 0.325; +var E_I; stderr 0.085; +var E_L; stderr 3.520; +var ETA_P; stderr 0.160; +var ETA_W; stderr 0.289; +var ETA_R; stderr 0.081; +var ETA_Q; stderr 0.604; +var E_PIE_BAR; stderr 0.017; +end; + +//stoch_simul(irf=20) Y C PIE R W R_K L Q I K ; + +// stoch_simul generates what kind of standard errors for the shocks ? + +//steady; +//check; +//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE MC R W R_K E L I ; + +//datatomfile('ddd',[]); + +// new syntax + +estimated_params; +// PARAM NAME, INITVAL, LB, UB, PRIOR_SHAPE, PRIOR_P1, PRIOR_P2, PRIOR_P3, PRIOR_P4, JSCALE +// PRIOR_SHAPE: BETA_PDF, GAMMA_PDF, NORMAL_PDF, INV_GAMMA_PDF +stderr E_A,0.543,0.01,4,INV_GAMMA_PDF,0.4,2; +stderr E_PIE_BAR,0.072,0.001,4,INV_GAMMA_PDF,0.02,10; +stderr E_B,0.2694,0.01,4,INV_GAMMA_PDF,0.2,2; +stderr E_G,0.3052,0.01,4,INV_GAMMA_PDF,0.3,2; +stderr E_L,1.4575,0.1,6,INV_GAMMA_PDF,1,2; +stderr E_I,0.1318,0.01,4,INV_GAMMA_PDF,0.1,2; +stderr ETA_R,0.1363,0.01,4,INV_GAMMA_PDF,0.1,2; +stderr ETA_Q,0.4842,0.01,4,INV_GAMMA_PDF,0.4,2; +stderr ETA_P,0.1731,0.01,4,INV_GAMMA_PDF,0.15,2; +stderr ETA_W,0.2462,0.1,4,INV_GAMMA_PDF,0.25,2; +rho_a,.9722,.1,.9999,BETA_PDF,0.85,0.1; +rho_pb,.85,.1,.999,BETA_PDF,0.85,0.1; +rho_b,.7647,.1,.99,BETA_PDF,0.85,0.1; +rho_g,.9502,.1,.9999,BETA_PDF,0.85,0.1; +rho_l,.9542,.1,.9999,BETA_PDF,0.85,0.1; +rho_i,.6705,.1,.99,BETA_PDF,0.85,0.1; +phi_i,5.2083,1,15,NORMAL_PDF,4,1.5; +sig_c,0.9817,0.25,3,NORMAL_PDF,1,0.375; +hab,0.5612,0.3,0.95,BETA_PDF,0.7,0.1; +xi_w,0.7661,0.3,0.9,BETA_PDF,0.75,0.05; +sig_l,1.7526,0.5,5,NORMAL_PDF,2,0.75; +xi_p,0.8684,0.3,0.95,BETA_PDF,0.75,0.05; +xi_e,0.5724,0.1,0.95,BETA_PDF,0.5,0.15; +gamma_w,0.6202,0.1,0.99,BETA_PDF,0.75,0.15; +gamma_p,0.6638,0.1,0.99,BETA_PDF,0.75,0.15; +czcap,0.2516,0.01,2,NORMAL_PDF,0.2,0.075; +phi_y,1.3011,1.001,2,NORMAL_PDF,1.45,0.125; +r_pie,1.4616,1.2,2,NORMAL_PDF,1.7,0.1; +r_dpi,0.1144,0.01,0.5,NORMAL_PDF,0.3,0.1; +rho,0.8865,0.5,0.99,BETA_PDF,0.8,0.10; +r_y,0.0571,0.01,0.2,NORMAL_PDF,0.125,0.05; +r_dy,0.2228,0.05,0.5,NORMAL_PDF,0.0625,0.05; +end; + +varobs Y C I E PIE W R; + +//estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118, lik_init=2, mode_compute=1,mh_replic=0); +estimation(datafile=rawdata_euromodel_1,presample=40, first_obs=1, nobs=118,mh_jscale=0.2,mh_replic=150000, mode_check); // + + +//stoch_simul(periods=200,irf=20,simul_seed=3) Y C PIE R W R_K L Q I K ; + diff --git a/mex/sources/k_order_perturbation/tests/fs2000k.mod b/mex/sources/k_order_perturbation/tests/fs2000k.mod index 731a946c7..850b1f938 100644 --- a/mex/sources/k_order_perturbation/tests/fs2000k.mod +++ b/mex/sources/k_order_perturbation/tests/fs2000k.mod @@ -1,119 +1,119 @@ -// This file replicates the estimation of the CIA model from -// Frank Schorfheide (2000) "Loss function-based evaluation of DSGE models" -// Journal of Applied Econometrics, 15, 645-670. -// the data are the ones provided on Schorfheide's web site with the programs. -// http://www.econ.upenn.edu/~schorf/programs/dsgesel.ZIP -// You need to have fsdat.m in the same directory as this file. -// This file replicates: -// -the posterior mode as computed by Frank's Gauss programs -// -the parameter mean posterior estimates reported in the paper -// -the model probability (harmonic mean) reported in the paper -// This file was tested with dyn_mat_test_0218.zip -// the smooth shocks are probably stil buggy -// -// The equations are taken from J. Nason and T. Cogley (1994) -// "Testing the implications of long-run neutrality for monetary business -// cycle models" Journal of Applied Econometrics, 9, S37-S70. -// Note that there is an initial minus sign missing in equation (A1), p. S63. -// -// Michel Juillard, February 2004 -// Modified for testing k_order_perturbation by GP, Jan-Feb 09 - -options_.usePartInfo=0; -options_.use_k_order=0; - -//var m m_1 P P_1 c e W R k d n l gy_obs gp_obs Y_obs P_obs y dA P2 c2; -var m m_1 P P_1 c e W R k d n l gy_obs gp_obs y dA P2 c2; -varexo e_a e_m; - -parameters alp bet gam mst rho psi del; - -alp = 0.33; -bet = 0.99; -gam = 0.003; -mst = 1.011; -rho = 0.7; -psi = 0.787; -del = 0.02; - -model (use_dll); -dA = exp(gam+e_a); -log(m) = (1-rho)*log(mst) + rho*log(m_1(-1))+e_m; --P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c2(+1)*P2(+1)*m(+1))=0; -W = l/n; --(psi/(1-psi))*(c*P/(1-n))+l/n = 0; -R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W; -1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0; -c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1); -P*c = m; -m-1+d = l; -e = exp(e_a); -y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a)); -gy_obs = dA*y/y(-1); -gp_obs = (P/P_1(-1))*m_1(-1)/dA; -//Y_obs/Y_obs(-1) = gy_obs; -//P_obs/P_obs(-1) = gp_obs; -P2 = P(+1); -c2 = c(+1); -m_1 = m; -P_1 = P; -end; - -initval; -m = mst; -m_1=mst; -P = 2.25; -P_1 = 2.25; -c = 0.45; -e = 1; -W = 4; -R = 1.02; -k = 6; -d = 0.85; -n = 0.19; -l = 0.86; -y = 0.6; -gy_obs = exp(gam); -gp_obs = exp(-gam); -dA = exp(gam); - P2=P; - c2=c; -end; - -shocks; -var e_a; stderr 0.014; -var e_m; stderr 0.005; -end; - -//unit_root_vars P_obs Y_obs; - -steady(solve_algo = 2); - -check; - -estimated_params; -alp, beta_pdf, 0.356, 0.02; -bet, beta_pdf, 0.993, 0.002; -gam, normal_pdf, 0.0085, 0.003; -mst, normal_pdf, 1.0002, 0.007; -rho, beta_pdf, 0.129, 0.223; -psi, beta_pdf, 0.65, 0.05; -del, beta_pdf, 0.01, 0.005; -stderr e_a, inv_gamma_pdf, 0.035449, inf; -stderr e_m, inv_gamma_pdf, 0.008862, inf; -end; - -//varobs P_obs Y_obs; -varobs gp_obs gy_obs; - -steady(solve_algo = 2); - -//observation_trends; -//P_obs (log(mst)-gam); -//Y_obs (gam); -//end; - -//options_.useAIM = 1; -estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=2000, - mode_compute=4,mh_nblocks=2,mh_drop=0.45,mh_jscale=0.65); - +// This file replicates the estimation of the CIA model from +// Frank Schorfheide (2000) "Loss function-based evaluation of DSGE models" +// Journal of Applied Econometrics, 15, 645-670. +// the data are the ones provided on Schorfheide's web site with the programs. +// http://www.econ.upenn.edu/~schorf/programs/dsgesel.ZIP +// You need to have fsdat.m in the same directory as this file. +// This file replicates: +// -the posterior mode as computed by Frank's Gauss programs +// -the parameter mean posterior estimates reported in the paper +// -the model probability (harmonic mean) reported in the paper +// This file was tested with dyn_mat_test_0218.zip +// the smooth shocks are probably stil buggy +// +// The equations are taken from J. Nason and T. Cogley (1994) +// "Testing the implications of long-run neutrality for monetary business +// cycle models" Journal of Applied Econometrics, 9, S37-S70. +// Note that there is an initial minus sign missing in equation (A1), p. S63. +// +// Michel Juillard, February 2004 +// Modified for testing k_order_perturbation by GP, Jan-Feb 09 + +options_.usePartInfo=0; +options_.use_k_order=0; + +//var m m_1 P P_1 c e W R k d n l gy_obs gp_obs Y_obs P_obs y dA P2 c2; +var m m_1 P P_1 c e W R k d n l gy_obs gp_obs y dA P2 c2; +varexo e_a e_m; + +parameters alp bet gam mst rho psi del; + +alp = 0.33; +bet = 0.99; +gam = 0.003; +mst = 1.011; +rho = 0.7; +psi = 0.787; +del = 0.02; + +model (use_dll); +dA = exp(gam+e_a); +log(m) = (1-rho)*log(mst) + rho*log(m_1(-1))+e_m; +-P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c2(+1)*P2(+1)*m(+1))=0; +W = l/n; +-(psi/(1-psi))*(c*P/(1-n))+l/n = 0; +R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W; +1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0; +c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1); +P*c = m; +m-1+d = l; +e = exp(e_a); +y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a)); +gy_obs = dA*y/y(-1); +gp_obs = (P/P_1(-1))*m_1(-1)/dA; +//Y_obs/Y_obs(-1) = gy_obs; +//P_obs/P_obs(-1) = gp_obs; +P2 = P(+1); +c2 = c(+1); +m_1 = m; +P_1 = P; +end; + +initval; +m = mst; +m_1=mst; +P = 2.25; +P_1 = 2.25; +c = 0.45; +e = 1; +W = 4; +R = 1.02; +k = 6; +d = 0.85; +n = 0.19; +l = 0.86; +y = 0.6; +gy_obs = exp(gam); +gp_obs = exp(-gam); +dA = exp(gam); + P2=P; + c2=c; +end; + +shocks; +var e_a; stderr 0.014; +var e_m; stderr 0.005; +end; + +//unit_root_vars P_obs Y_obs; + +steady(solve_algo = 2); + +check; + +estimated_params; +alp, beta_pdf, 0.356, 0.02; +bet, beta_pdf, 0.993, 0.002; +gam, normal_pdf, 0.0085, 0.003; +mst, normal_pdf, 1.0002, 0.007; +rho, beta_pdf, 0.129, 0.223; +psi, beta_pdf, 0.65, 0.05; +del, beta_pdf, 0.01, 0.005; +stderr e_a, inv_gamma_pdf, 0.035449, inf; +stderr e_m, inv_gamma_pdf, 0.008862, inf; +end; + +//varobs P_obs Y_obs; +varobs gp_obs gy_obs; + +steady(solve_algo = 2); + +//observation_trends; +//P_obs (log(mst)-gam); +//Y_obs (gam); +//end; + +//options_.useAIM = 1; +estimation(datafile=fsdat,nobs=192,loglinear,mh_replic=2000, + mode_compute=4,mh_nblocks=2,mh_drop=0.45,mh_jscale=0.65); + diff --git a/tests/AIM/data_ca1.m b/tests/AIM/data_ca1.m index b0b4f0546..c28fae1a2 100644 --- a/tests/AIM/data_ca1.m +++ b/tests/AIM/data_ca1.m @@ -1,100 +1,100 @@ -data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... --0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... --0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... --0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... --0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... --0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... --0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... -1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... -2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... -1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... -1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... -1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... -1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... -0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... -1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... -1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... -0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... -1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... -1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... --0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... -0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... -0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... --0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... -2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... -1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... -1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... -1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... -1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... -1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... -0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... -0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... -1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... -0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... -0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... -0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... -0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... --0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... --0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... --0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... --1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... -0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... -0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... -0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... --0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... -0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... -0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... -0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... -0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... -0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... -0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... -0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... -1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... -1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... -1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... -0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... -0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... --0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... -0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... -0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... -0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... -0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... -1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... -0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... -0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... -1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... -1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... -0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... -1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... -0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... -1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... -1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... -1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... -1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... -1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... -1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... -1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... -0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... -1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... -0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... -0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... -0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... --0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... -0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... -1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... -1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... -0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... -]; - -data = reshape(data,5,86)'; -y_obs = data(:,1); -pie_obs = data(:,2); -R_obs = data(:,3); -de = data(:,4); -dq = data(:,5); - -%Country: Canada -%Sample Range: 1981:2 to 2002:3 -%Observations: 86 -%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], -% Exchange Rate Change [%], Terms of Trade Change [%] +data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... +-0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... +-0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... +-0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... +-0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... +-0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... +-0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... +1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... +2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... +1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... +1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... +1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... +1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... +0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... +1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... +1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... +0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... +1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... +1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... +-0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... +0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... +0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... +-0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... +2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... +1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... +1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... +1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... +1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... +1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... +0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... +0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... +1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... +0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... +0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... +0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... +0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... +-0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... +-0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... +-0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... +-1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... +0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... +0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... +0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... +-0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... +0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... +0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... +0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... +0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... +0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... +0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... +0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... +1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... +1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... +1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... +0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... +0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... +-0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... +0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... +0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... +0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... +0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... +1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... +0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... +0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... +1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... +1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... +0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... +1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... +0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... +1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... +1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... +1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... +1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... +1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... +1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... +1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... +0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... +1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... +0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... +0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... +0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... +-0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... +0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... +1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... +1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... +0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... +]; + +data = reshape(data,5,86)'; +y_obs = data(:,1); +pie_obs = data(:,2); +R_obs = data(:,3); +de = data(:,4); +dq = data(:,5); + +%Country: Canada +%Sample Range: 1981:2 to 2002:3 +%Observations: 86 +%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], +% Exchange Rate Change [%], Terms of Trade Change [%] diff --git a/tests/AIM/fs2000_b1L1L_AIM_steadystate.m b/tests/AIM/fs2000_b1L1L_AIM_steadystate.m index 3d427d7d1..eea49707d 100644 --- a/tests/AIM/fs2000_b1L1L_AIM_steadystate.m +++ b/tests/AIM/fs2000_b1L1L_AIM_steadystate.m @@ -1,65 +1,65 @@ -% computes the steady state of fs2000 analyticaly -% largely inspired by the program of F. Schorfheide -function [ys,check] = fs2000k_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; - - P2=P; - c2=c; - - ys =[ - m - P - c - e - W - R - k - d - n - l - gy_obs - gp_obs - Y_obs - P_obs - y - dA - P2 +% computes the steady state of fs2000 analyticaly +% largely inspired by the program of F. Schorfheide +function [ys,check] = fs2000k_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; + + P2=P; + c2=c; + + ys =[ + m + P + c + e + W + R + k + d + n + l + gy_obs + gp_obs + Y_obs + P_obs + y + dA + P2 c2 ]; \ No newline at end of file diff --git a/tests/AIM/fs2000_b1L1L_steadystate.m b/tests/AIM/fs2000_b1L1L_steadystate.m index 3d427d7d1..eea49707d 100644 --- a/tests/AIM/fs2000_b1L1L_steadystate.m +++ b/tests/AIM/fs2000_b1L1L_steadystate.m @@ -1,65 +1,65 @@ -% computes the steady state of fs2000 analyticaly -% largely inspired by the program of F. Schorfheide -function [ys,check] = fs2000k_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; - - P2=P; - c2=c; - - ys =[ - m - P - c - e - W - R - k - d - n - l - gy_obs - gp_obs - Y_obs - P_obs - y - dA - P2 +% computes the steady state of fs2000 analyticaly +% largely inspired by the program of F. Schorfheide +function [ys,check] = fs2000k_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; + + P2=P; + c2=c; + + ys =[ + m + P + c + e + W + R + k + d + n + l + gy_obs + gp_obs + Y_obs + P_obs + y + dA + P2 c2 ]; \ No newline at end of file diff --git a/tests/AIM/fsdat.m b/tests/AIM/fsdat.m index 5a0e3658d..aba209b90 100644 --- a/tests/AIM/fsdat.m +++ b/tests/AIM/fsdat.m @@ -1,210 +1,210 @@ -data_q = [ -18.02 1474.5 150.2 -17.94 1538.2 150.9 -18.01 1584.5 151.4 -18.42 1644.1 152 -18.73 1678.6 152.7 -19.46 1693.1 153.3 -19.55 1724 153.9 -19.56 1758.2 154.7 -19.79 1760.6 155.4 -19.77 1779.2 156 -19.82 1778.8 156.6 -20.03 1790.9 157.3 -20.12 1846 158 -20.1 1882.6 158.6 -20.14 1897.3 159.2 -20.22 1887.4 160 -20.27 1858.2 160.7 -20.34 1849.9 161.4 -20.39 1848.5 162 -20.42 1868.9 162.8 -20.47 1905.6 163.6 -20.56 1959.6 164.3 -20.62 1994.4 164.9 -20.78 2020.1 165.7 -21 2030.5 166.5 -21.2 2023.6 167.2 -21.33 2037.7 167.9 -21.62 2033.4 168.7 -21.71 2066.2 169.5 -22.01 2077.5 170.2 -22.15 2071.9 170.9 -22.27 2094 171.7 -22.29 2070.8 172.5 -22.56 2012.6 173.1 -22.64 2024.7 173.8 -22.77 2072.3 174.5 -22.88 2120.6 175.3 -22.92 2165 176.045 -22.91 2223.3 176.727 -22.94 2221.4 177.481 -23.03 2230.95 178.268 -23.13 2279.22 179.694 -23.22 2265.48 180.335 -23.32 2268.29 181.094 -23.4 2238.57 181.915 -23.45 2251.68 182.634 -23.51 2292.02 183.337 -23.56 2332.61 184.103 -23.63 2381.01 184.894 -23.75 2422.59 185.553 -23.81 2448.01 186.203 -23.87 2471.86 186.926 -23.94 2476.67 187.68 -24 2508.7 188.299 -24.07 2538.05 188.906 -24.12 2586.26 189.631 -24.29 2604.62 190.362 -24.35 2666.69 190.954 -24.41 2697.54 191.56 -24.52 2729.63 192.256 -24.64 2739.75 192.938 -24.77 2808.88 193.467 -24.88 2846.34 193.994 -25.01 2898.79 194.647 -25.17 2970.48 195.279 -25.32 3042.35 195.763 -25.53 3055.53 196.277 -25.79 3076.51 196.877 -26.02 3102.36 197.481 -26.14 3127.15 197.967 -26.31 3129.53 198.455 -26.6 3154.19 199.012 -26.9 3177.98 199.572 -27.21 3236.18 199.995 -27.49 3292.07 200.452 -27.75 3316.11 200.997 -28.12 3331.22 201.538 -28.39 3381.86 201.955 -28.73 3390.23 202.419 -29.14 3409.65 202.986 -29.51 3392.6 203.584 -29.94 3386.49 204.086 -30.36 3391.61 204.721 -30.61 3422.95 205.419 -31.02 3389.36 206.13 -31.5 3481.4 206.763 -31.93 3500.95 207.362 -32.27 3523.8 208 -32.54 3533.79 208.642 -33.02 3604.73 209.142 -33.2 3687.9 209.637 -33.49 3726.18 210.181 -33.95 3790.44 210.737 -34.36 3892.22 211.192 -34.94 3919.01 211.663 -35.61 3907.08 212.191 -36.29 3947.11 212.708 -37.01 3908.15 213.144 -37.79 3922.57 213.602 -38.96 3879.98 214.147 -40.13 3854.13 214.7 -41.05 3800.93 215.135 -41.66 3835.21 215.652 -42.41 3907.02 216.289 -43.19 3952.48 216.848 -43.69 4044.59 217.314 -44.15 4072.19 217.776 -44.77 4088.49 218.338 -45.57 4126.39 218.917 -46.32 4176.28 219.427 -47.07 4260.08 219.956 -47.66 4329.46 220.573 -48.63 4328.33 221.201 -49.42 4345.51 221.719 -50.41 4510.73 222.281 -51.27 4552.14 222.933 -52.35 4603.65 223.583 -53.51 4605.65 224.152 -54.65 4615.64 224.737 -55.82 4644.93 225.418 -56.92 4656.23 226.117 -58.18 4678.96 226.754 -59.55 4566.62 227.389 -61.01 4562.25 228.07 -62.59 4651.86 228.689 -64.15 4739.16 229.155 -65.37 4696.82 229.674 -66.65 4753.02 230.301 -67.87 4693.76 230.903 -68.86 4615.89 231.395 -69.72 4634.88 231.906 -70.66 4612.08 232.498 -71.44 4618.26 233.074 -72.08 4662.97 233.546 -72.83 4763.57 234.028 -73.48 4849 234.603 -74.19 4939.23 235.153 -75.02 5053.56 235.605 -75.58 5132.87 236.082 -76.25 5170.34 236.657 -76.81 5203.68 237.232 -77.63 5257.26 237.673 -78.25 5283.73 238.176 -78.76 5359.6 238.789 -79.45 5393.57 239.387 -79.81 5460.83 239.861 -80.22 5466.95 240.368 -80.84 5496.29 240.962 -81.45 5526.77 241.539 -82.09 5561.8 242.009 -82.68 5618 242.52 -83.33 5667.39 243.12 -84.09 5750.57 243.721 -84.67 5785.29 244.208 -85.56 5844.05 244.716 -86.66 5878.7 245.354 -87.44 5952.83 245.966 -88.45 6010.96 246.46 -89.39 6055.61 247.017 -90.13 6087.96 247.698 -90.88 6093.51 248.374 -92 6152.59 248.928 -93.18 6171.57 249.564 -94.14 6142.1 250.299 -95.11 6078.96 251.031 -96.27 6047.49 251.65 -97 6074.66 252.295 -97.7 6090.14 253.033 -98.31 6105.25 253.743 -99.13 6175.69 254.338 -99.79 6214.22 255.032 -100.17 6260.74 255.815 -100.88 6327.12 256.543 -101.84 6327.93 257.151 -102.35 6359.9 257.785 -102.83 6393.5 258.516 -103.51 6476.86 259.191 -104.13 6524.5 259.738 -104.71 6600.31 260.351 -105.39 6629.47 261.04 -106.09 6688.61 261.692 -106.75 6717.46 262.236 -107.24 6724.2 262.847 -107.75 6779.53 263.527 -108.29 6825.8 264.169 -108.91 6882 264.681 -109.24 6983.91 265.258 -109.74 7020 265.887 -110.23 7093.12 266.491 -111 7166.68 266.987 -111.43 7236.5 267.545 -111.76 7311.24 268.171 -112.08 7364.63 268.815 -]; -%GDPD GDPQ GPOP - -series = zeros(193,2); -series(:,2) = data_q(:,1); -series(:,1) = 1000*data_q(:,2)./data_q(:,3); - -Y_obs = series(:,1); -P_obs = series(:,2); - -series = series(2:193,:)./series(1:192,:); - -gy_obs = series(:,1); -gp_obs = series(:,2); - +data_q = [ +18.02 1474.5 150.2 +17.94 1538.2 150.9 +18.01 1584.5 151.4 +18.42 1644.1 152 +18.73 1678.6 152.7 +19.46 1693.1 153.3 +19.55 1724 153.9 +19.56 1758.2 154.7 +19.79 1760.6 155.4 +19.77 1779.2 156 +19.82 1778.8 156.6 +20.03 1790.9 157.3 +20.12 1846 158 +20.1 1882.6 158.6 +20.14 1897.3 159.2 +20.22 1887.4 160 +20.27 1858.2 160.7 +20.34 1849.9 161.4 +20.39 1848.5 162 +20.42 1868.9 162.8 +20.47 1905.6 163.6 +20.56 1959.6 164.3 +20.62 1994.4 164.9 +20.78 2020.1 165.7 +21 2030.5 166.5 +21.2 2023.6 167.2 +21.33 2037.7 167.9 +21.62 2033.4 168.7 +21.71 2066.2 169.5 +22.01 2077.5 170.2 +22.15 2071.9 170.9 +22.27 2094 171.7 +22.29 2070.8 172.5 +22.56 2012.6 173.1 +22.64 2024.7 173.8 +22.77 2072.3 174.5 +22.88 2120.6 175.3 +22.92 2165 176.045 +22.91 2223.3 176.727 +22.94 2221.4 177.481 +23.03 2230.95 178.268 +23.13 2279.22 179.694 +23.22 2265.48 180.335 +23.32 2268.29 181.094 +23.4 2238.57 181.915 +23.45 2251.68 182.634 +23.51 2292.02 183.337 +23.56 2332.61 184.103 +23.63 2381.01 184.894 +23.75 2422.59 185.553 +23.81 2448.01 186.203 +23.87 2471.86 186.926 +23.94 2476.67 187.68 +24 2508.7 188.299 +24.07 2538.05 188.906 +24.12 2586.26 189.631 +24.29 2604.62 190.362 +24.35 2666.69 190.954 +24.41 2697.54 191.56 +24.52 2729.63 192.256 +24.64 2739.75 192.938 +24.77 2808.88 193.467 +24.88 2846.34 193.994 +25.01 2898.79 194.647 +25.17 2970.48 195.279 +25.32 3042.35 195.763 +25.53 3055.53 196.277 +25.79 3076.51 196.877 +26.02 3102.36 197.481 +26.14 3127.15 197.967 +26.31 3129.53 198.455 +26.6 3154.19 199.012 +26.9 3177.98 199.572 +27.21 3236.18 199.995 +27.49 3292.07 200.452 +27.75 3316.11 200.997 +28.12 3331.22 201.538 +28.39 3381.86 201.955 +28.73 3390.23 202.419 +29.14 3409.65 202.986 +29.51 3392.6 203.584 +29.94 3386.49 204.086 +30.36 3391.61 204.721 +30.61 3422.95 205.419 +31.02 3389.36 206.13 +31.5 3481.4 206.763 +31.93 3500.95 207.362 +32.27 3523.8 208 +32.54 3533.79 208.642 +33.02 3604.73 209.142 +33.2 3687.9 209.637 +33.49 3726.18 210.181 +33.95 3790.44 210.737 +34.36 3892.22 211.192 +34.94 3919.01 211.663 +35.61 3907.08 212.191 +36.29 3947.11 212.708 +37.01 3908.15 213.144 +37.79 3922.57 213.602 +38.96 3879.98 214.147 +40.13 3854.13 214.7 +41.05 3800.93 215.135 +41.66 3835.21 215.652 +42.41 3907.02 216.289 +43.19 3952.48 216.848 +43.69 4044.59 217.314 +44.15 4072.19 217.776 +44.77 4088.49 218.338 +45.57 4126.39 218.917 +46.32 4176.28 219.427 +47.07 4260.08 219.956 +47.66 4329.46 220.573 +48.63 4328.33 221.201 +49.42 4345.51 221.719 +50.41 4510.73 222.281 +51.27 4552.14 222.933 +52.35 4603.65 223.583 +53.51 4605.65 224.152 +54.65 4615.64 224.737 +55.82 4644.93 225.418 +56.92 4656.23 226.117 +58.18 4678.96 226.754 +59.55 4566.62 227.389 +61.01 4562.25 228.07 +62.59 4651.86 228.689 +64.15 4739.16 229.155 +65.37 4696.82 229.674 +66.65 4753.02 230.301 +67.87 4693.76 230.903 +68.86 4615.89 231.395 +69.72 4634.88 231.906 +70.66 4612.08 232.498 +71.44 4618.26 233.074 +72.08 4662.97 233.546 +72.83 4763.57 234.028 +73.48 4849 234.603 +74.19 4939.23 235.153 +75.02 5053.56 235.605 +75.58 5132.87 236.082 +76.25 5170.34 236.657 +76.81 5203.68 237.232 +77.63 5257.26 237.673 +78.25 5283.73 238.176 +78.76 5359.6 238.789 +79.45 5393.57 239.387 +79.81 5460.83 239.861 +80.22 5466.95 240.368 +80.84 5496.29 240.962 +81.45 5526.77 241.539 +82.09 5561.8 242.009 +82.68 5618 242.52 +83.33 5667.39 243.12 +84.09 5750.57 243.721 +84.67 5785.29 244.208 +85.56 5844.05 244.716 +86.66 5878.7 245.354 +87.44 5952.83 245.966 +88.45 6010.96 246.46 +89.39 6055.61 247.017 +90.13 6087.96 247.698 +90.88 6093.51 248.374 +92 6152.59 248.928 +93.18 6171.57 249.564 +94.14 6142.1 250.299 +95.11 6078.96 251.031 +96.27 6047.49 251.65 +97 6074.66 252.295 +97.7 6090.14 253.033 +98.31 6105.25 253.743 +99.13 6175.69 254.338 +99.79 6214.22 255.032 +100.17 6260.74 255.815 +100.88 6327.12 256.543 +101.84 6327.93 257.151 +102.35 6359.9 257.785 +102.83 6393.5 258.516 +103.51 6476.86 259.191 +104.13 6524.5 259.738 +104.71 6600.31 260.351 +105.39 6629.47 261.04 +106.09 6688.61 261.692 +106.75 6717.46 262.236 +107.24 6724.2 262.847 +107.75 6779.53 263.527 +108.29 6825.8 264.169 +108.91 6882 264.681 +109.24 6983.91 265.258 +109.74 7020 265.887 +110.23 7093.12 266.491 +111 7166.68 266.987 +111.43 7236.5 267.545 +111.76 7311.24 268.171 +112.08 7364.63 268.815 +]; +%GDPD GDPQ GPOP + +series = zeros(193,2); +series(:,2) = data_q(:,1); +series(:,1) = 1000*data_q(:,2)./data_q(:,3); + +Y_obs = series(:,1); +P_obs = series(:,2); + +series = series(2:193,:)./series(1:192,:); + +gy_obs = series(:,1); +gp_obs = series(:,2); + ti = [1950:0.25:1997.75]; \ No newline at end of file diff --git a/tests/block_bytecode/example1_varexo_det_bytecode.mod b/tests/block_bytecode/example1_varexo_det_bytecode.mod index e567161f9..7bad4480c 100644 --- a/tests/block_bytecode/example1_varexo_det_bytecode.mod +++ b/tests/block_bytecode/example1_varexo_det_bytecode.mod @@ -1,58 +1,58 @@ -// Test for varexo_det and forecast command at order 1 - -var y, c, k, a, h, b; -varexo e,u; -varexo_det ahat, bhat; - -parameters beta, rho, alpha, delta, theta, psi, tau; - -alpha = 0.36; -rho = 0.95; -tau = 0.025; -beta = 0.99; -delta = 0.025; -psi = 0; -theta = 2.95; - -phi = 0.1; - -//model(bytecode); -model; -c*theta*h^(1+psi)=(1-alpha)*y; -k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1))) - *(exp(b(+1))*alpha*y(+1)+(1-delta)*k)); -y = exp(a)*(k(-1)^alpha)*(h^(1-alpha)); -k = exp(b)*(y-c)+(1-delta)*k(-1); -a = ahat+ rho*a(-1)+tau*b(-1) + e; -b = bhat+ tau*a(-1)+rho*b(-1) + u; -end; - -initval; -y = 1.08068253095672; -c = 0.80359242014163; -h = 0.29175631001732; -k = 5; -a = 0; -b = 0; -e = 0; -u = 0; -ahat = 0; -bhat = 0; -end; - -//simul(periods=20); -shocks; -var e; stderr 0.009; -var u; stderr 0.009; -var e, u = phi*0.009*0.009; -var ahat; -periods 1; -values 0.1; -var bhat; -periods 2; -values 0.2; -end; - -stoch_simul(order=1,irf=0,noprint); - -forecast(periods=20); +// Test for varexo_det and forecast command at order 1 + +var y, c, k, a, h, b; +varexo e,u; +varexo_det ahat, bhat; + +parameters beta, rho, alpha, delta, theta, psi, tau; + +alpha = 0.36; +rho = 0.95; +tau = 0.025; +beta = 0.99; +delta = 0.025; +psi = 0; +theta = 2.95; + +phi = 0.1; + +//model(bytecode); +model; +c*theta*h^(1+psi)=(1-alpha)*y; +k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1))) + *(exp(b(+1))*alpha*y(+1)+(1-delta)*k)); +y = exp(a)*(k(-1)^alpha)*(h^(1-alpha)); +k = exp(b)*(y-c)+(1-delta)*k(-1); +a = ahat+ rho*a(-1)+tau*b(-1) + e; +b = bhat+ tau*a(-1)+rho*b(-1) + u; +end; + +initval; +y = 1.08068253095672; +c = 0.80359242014163; +h = 0.29175631001732; +k = 5; +a = 0; +b = 0; +e = 0; +u = 0; +ahat = 0; +bhat = 0; +end; + +//simul(periods=20); +shocks; +var e; stderr 0.009; +var u; stderr 0.009; +var e, u = phi*0.009*0.009; +var ahat; +periods 1; +values 0.1; +var bhat; +periods 2; +values 0.2; +end; + +stoch_simul(order=1,irf=0,noprint); + +forecast(periods=20); diff --git a/tests/dsge-var/dsgevar_forward_calibrated_lambda.mod b/tests/dsge-var/dsgevar_forward_calibrated_lambda.mod index 0f8639061..6ebf5c279 100644 --- a/tests/dsge-var/dsgevar_forward_calibrated_lambda.mod +++ b/tests/dsge-var/dsgevar_forward_calibrated_lambda.mod @@ -1,79 +1,79 @@ -//$ Declaration of the endogenous variables of the DSGE model. -var a g mc mrs n winf pie r rw y; - -//$ Declaration of the exogenous variables of the DSGE model. -varexo e_a e_g e_lam e_ms; - -//$ Declaration of the deep parameters -parameters invsig delta gam rho gampie gamy rhoa rhog bet - thetabig omega eps ; - -eps=6; -thetabig=2; -bet=0.99; -invsig=2.5; -gampie=1.5; -gamy=0.125; -gam=1; -delta=0.36; -omega=0.54; -rhoa=0.5; -rhog=0.5; -rho=0.5; - - -//$ Specification of the DSGE model used as a prior of the VAR model. -model(linear); - - y=y(+1)-(1/invsig)*(r-pie(+1)+g(+1)-g); - y=a+(1-delta)*n; - mc=rw+n-y; - mrs=invsig*y+gam*n-g; - r=rho*r(-1)+(1-rho)*(gampie*pie+gamy*y)+e_ms; - rw=rw(-1)+winf-pie; - a=rhoa*a(-1)+e_a; - g=rhog*g(-1)+e_g; - rw=mrs; - - //$ HYBRID PHILLIPS CURVED USED FOR THE SUMULATIONS: - // pie = (omega/(1+omega*bet))*pie(-1)+(bet/(1+omega*bet))*pie(1)+(1-delta)* - // (1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))/(1+omega*bet)*(mc+e_lam); - - //$ FORWARD LOOKING PHILLIPS CURVE: - pie=bet*pie(+1)+(1-delta)*(1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))*(mc+e_lam); -end; - - - -//$ Declaration of the prior beliefs about the deep parameters. -estimated_params; - stderr e_a, uniform_pdf,,,0,2; - stderr e_g, uniform_pdf,,,0,2; - stderr e_ms, uniform_pdf,,,0,2; - stderr e_lam, uniform_pdf,,,0,2; - - invsig, gamma_pdf, 2.5, 1.76; - gam, normal_pdf, 1, 0.5; - rho, uniform_pdf,,,0,1; - gampie, normal_pdf, 1.5, 0.25; - gamy, gamma_pdf, 0.125, 0.075; - rhoa, uniform_pdf,,,0,1; - rhog, uniform_pdf,,,0,1; - thetabig, gamma_pdf, 3, 1.42, 1, ; - - //$Parameter for the hybrid Phillips curve - //omega, uniform_pdf,,,0,1; - -end; - - -//$ Declaration of the observed endogenous variables. Note that they are the variables of the VAR (4 by default) and that we must -//$ have as many observed variables as exogenous variables. -varobs pie r rw y; - -options_.gradient_method = 3; - -//$ The option bayesian_irf triggers the computation of the DSGE-VAR and DSGE posterior distribution of the IRFs. -//$ The Dashed lines are the first, fifth (ie the median) and ninth posterior deciles of the DSGE-VAR's IRFs, the bold dark curve is the -//$ posterior median of the DSGE's IRfs and the shaded surface covers the space between the first and ninth posterior deciles of the DSGE's IRFs. -estimation(datafile=datarabanal_hybrid,first_obs=50,mh_nblocks = 1,nobs=90,dsge_var=.8,mode_compute=4,mh_replic=2000,bayesian_irf); +//$ Declaration of the endogenous variables of the DSGE model. +var a g mc mrs n winf pie r rw y; + +//$ Declaration of the exogenous variables of the DSGE model. +varexo e_a e_g e_lam e_ms; + +//$ Declaration of the deep parameters +parameters invsig delta gam rho gampie gamy rhoa rhog bet + thetabig omega eps ; + +eps=6; +thetabig=2; +bet=0.99; +invsig=2.5; +gampie=1.5; +gamy=0.125; +gam=1; +delta=0.36; +omega=0.54; +rhoa=0.5; +rhog=0.5; +rho=0.5; + + +//$ Specification of the DSGE model used as a prior of the VAR model. +model(linear); + + y=y(+1)-(1/invsig)*(r-pie(+1)+g(+1)-g); + y=a+(1-delta)*n; + mc=rw+n-y; + mrs=invsig*y+gam*n-g; + r=rho*r(-1)+(1-rho)*(gampie*pie+gamy*y)+e_ms; + rw=rw(-1)+winf-pie; + a=rhoa*a(-1)+e_a; + g=rhog*g(-1)+e_g; + rw=mrs; + + //$ HYBRID PHILLIPS CURVED USED FOR THE SUMULATIONS: + // pie = (omega/(1+omega*bet))*pie(-1)+(bet/(1+omega*bet))*pie(1)+(1-delta)* + // (1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))/(1+omega*bet)*(mc+e_lam); + + //$ FORWARD LOOKING PHILLIPS CURVE: + pie=bet*pie(+1)+(1-delta)*(1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))*(mc+e_lam); +end; + + + +//$ Declaration of the prior beliefs about the deep parameters. +estimated_params; + stderr e_a, uniform_pdf,,,0,2; + stderr e_g, uniform_pdf,,,0,2; + stderr e_ms, uniform_pdf,,,0,2; + stderr e_lam, uniform_pdf,,,0,2; + + invsig, gamma_pdf, 2.5, 1.76; + gam, normal_pdf, 1, 0.5; + rho, uniform_pdf,,,0,1; + gampie, normal_pdf, 1.5, 0.25; + gamy, gamma_pdf, 0.125, 0.075; + rhoa, uniform_pdf,,,0,1; + rhog, uniform_pdf,,,0,1; + thetabig, gamma_pdf, 3, 1.42, 1, ; + + //$Parameter for the hybrid Phillips curve + //omega, uniform_pdf,,,0,1; + +end; + + +//$ Declaration of the observed endogenous variables. Note that they are the variables of the VAR (4 by default) and that we must +//$ have as many observed variables as exogenous variables. +varobs pie r rw y; + +options_.gradient_method = 3; + +//$ The option bayesian_irf triggers the computation of the DSGE-VAR and DSGE posterior distribution of the IRFs. +//$ The Dashed lines are the first, fifth (ie the median) and ninth posterior deciles of the DSGE-VAR's IRFs, the bold dark curve is the +//$ posterior median of the DSGE's IRfs and the shaded surface covers the space between the first and ninth posterior deciles of the DSGE's IRFs. +estimation(datafile=datarabanal_hybrid,first_obs=50,mh_nblocks = 1,nobs=90,dsge_var=.8,mode_compute=4,mh_replic=2000,bayesian_irf); diff --git a/tests/dsge-var/dsgevar_forward_estimated_lambda.mod b/tests/dsge-var/dsgevar_forward_estimated_lambda.mod index f9ae240a0..a0da9f718 100644 --- a/tests/dsge-var/dsgevar_forward_estimated_lambda.mod +++ b/tests/dsge-var/dsgevar_forward_estimated_lambda.mod @@ -1,80 +1,80 @@ -//$ Declaration of the endogenous variables of the DSGE model. -var a g mc mrs n winf pie r rw y; - -//$ Declaration of the exogenous variables of the DSGE model. -varexo e_a e_g e_lam e_ms; - -//$ Declaration of the deep parameters and of dsge_prior_weight -parameters invsig delta gam rho gampie gamy rhoa rhog bet - thetabig omega eps ; - -eps=6; -thetabig=2; -bet=0.99; -invsig=2.5; -gampie=1.5; -gamy=0.125; -gam=1; -delta=0.36; -omega=0.54; -rhoa=0.5; -rhog=0.5; -rho=0.5; - - -//$ Specification of the DSGE model used as a prior of the VAR model. -model(linear); - - y=y(+1)-(1/invsig)*(r-pie(+1)+g(+1)-g); - y=a+(1-delta)*n; - mc=rw+n-y; - mrs=invsig*y+gam*n-g; - r=rho*r(-1)+(1-rho)*(gampie*pie+gamy*y)+e_ms; - rw=rw(-1)+winf-pie; - a=rhoa*a(-1)+e_a; - g=rhog*g(-1)+e_g; - rw=mrs; - - //$ HYBRID PHILLIPS CURVED USED FOR THE SUMULATIONS: - // pie = (omega/(1+omega*bet))*pie(-1)+(bet/(1+omega*bet))*pie(1)+(1-delta)* - // (1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))/(1+omega*bet)*(mc+e_lam); - - //$ FORWARD LOOKING PHILLIPS CURVE: - pie=bet*pie(+1)+(1-delta)*(1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))*(mc+e_lam); -end; - - - -//$ Declaration of the prior beliefs about the deep parameters and the weight of the DSGE prior. -estimated_params; - stderr e_a, uniform_pdf,,,0,2; - stderr e_g, uniform_pdf,,,0,2; - stderr e_ms, uniform_pdf,,,0,2; - stderr e_lam, uniform_pdf,,,0,2; - - invsig, gamma_pdf, 2.5, 1.76; - gam, normal_pdf, 1, 0.5; - rho, uniform_pdf,,,0,1; - gampie, normal_pdf, 1.5, 0.25; - gamy, gamma_pdf, 0.125, 0.075; - rhoa, uniform_pdf,,,0,1; - rhog, uniform_pdf,,,0,1; - thetabig, gamma_pdf, 3, 1.42, 1, ; - - //$Parameter for the hybrid Phillips curve - //omega, uniform_pdf,,,0,1; - - dsge_prior_weight, uniform_pdf,,,0,1.9; -end; - - -//$ Declaration of the observed endogenous variables. Note that they are the variables of the VAR (4 by default) and that we must -//$ have as many observed variables as exogenous variables. -varobs pie r rw y; - -options_.gradient_method = 3; - -//$ The option bayesian_irf triggers the computation of the DSGE-VAR and DSGE posterior distribution of the IRFs. -//$ The Dashed lines are the first, fifth (ie the median) and ninth posterior deciles of the DSGE-VAR's IRFs, the bold dark curve is the -//$ posterior median of the DSGE's IRfs and the shaded surface covers the space between the first and ninth posterior deciles of the DSGE's IRFs. -estimation(datafile=datarabanal_hybrid,first_obs=50,mh_nblocks = 1,nobs=90,dsge_var,mode_compute=4,mh_replic=2000,bayesian_irf); +//$ Declaration of the endogenous variables of the DSGE model. +var a g mc mrs n winf pie r rw y; + +//$ Declaration of the exogenous variables of the DSGE model. +varexo e_a e_g e_lam e_ms; + +//$ Declaration of the deep parameters and of dsge_prior_weight +parameters invsig delta gam rho gampie gamy rhoa rhog bet + thetabig omega eps ; + +eps=6; +thetabig=2; +bet=0.99; +invsig=2.5; +gampie=1.5; +gamy=0.125; +gam=1; +delta=0.36; +omega=0.54; +rhoa=0.5; +rhog=0.5; +rho=0.5; + + +//$ Specification of the DSGE model used as a prior of the VAR model. +model(linear); + + y=y(+1)-(1/invsig)*(r-pie(+1)+g(+1)-g); + y=a+(1-delta)*n; + mc=rw+n-y; + mrs=invsig*y+gam*n-g; + r=rho*r(-1)+(1-rho)*(gampie*pie+gamy*y)+e_ms; + rw=rw(-1)+winf-pie; + a=rhoa*a(-1)+e_a; + g=rhog*g(-1)+e_g; + rw=mrs; + + //$ HYBRID PHILLIPS CURVED USED FOR THE SUMULATIONS: + // pie = (omega/(1+omega*bet))*pie(-1)+(bet/(1+omega*bet))*pie(1)+(1-delta)* + // (1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))/(1+omega*bet)*(mc+e_lam); + + //$ FORWARD LOOKING PHILLIPS CURVE: + pie=bet*pie(+1)+(1-delta)*(1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))*(mc+e_lam); +end; + + + +//$ Declaration of the prior beliefs about the deep parameters and the weight of the DSGE prior. +estimated_params; + stderr e_a, uniform_pdf,,,0,2; + stderr e_g, uniform_pdf,,,0,2; + stderr e_ms, uniform_pdf,,,0,2; + stderr e_lam, uniform_pdf,,,0,2; + + invsig, gamma_pdf, 2.5, 1.76; + gam, normal_pdf, 1, 0.5; + rho, uniform_pdf,,,0,1; + gampie, normal_pdf, 1.5, 0.25; + gamy, gamma_pdf, 0.125, 0.075; + rhoa, uniform_pdf,,,0,1; + rhog, uniform_pdf,,,0,1; + thetabig, gamma_pdf, 3, 1.42, 1, ; + + //$Parameter for the hybrid Phillips curve + //omega, uniform_pdf,,,0,1; + + dsge_prior_weight, uniform_pdf,,,0,1.9; +end; + + +//$ Declaration of the observed endogenous variables. Note that they are the variables of the VAR (4 by default) and that we must +//$ have as many observed variables as exogenous variables. +varobs pie r rw y; + +options_.gradient_method = 3; + +//$ The option bayesian_irf triggers the computation of the DSGE-VAR and DSGE posterior distribution of the IRFs. +//$ The Dashed lines are the first, fifth (ie the median) and ninth posterior deciles of the DSGE-VAR's IRFs, the bold dark curve is the +//$ posterior median of the DSGE's IRfs and the shaded surface covers the space between the first and ninth posterior deciles of the DSGE's IRFs. +estimation(datafile=datarabanal_hybrid,first_obs=50,mh_nblocks = 1,nobs=90,dsge_var,mode_compute=4,mh_replic=2000,bayesian_irf); diff --git a/tests/dsge-var/simul_hybrid.mod b/tests/dsge-var/simul_hybrid.mod index 130ec4b69..311d3f9d0 100644 --- a/tests/dsge-var/simul_hybrid.mod +++ b/tests/dsge-var/simul_hybrid.mod @@ -1,51 +1,51 @@ -var a g mc mrs n pie r rw winf y; -varexo e_a e_g e_lam e_ms; - -parameters invsig delta gam rho gampie gamy rhoa rhog bet - thetabig omega eps; - -eps=6; -thetabig=2; -bet=0.99; -invsig=2.5; -gampie=1.5; -gamy=0.125; -gam=1; -delta=0.36; -omega=0.54; -rhoa=0.5; -rhog=0.5; -rho=0.5; - - -model(linear); - y=y(+1)-(1/invsig)*(r-pie(+1)+g(+1)-g); - y=a+(1-delta)*n; - mc=rw+n-y; - mrs=invsig*y+gam*n-g; - r=rho*r(-1)+(1-rho)*(gampie*pie+gamy*y)+e_ms; - rw=rw(-1)+winf-pie; - a=rhoa*a(-1)+e_a; - g=rhog*g(-1)+e_g; - rw=mrs; - - // HYBRID PHILLIPS CURVED USED FOR THE SUMULATIONS: - pie = (omega/(1+omega*bet))*pie(-1)+(bet/(1+omega*bet))*pie(1)+(1-delta)* - (1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))/(1+omega*bet)*(mc+e_lam); - - // FORWARD LOOKING PHILLIPS CURVE: - // pie=bet*pie(+1)+(1-delta)*(1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))*(mc+e_lam); -end; - -shocks; -var e_a; stderr 1; -var e_g; stderr 1; -var e_ms; stderr 1; -var e_lam; stderr 1; -end; - -steady; -check; - -stoch_simul(periods=500,irf=0); +var a g mc mrs n pie r rw winf y; +varexo e_a e_g e_lam e_ms; + +parameters invsig delta gam rho gampie gamy rhoa rhog bet + thetabig omega eps; + +eps=6; +thetabig=2; +bet=0.99; +invsig=2.5; +gampie=1.5; +gamy=0.125; +gam=1; +delta=0.36; +omega=0.54; +rhoa=0.5; +rhog=0.5; +rho=0.5; + + +model(linear); + y=y(+1)-(1/invsig)*(r-pie(+1)+g(+1)-g); + y=a+(1-delta)*n; + mc=rw+n-y; + mrs=invsig*y+gam*n-g; + r=rho*r(-1)+(1-rho)*(gampie*pie+gamy*y)+e_ms; + rw=rw(-1)+winf-pie; + a=rhoa*a(-1)+e_a; + g=rhog*g(-1)+e_g; + rw=mrs; + + // HYBRID PHILLIPS CURVED USED FOR THE SUMULATIONS: + pie = (omega/(1+omega*bet))*pie(-1)+(bet/(1+omega*bet))*pie(1)+(1-delta)* + (1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))/(1+omega*bet)*(mc+e_lam); + + // FORWARD LOOKING PHILLIPS CURVE: + // pie=bet*pie(+1)+(1-delta)*(1-(1-1/thetabig)*bet)*(1-(1-1/thetabig))/((1-1/thetabig)*(1+delta*(eps-1)))*(mc+e_lam); +end; + +shocks; +var e_a; stderr 1; +var e_g; stderr 1; +var e_ms; stderr 1; +var e_lam; stderr 1; +end; + +steady; +check; + +stoch_simul(periods=500,irf=0); datatomfile('datarabanal_hybrid',[]); \ No newline at end of file diff --git a/tests/ep/linear.mod b/tests/ep/linear.mod index 5b4fe7122..afc64ca4c 100644 --- a/tests/ep/linear.mod +++ b/tests/ep/linear.mod @@ -1,45 +1,45 @@ -var y pie r; -varexo e_y e_pie; - -parameters delta sigma alpha kappa gamma1 gamma2; - -delta = 0.44; -kappa = 0.18; -alpha = 0.48; -sigma = -0.06; - -gamma1 = 1.5; -gamma2 = 0.5; - -model(use_dll); -y = delta * y(-1) + (1-delta)*y(+1)+sigma *(r - pie(+1)) + e_y; -pie = alpha * pie(-1) + (1-alpha) * pie(+1) + kappa*y + e_pie; -r = gamma1*pie+gamma2*y; -end; - -shocks; -var e_y; -stderr 0.63; -var e_pie; -stderr 0.4; -end; - -steady; - -options_.maxit_ = 100; -options_.ep.verbosity = 0; -options_.ep.stochastic.status = 0; -options_.ep.order = 0; -options_.ep.nnodes = 0; -options_.console_mode = 0; - -ts = extended_path([],100); - -options_.ep.stochastic.status = 1; -options_.ep.order = 1; -options_.ep.nnodes = 3; -sts = extended_path([],100); - -if max(max(abs(ts-sts))) > 1e-12 - error('extended path algorithm fails in ./tests/ep/linear.mod') +var y pie r; +varexo e_y e_pie; + +parameters delta sigma alpha kappa gamma1 gamma2; + +delta = 0.44; +kappa = 0.18; +alpha = 0.48; +sigma = -0.06; + +gamma1 = 1.5; +gamma2 = 0.5; + +model(use_dll); +y = delta * y(-1) + (1-delta)*y(+1)+sigma *(r - pie(+1)) + e_y; +pie = alpha * pie(-1) + (1-alpha) * pie(+1) + kappa*y + e_pie; +r = gamma1*pie+gamma2*y; +end; + +shocks; +var e_y; +stderr 0.63; +var e_pie; +stderr 0.4; +end; + +steady; + +options_.maxit_ = 100; +options_.ep.verbosity = 0; +options_.ep.stochastic.status = 0; +options_.ep.order = 0; +options_.ep.nnodes = 0; +options_.console_mode = 0; + +ts = extended_path([],100); + +options_.ep.stochastic.status = 1; +options_.ep.order = 1; +options_.ep.nnodes = 3; +sts = extended_path([],100); + +if max(max(abs(ts-sts))) > 1e-12 + error('extended path algorithm fails in ./tests/ep/linear.mod') end \ No newline at end of file diff --git a/tests/fs2000/fs2000a_steadystate.m b/tests/fs2000/fs2000a_steadystate.m index 4833e8b96..0692f23e0 100644 --- a/tests/fs2000/fs2000a_steadystate.m +++ b/tests/fs2000/fs2000a_steadystate.m @@ -1,60 +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 +% 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/fs2000a_steadystate.m b/tests/kalman_filter_smoother/fs2000a_steadystate.m index 4833e8b96..0692f23e0 100644 --- a/tests/kalman_filter_smoother/fs2000a_steadystate.m +++ b/tests/kalman_filter_smoother/fs2000a_steadystate.m @@ -1,60 +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 +% 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/testsmoother.m b/tests/kalman_filter_smoother/testsmoother.m index 71ca84a33..2e633bc23 100644 --- a/tests/kalman_filter_smoother/testsmoother.m +++ b/tests/kalman_filter_smoother/testsmoother.m @@ -1,56 +1,56 @@ -load test -% $$$ Y = Y(1:2,:); -% $$$ mf = mf(1:2); -% $$$ H=H(1:2,1:2); -% $$$ pp = pp-1; -% $$$ trend =trend(1:2,:); -Pinf1(1,1) = 1; -Pstar1(1,1) = 0; -Pstar1(4,1) = 0; -Pstar1(1,4) = 0; -[alphahat1,epsilonhat1,etahat1,a11, aK1] = DiffuseKalmanSmootherH1(T,R,Q,H, ... - Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); -[alphahat2,epsilonhat2,etahat2,a12, aK2] = DiffuseKalmanSmootherH3(T,R,Q,H, ... - Pinf1,Pstar1,Y,trend, ... - pp,mm,smpl,mf); -max(max(abs(alphahat1-alphahat2))) -max(max(abs(epsilonhat1-epsilonhat2))) -max(max(abs(etahat1-etahat2))) -max(max(abs(a11-a12))) -max(max(abs(aK1-aK2))) - -return -[alphahat1,etahat1,a11, aK1] = DiffuseKalmanSmoother1(T,R,Q, ... - Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); -[alphahat2,etahat2,a12, aK2] = DiffuseKalmanSmoother3(T,R,Q, ... - Pinf1,Pstar1,Y,trend, ... - pp,mm,smpl,mf); - - -max(max(abs(alphahat1-alphahat2))) -max(max(abs(etahat1-etahat2))) -max(max(abs(a11-a12))) -%max(max(abs(aK1-aK2))) - - -H = zeros(size(H)); -[alphahat1,etahat1,a11, aK1] = DiffuseKalmanSmoother1(T,R,Q, ... - Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); -[alphahat2,epsilonhat2,etahat2,a12, aK2] = DiffuseKalmanSmootherH1(T,R,Q,H, ... - Pinf1,Pstar1,Y,trend, ... - pp,mm,smpl,mf); -max(max(abs(alphahat1-alphahat2))) -max(max(abs(etahat1-etahat2))) -max(max(abs(a11-a12))) -%max(max(abs(aK1-aK2))) - - -[alphahat1,etahat1,a11, aK1] = DiffuseKalmanSmoother3(T,R,Q, ... - Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); -[alphahat2,epsilonhat2,etahat2,a12, aK2] = DiffuseKalmanSmootherH3(T,R,Q, H, ... - Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); - -max(max(abs(alphahat1-alphahat2))) -max(max(abs(etahat1-etahat2))) -max(max(abs(a11-a12))) -%max(max(abs(aK1-aK2))) +load test +% $$$ Y = Y(1:2,:); +% $$$ mf = mf(1:2); +% $$$ H=H(1:2,1:2); +% $$$ pp = pp-1; +% $$$ trend =trend(1:2,:); +Pinf1(1,1) = 1; +Pstar1(1,1) = 0; +Pstar1(4,1) = 0; +Pstar1(1,4) = 0; +[alphahat1,epsilonhat1,etahat1,a11, aK1] = DiffuseKalmanSmootherH1(T,R,Q,H, ... + Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); +[alphahat2,epsilonhat2,etahat2,a12, aK2] = DiffuseKalmanSmootherH3(T,R,Q,H, ... + Pinf1,Pstar1,Y,trend, ... + pp,mm,smpl,mf); +max(max(abs(alphahat1-alphahat2))) +max(max(abs(epsilonhat1-epsilonhat2))) +max(max(abs(etahat1-etahat2))) +max(max(abs(a11-a12))) +max(max(abs(aK1-aK2))) + +return +[alphahat1,etahat1,a11, aK1] = DiffuseKalmanSmoother1(T,R,Q, ... + Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); +[alphahat2,etahat2,a12, aK2] = DiffuseKalmanSmoother3(T,R,Q, ... + Pinf1,Pstar1,Y,trend, ... + pp,mm,smpl,mf); + + +max(max(abs(alphahat1-alphahat2))) +max(max(abs(etahat1-etahat2))) +max(max(abs(a11-a12))) +%max(max(abs(aK1-aK2))) + + +H = zeros(size(H)); +[alphahat1,etahat1,a11, aK1] = DiffuseKalmanSmoother1(T,R,Q, ... + Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); +[alphahat2,epsilonhat2,etahat2,a12, aK2] = DiffuseKalmanSmootherH1(T,R,Q,H, ... + Pinf1,Pstar1,Y,trend, ... + pp,mm,smpl,mf); +max(max(abs(alphahat1-alphahat2))) +max(max(abs(etahat1-etahat2))) +max(max(abs(a11-a12))) +%max(max(abs(aK1-aK2))) + + +[alphahat1,etahat1,a11, aK1] = DiffuseKalmanSmoother3(T,R,Q, ... + Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); +[alphahat2,epsilonhat2,etahat2,a12, aK2] = DiffuseKalmanSmootherH3(T,R,Q, H, ... + Pinf1,Pstar1,Y,trend,pp,mm,smpl,mf); + +max(max(abs(alphahat1-alphahat2))) +max(max(abs(etahat1-etahat2))) +max(max(abs(a11-a12))) +%max(max(abs(aK1-aK2))) diff --git a/tests/ls2003/data_ca1.m b/tests/ls2003/data_ca1.m index b0b4f0546..c28fae1a2 100644 --- a/tests/ls2003/data_ca1.m +++ b/tests/ls2003/data_ca1.m @@ -1,100 +1,100 @@ -data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... --0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... --0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... --0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... --0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... --0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... --0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... -1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... -2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... -1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... -1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... -1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... -1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... -0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... -1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... -1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... -0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... -1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... -1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... --0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... -0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... -0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... --0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... -2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... -1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... -1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... -1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... -1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... -1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... -0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... -0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... -1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... -0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... -0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... -0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... -0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... --0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... --0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... --0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... --1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... -0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... -0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... -0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... --0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... -0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... -0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... -0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... -0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... -0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... -0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... -0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... -1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... -1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... -1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... -0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... -0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... --0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... -0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... -0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... -0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... -0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... -1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... -0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... -0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... -1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... -1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... -0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... -1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... -0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... -1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... -1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... -1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... -1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... -1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... -1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... -1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... -0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... -1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... -0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... -0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... -0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... --0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... -0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... -1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... -1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... -0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... -]; - -data = reshape(data,5,86)'; -y_obs = data(:,1); -pie_obs = data(:,2); -R_obs = data(:,3); -de = data(:,4); -dq = data(:,5); - -%Country: Canada -%Sample Range: 1981:2 to 2002:3 -%Observations: 86 -%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], -% Exchange Rate Change [%], Terms of Trade Change [%] +data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... +-0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... +-0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... +-0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... +-0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... +-0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... +-0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... +1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... +2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... +1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... +1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... +1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... +1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... +0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... +1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... +1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... +0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... +1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... +1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... +-0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... +0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... +0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... +-0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... +2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... +1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... +1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... +1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... +1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... +1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... +0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... +0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... +1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... +0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... +0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... +0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... +0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... +-0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... +-0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... +-0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... +-1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... +0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... +0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... +0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... +-0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... +0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... +0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... +0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... +0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... +0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... +0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... +0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... +1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... +1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... +1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... +0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... +0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... +-0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... +0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... +0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... +0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... +0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... +1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... +0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... +0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... +1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... +1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... +0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... +1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... +0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... +1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... +1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... +1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... +1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... +1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... +1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... +1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... +0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... +1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... +0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... +0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... +0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... +-0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... +0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... +1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... +1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... +0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... +]; + +data = reshape(data,5,86)'; +y_obs = data(:,1); +pie_obs = data(:,2); +R_obs = data(:,3); +de = data(:,4); +dq = data(:,5); + +%Country: Canada +%Sample Range: 1981:2 to 2002:3 +%Observations: 86 +%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], +% Exchange Rate Change [%], Terms of Trade Change [%] diff --git a/tests/measurement_errors/data_ca1.m b/tests/measurement_errors/data_ca1.m index b0b4f0546..c28fae1a2 100644 --- a/tests/measurement_errors/data_ca1.m +++ b/tests/measurement_errors/data_ca1.m @@ -1,100 +1,100 @@ -data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... --0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... --0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... --0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... --0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... --0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... --0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... -1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... -2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... -1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... -1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... -1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... -1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... -0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... -1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... -1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... -0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... -1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... -1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... --0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... -0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... -0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... --0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... -2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... -1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... -1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... -1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... -1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... -1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... -0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... -0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... -1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... -0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... -0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... -0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... -0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... --0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... --0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... --0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... --1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... -0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... -0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... -0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... --0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... -0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... -0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... -0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... -0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... -0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... -0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... -0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... -1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... -1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... -1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... -0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... -0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... --0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... -0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... -0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... -0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... -0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... -1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... -0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... -0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... -1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... -1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... -0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... -1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... -0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... -1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... -1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... -1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... -1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... -1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... -1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... -1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... -0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... -1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... -0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... -0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... -0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... --0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... -0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... -1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... -1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... -0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... -]; - -data = reshape(data,5,86)'; -y_obs = data(:,1); -pie_obs = data(:,2); -R_obs = data(:,3); -de = data(:,4); -dq = data(:,5); - -%Country: Canada -%Sample Range: 1981:2 to 2002:3 -%Observations: 86 -%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], -% Exchange Rate Change [%], Terms of Trade Change [%] +data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... +-0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... +-0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... +-0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... +-0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... +-0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... +-0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... +1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... +2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... +1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... +1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... +1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... +1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... +0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... +1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... +1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... +0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... +1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... +1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... +-0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... +0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... +0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... +-0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... +2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... +1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... +1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... +1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... +1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... +1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... +0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... +0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... +1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... +0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... +0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... +0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... +0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... +-0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... +-0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... +-0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... +-1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... +0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... +0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... +0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... +-0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... +0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... +0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... +0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... +0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... +0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... +0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... +0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... +1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... +1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... +1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... +0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... +0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... +-0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... +0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... +0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... +0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... +0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... +1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... +0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... +0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... +1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... +1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... +0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... +1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... +0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... +1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... +1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... +1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... +1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... +1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... +1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... +1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... +0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... +1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... +0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... +0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... +0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... +-0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... +0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... +1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... +1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... +0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... +]; + +data = reshape(data,5,86)'; +y_obs = data(:,1); +pie_obs = data(:,2); +R_obs = data(:,3); +de = data(:,4); +dq = data(:,5); + +%Country: Canada +%Sample Range: 1981:2 to 2002:3 +%Observations: 86 +%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], +% Exchange Rate Change [%], Terms of Trade Change [%] diff --git a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol3v.m b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol3v.m index 621a59411..ce6156c7b 100644 --- a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol3v.m +++ b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol3v.m @@ -1,228 +1,228 @@ -function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol3v(lags,nvar,nStates,indxEqnTv_m,nexo) -% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. -% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale -% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. -% -% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. -% Exporting orthonormal matrices for the deterministic linear restrictions -% (equation by equation) with time-varying A0 and D+** equations. -% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). -% -% lags: Maximum length of lag. -% nvar: Number of endogeous variables. -% nStates: Number of states. -% indxEqnTv_m: nvar-by-2. Stores equation characteristics. -% 1st column: labels of equations [1:nvar]'. -% 2nd column: labels of time-varying features with -% 1: indxConst -- all coefficients are constant, -% 2: indxStv -- only shocks are time-varying, -% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). -% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. -% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. -% So far this function is written to handle one exogenous variable, which is a constant term. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters -% within the state and si is the number of free states. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. -% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters within the state and si is the number of free states. -% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original -% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables -% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar -% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. -% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. -% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. -% -% Tao Zha, February 2003 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. -np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. - -if (nargin==3) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -end - - -n = nvar*nStates; -kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. -k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. - -Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. -Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. - % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. - % 0 means no restriction. - % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. - % 1 (only 1) means that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time for A0_s. -%------------------------------------------------------------- -% - -%======== The first equation =========== -eqninx = 1; -nreseqn = 2; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 -1 0 0 - 0 1 0 0 -1 0 - 0 0 1 0 0 -1 - - 0 0 0 0 1 0 - 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 1 0 0 0 0 - 0 0 1 0 0 0 - - 0 0 0 0 1 0 - 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The second equation =========== -eqninx = 2; -nreseqn = 1; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 -1 0 0 - 0 1 0 0 -1 0 - 0 0 1 0 0 -1 - - 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 1 0 0 0 - - 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end - - %==== For freely time-varying A+ for only the first 6 lags. - %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. - % nlagsno0 = 6; % Number of lags to be nonzero. - % for si=1:nStates - % for ki = 1:lags-nlagsno0 - % for kj=1:nvar - % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; - % end - % end - % end - %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - % for si=1:nStates-1 - % for ki=[2*nvar+1:kvar-1] - % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - % end - % end -end - - -%======== The third equation (money demand) =========== -eqninx = 3; -nreseqn = 0; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 -1 0 0 - 0 1 0 0 -1 0 - 0 0 1 0 0 -1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - - -for ki=1:nvar % initializing loop for each equation - Ui{ki} = null(Qi(:,:,ki)); - Vi{ki} = null(Ri(:,:,ki)); - n0(ki) = size(Ui{ki},2); - np(ki) = size(Vi{ki},2); -end +function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol3v(lags,nvar,nStates,indxEqnTv_m,nexo) +% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. +% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale +% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. +% +% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. +% Exporting orthonormal matrices for the deterministic linear restrictions +% (equation by equation) with time-varying A0 and D+** equations. +% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). +% +% lags: Maximum length of lag. +% nvar: Number of endogeous variables. +% nStates: Number of states. +% indxEqnTv_m: nvar-by-2. Stores equation characteristics. +% 1st column: labels of equations [1:nvar]'. +% 2nd column: labels of time-varying features with +% 1: indxConst -- all coefficients are constant, +% 2: indxStv -- only shocks are time-varying, +% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). +% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. +% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. +% So far this function is written to handle one exogenous variable, which is a constant term. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters +% within the state and si is the number of free states. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. +% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters within the state and si is the number of free states. +% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original +% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables +% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar +% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. +% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. +% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. +% +% Tao Zha, February 2003 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. +np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. + +if (nargin==3) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +end + + +n = nvar*nStates; +kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. +k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. + +Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. +Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. + % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. + % 0 means no restriction. + % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. + % 1 (only 1) means that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time for A0_s. +%------------------------------------------------------------- +% + +%======== The first equation =========== +eqninx = 1; +nreseqn = 2; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 -1 0 0 + 0 1 0 0 -1 0 + 0 0 1 0 0 -1 + + 0 0 0 0 1 0 + 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 1 0 0 0 0 + 0 0 1 0 0 0 + + 0 0 0 0 1 0 + 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The second equation =========== +eqninx = 2; +nreseqn = 1; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 -1 0 0 + 0 1 0 0 -1 0 + 0 0 1 0 0 -1 + + 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 1 0 0 0 + + 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end + + %==== For freely time-varying A+ for only the first 6 lags. + %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. + % nlagsno0 = 6; % Number of lags to be nonzero. + % for si=1:nStates + % for ki = 1:lags-nlagsno0 + % for kj=1:nvar + % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; + % end + % end + % end + %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + % for si=1:nStates-1 + % for ki=[2*nvar+1:kvar-1] + % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + % end + % end +end + + +%======== The third equation (money demand) =========== +eqninx = 3; +nreseqn = 0; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 -1 0 0 + 0 1 0 0 -1 0 + 0 0 1 0 0 -1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + + +for ki=1:nvar % initializing loop for each equation + Ui{ki} = null(Qi(:,:,ki)); + Vi{ki} = null(Ri(:,:,ki)); + n0(ki) = size(Ui{ki},2); + np(ki) = size(Vi{ki},2); +end diff --git a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol4v.m b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol4v.m index d83a90b37..bc3215cde 100644 --- a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol4v.m +++ b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol4v.m @@ -1,331 +1,331 @@ -function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol4v(lags,nvar,nStates,indxEqnTv_m,nexo) -% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. -% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale -% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. -% -% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. -% Exporting orthonormal matrices for the deterministic linear restrictions -% (equation by equation) with time-varying A0 and D+** equations. -% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). -% -% lags: Maximum length of lag. -% nvar: Number of endogeous variables. -% nStates: Number of states. -% indxEqnTv_m: nvar-by-2. Stores equation characteristics. -% 1st column: labels of equations [1:nvar]'. -% 2nd column: labels of time-varying features with -% 1: indxConst -- all coefficients are constant, -% 2: indxStv -- only shocks are time-varying, -% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). -% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. -% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. -% So far this function is written to handle one exogenous variable, which is a constant term. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters -% within the state and si is the number of free states. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. -% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters within the state and si is the number of free states. -% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original -% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables -% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar -% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. -% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. -% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. -% -% Tao Zha, February 2003 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. -np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. - -if (nargin==3) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -end - - -n = nvar*nStates; -kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. -k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. - -Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. -Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. - % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. - % 0 means no restriction. - % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. - % 1 (only 1) means that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time for A0_s. -%------------------------------------------------------------- -% - -%======== The first equation =========== -eqninx = 1; -nreseqn = 3; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 -1 0 0 0 - 0 1 0 0 0 -1 0 0 - 0 0 1 0 0 0 -1 0 - 0 0 0 1 0 0 0 -1 - - 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 1 0 0 0 0 0 0 - 0 0 1 0 0 0 0 0 - 0 0 0 1 0 0 0 0 - - 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The second equation =========== -eqninx = 2; -nreseqn = 2; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 -1 0 0 0 - 0 1 0 0 0 -1 0 0 - 0 0 1 0 0 0 -1 0 - 0 0 0 1 0 0 0 -1 - - 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 1 0 0 0 0 0 - 0 0 0 1 0 0 0 0 - - 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end - - %==== For freely time-varying A+ for only the first 6 lags. - %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. - % nlagsno0 = 6; % Number of lags to be nonzero. - % for si=1:nStates - % for ki = 1:lags-nlagsno0 - % for kj=1:nvar - % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; - % end - % end - % end - %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - % for si=1:nStates-1 - % for ki=[2*nvar+1:kvar-1] - % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - % end - % end -end - - -%======== The third equation =========== -eqninx = 3; -nreseqn = 1; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 -1 0 0 0 - 0 1 0 0 0 -1 0 0 - 0 0 1 0 0 0 -1 0 - 0 0 0 1 0 0 0 -1 - - 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 1 0 0 0 0 - - 0 0 0 0 0 0 0 1 - ]; - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The fourth equation =========== -eqninx = 4; -nreseqn = 0; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 -1 0 0 0 - 0 1 0 0 0 -1 0 0 - 0 0 1 0 0 0 -1 0 - 0 0 0 1 0 0 0 -1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - - - - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - - -for ki=1:nvar % initializing loop for each equation - Ui{ki} = null(Qi(:,:,ki)); - Vi{ki} = null(Ri(:,:,ki)); - n0(ki) = size(Ui{ki},2); - np(ki) = size(Vi{ki},2); -end +function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol4v(lags,nvar,nStates,indxEqnTv_m,nexo) +% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. +% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale +% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. +% +% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. +% Exporting orthonormal matrices for the deterministic linear restrictions +% (equation by equation) with time-varying A0 and D+** equations. +% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). +% +% lags: Maximum length of lag. +% nvar: Number of endogeous variables. +% nStates: Number of states. +% indxEqnTv_m: nvar-by-2. Stores equation characteristics. +% 1st column: labels of equations [1:nvar]'. +% 2nd column: labels of time-varying features with +% 1: indxConst -- all coefficients are constant, +% 2: indxStv -- only shocks are time-varying, +% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). +% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. +% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. +% So far this function is written to handle one exogenous variable, which is a constant term. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters +% within the state and si is the number of free states. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. +% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters within the state and si is the number of free states. +% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original +% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables +% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar +% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. +% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. +% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. +% +% Tao Zha, February 2003 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. +np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. + +if (nargin==3) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +end + + +n = nvar*nStates; +kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. +k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. + +Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. +Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. + % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. + % 0 means no restriction. + % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. + % 1 (only 1) means that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time for A0_s. +%------------------------------------------------------------- +% + +%======== The first equation =========== +eqninx = 1; +nreseqn = 3; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 -1 0 0 0 + 0 1 0 0 0 -1 0 0 + 0 0 1 0 0 0 -1 0 + 0 0 0 1 0 0 0 -1 + + 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 1 0 0 0 0 0 0 + 0 0 1 0 0 0 0 0 + 0 0 0 1 0 0 0 0 + + 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The second equation =========== +eqninx = 2; +nreseqn = 2; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 -1 0 0 0 + 0 1 0 0 0 -1 0 0 + 0 0 1 0 0 0 -1 0 + 0 0 0 1 0 0 0 -1 + + 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 1 0 0 0 0 0 + 0 0 0 1 0 0 0 0 + + 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end + + %==== For freely time-varying A+ for only the first 6 lags. + %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. + % nlagsno0 = 6; % Number of lags to be nonzero. + % for si=1:nStates + % for ki = 1:lags-nlagsno0 + % for kj=1:nvar + % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; + % end + % end + % end + %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + % for si=1:nStates-1 + % for ki=[2*nvar+1:kvar-1] + % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + % end + % end +end + + +%======== The third equation =========== +eqninx = 3; +nreseqn = 1; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 -1 0 0 0 + 0 1 0 0 0 -1 0 0 + 0 0 1 0 0 0 -1 0 + 0 0 0 1 0 0 0 -1 + + 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 1 0 0 0 0 + + 0 0 0 0 0 0 0 1 + ]; + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The fourth equation =========== +eqninx = 4; +nreseqn = 0; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 -1 0 0 0 + 0 1 0 0 0 -1 0 0 + 0 0 1 0 0 0 -1 0 + 0 0 0 1 0 0 0 -1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + + + + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + + +for ki=1:nvar % initializing loop for each equation + Ui{ki} = null(Qi(:,:,ki)); + Vi{ki} = null(Ri(:,:,ki)); + n0(ki) = size(Ui{ki},2); + np(ki) = size(Vi{ki},2); +end diff --git a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol6v.m b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol6v.m index 4fa71200b..389109df7 100644 --- a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol6v.m +++ b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol6v.m @@ -1,455 +1,455 @@ -function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol6v(lags,nvar,nStates,indxEqnTv_m,nexo) -% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. -% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale -% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. -% -% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. -% Exporting orthonormal matrices for the deterministic linear restrictions -% (equation by equation) with time-varying A0 and D+** equations. -% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). -% -% lags: Maximum length of lag. -% nvar: Number of endogeous variables. -% nStates: Number of states. -% indxEqnTv_m: nvar-by-2. Stores equation characteristics. -% 1st column: labels of equations [1:nvar]'. -% 2nd column: labels of time-varying features with -% 1: indxConst -- all coefficients are constant, -% 2: indxStv -- only shocks are time-varying, -% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). -% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. -% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. -% So far this function is written to handle one exogenous variable, which is a constant term. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters -% within the state and si is the number of free states. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. -% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters within the state and si is the number of free states. -% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original -% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables -% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar -% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. -% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. -% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. -% -% Tao Zha, February 2003 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. -np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. - -if (nargin==3) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -end - - -n = nvar*nStates; -kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. -k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. - -Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. -Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. - % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. - % 0 means no restriction. - % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. - % 1 (only 1) means that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time for A0_s. -%------------------------------------------------------------- -% - -%======== The first equation =========== -eqninx = 1; -nreseqn = 5; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 -1 0 0 0 0 0 - 0 1 0 0 0 0 0 -1 0 0 0 0 - 0 0 1 0 0 0 0 0 -1 0 0 0 - 0 0 0 1 0 0 0 0 0 -1 0 0 - 0 0 0 0 1 0 0 0 0 0 -1 0 - 0 0 0 0 0 1 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 1 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - - -%======== The second equation =========== -eqninx = 2; -nreseqn = 4; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 -1 0 0 0 0 0 - 0 1 0 0 0 0 0 -1 0 0 0 0 - 0 0 1 0 0 0 0 0 -1 0 0 0 - 0 0 0 1 0 0 0 0 0 -1 0 0 - 0 0 0 0 1 0 0 0 0 0 -1 0 - 0 0 0 0 0 1 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The third equation =========== -eqninx = 3; -nreseqn = 3; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 -1 0 0 0 0 0 - 0 1 0 0 0 0 0 -1 0 0 0 0 - 0 0 1 0 0 0 0 0 -1 0 0 0 - 0 0 0 1 0 0 0 0 0 -1 0 0 - 0 0 0 0 1 0 0 0 0 0 -1 0 - 0 0 0 0 0 1 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end - - %==== For freely time-varying A+ for only the first 6 lags. - %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. - % nlagsno0 = 6; % Number of lags to be nonzero. - % for si=1:nStates - % for ki = 1:lags-nlagsno0 - % for kj=1:nvar - % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; - % end - % end - % end - %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - % for si=1:nStates-1 - % for ki=[2*nvar+1:kvar-1] - % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - % end - % end -end - - -%======== The fourth equation =========== -eqninx = 4; -nreseqn = 2; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 -1 0 0 0 0 0 - 0 1 0 0 0 0 0 -1 0 0 0 0 - 0 0 1 0 0 0 0 0 -1 0 0 0 - 0 0 0 1 0 0 0 0 0 -1 0 0 - 0 0 0 0 1 0 0 0 0 0 -1 0 - 0 0 0 0 0 1 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 0 1 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The fifth equation =========== -eqninx = 5; -nreseqn = 1; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 -1 0 0 0 0 0 - 0 1 0 0 0 0 0 -1 0 0 0 0 - 0 0 1 0 0 0 0 0 -1 0 0 0 - 0 0 0 1 0 0 0 0 0 -1 0 0 - 0 0 0 0 1 0 0 0 0 0 -1 0 - 0 0 0 0 0 1 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 0 0 1 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The sixth equation =========== -eqninx = 6; -nreseqn = 0; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 -1 0 0 0 0 0 - 0 1 0 0 0 0 0 -1 0 0 0 0 - 0 0 1 0 0 0 0 0 -1 0 0 0 - 0 0 0 1 0 0 0 0 0 -1 0 0 - 0 0 0 0 1 0 0 0 0 0 -1 0 - 0 0 0 0 0 1 0 0 0 0 0 -1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - - - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - - -for ki=1:nvar % initializing loop for each equation - Ui{ki} = null(Qi(:,:,ki)); - Vi{ki} = null(Ri(:,:,ki)); - n0(ki) = size(Ui{ki},2); - np(ki) = size(Vi{ki},2); -end +function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol6v(lags,nvar,nStates,indxEqnTv_m,nexo) +% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. +% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale +% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. +% +% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. +% Exporting orthonormal matrices for the deterministic linear restrictions +% (equation by equation) with time-varying A0 and D+** equations. +% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). +% +% lags: Maximum length of lag. +% nvar: Number of endogeous variables. +% nStates: Number of states. +% indxEqnTv_m: nvar-by-2. Stores equation characteristics. +% 1st column: labels of equations [1:nvar]'. +% 2nd column: labels of time-varying features with +% 1: indxConst -- all coefficients are constant, +% 2: indxStv -- only shocks are time-varying, +% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). +% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. +% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. +% So far this function is written to handle one exogenous variable, which is a constant term. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters +% within the state and si is the number of free states. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. +% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters within the state and si is the number of free states. +% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original +% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables +% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar +% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. +% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. +% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. +% +% Tao Zha, February 2003 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. +np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. + +if (nargin==3) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +end + + +n = nvar*nStates; +kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. +k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. + +Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. +Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. + % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. + % 0 means no restriction. + % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. + % 1 (only 1) means that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time for A0_s. +%------------------------------------------------------------- +% + +%======== The first equation =========== +eqninx = 1; +nreseqn = 5; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 -1 0 0 0 0 0 + 0 1 0 0 0 0 0 -1 0 0 0 0 + 0 0 1 0 0 0 0 0 -1 0 0 0 + 0 0 0 1 0 0 0 0 0 -1 0 0 + 0 0 0 0 1 0 0 0 0 0 -1 0 + 0 0 0 0 0 1 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 1 0 0 0 0 0 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + + +%======== The second equation =========== +eqninx = 2; +nreseqn = 4; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 -1 0 0 0 0 0 + 0 1 0 0 0 0 0 -1 0 0 0 0 + 0 0 1 0 0 0 0 0 -1 0 0 0 + 0 0 0 1 0 0 0 0 0 -1 0 0 + 0 0 0 0 1 0 0 0 0 0 -1 0 + 0 0 0 0 0 1 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The third equation =========== +eqninx = 3; +nreseqn = 3; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 -1 0 0 0 0 0 + 0 1 0 0 0 0 0 -1 0 0 0 0 + 0 0 1 0 0 0 0 0 -1 0 0 0 + 0 0 0 1 0 0 0 0 0 -1 0 0 + 0 0 0 0 1 0 0 0 0 0 -1 0 + 0 0 0 0 0 1 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end + + %==== For freely time-varying A+ for only the first 6 lags. + %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. + % nlagsno0 = 6; % Number of lags to be nonzero. + % for si=1:nStates + % for ki = 1:lags-nlagsno0 + % for kj=1:nvar + % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; + % end + % end + % end + %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + % for si=1:nStates-1 + % for ki=[2*nvar+1:kvar-1] + % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + % end + % end +end + + +%======== The fourth equation =========== +eqninx = 4; +nreseqn = 2; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 -1 0 0 0 0 0 + 0 1 0 0 0 0 0 -1 0 0 0 0 + 0 0 1 0 0 0 0 0 -1 0 0 0 + 0 0 0 1 0 0 0 0 0 -1 0 0 + 0 0 0 0 1 0 0 0 0 0 -1 0 + 0 0 0 0 0 1 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 0 1 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The fifth equation =========== +eqninx = 5; +nreseqn = 1; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 -1 0 0 0 0 0 + 0 1 0 0 0 0 0 -1 0 0 0 0 + 0 0 1 0 0 0 0 0 -1 0 0 0 + 0 0 0 1 0 0 0 0 0 -1 0 0 + 0 0 0 0 1 0 0 0 0 0 -1 0 + 0 0 0 0 0 1 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 0 0 1 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The sixth equation =========== +eqninx = 6; +nreseqn = 0; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 -1 0 0 0 0 0 + 0 1 0 0 0 0 0 -1 0 0 0 0 + 0 0 1 0 0 0 0 0 -1 0 0 0 + 0 0 0 1 0 0 0 0 0 -1 0 0 + 0 0 0 0 1 0 0 0 0 0 -1 0 + 0 0 0 0 0 1 0 0 0 0 0 -1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + + + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + + +for ki=1:nvar % initializing loop for each equation + Ui{ki} = null(Qi(:,:,ki)); + Vi{ki} = null(Ri(:,:,ki)); + n0(ki) = size(Ui{ki},2); + np(ki) = size(Vi{ki},2); +end diff --git a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol7v.m b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol7v.m index 6c27034d6..de818ab90 100644 --- a/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol7v.m +++ b/tests/ms-sbvar/archive-files/ftd_2s_caseall_upperchol7v.m @@ -1,525 +1,525 @@ -function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol7v(lags,nvar,nStates,indxEqnTv_m,nexo) -% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. -% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale -% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. -% -% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. -% Exporting orthonormal matrices for the deterministic linear restrictions -% (equation by equation) with time-varying A0 and D+** equations. -% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). -% -% lags: Maximum length of lag. -% nvar: Number of endogeous variables. -% nStates: Number of states. -% indxEqnTv_m: nvar-by-2. Stores equation characteristics. -% 1st column: labels of equations [1:nvar]'. -% 2nd column: labels of time-varying features with -% 1: indxConst -- all coefficients are constant, -% 2: indxStv -- only shocks are time-varying, -% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). -% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. -% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. -% So far this function is written to handle one exogenous variable, which is a constant term. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters -% within the state and si is the number of free states. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. -% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters within the state and si is the number of free states. -% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original -% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables -% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar -% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. -% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. -% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. -% -% Tao Zha, February 2003 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. -np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. - -if (nargin==3) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -end - - -n = nvar*nStates; -kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. -k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. - -Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. -Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. - % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. - % 0 means no restriction. - % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. - % 1 (only 1) means that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time for A0_s. -%------------------------------------------------------------- -% - -%======== The first equation =========== -eqninx = 1; -nreseqn = 6; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 - 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 1 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 1 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 1 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The second equation =========== -eqninx = 2; -nreseqn = 5; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 - 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 1 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 1 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The third equation =========== -eqninx = 3; -nreseqn = 4; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 - 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 1 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - - -%======== The fourth equation =========== -eqninx = 4; -nreseqn = 3; % Number of linear restrictions for A0(:,eqninx) for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 - 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 0 0 1 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end - - %==== For freely time-varying A+ for only the first 6 lags. - %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. - % nlagsno0 = 6; % Number of lags to be nonzero. - % for si=1:nStates - % for ki = 1:lags-nlagsno0 - % for kj=1:nvar - % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; - % end - % end - % end - %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - % for si=1:nStates-1 - % for ki=[2*nvar+1:kvar-1] - % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - % end - % end -end - - -%======== The fifth equation =========== -eqninx = 5; -nreseqn = 2; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 - 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 0 0 1 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The sixth equation =========== -eqninx = 6; -nreseqn = 1; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 - 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 - - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:nreseqn*nStates,:,eqninx) = [ - 0 0 0 0 0 0 1 0 0 0 0 0 0 0 - - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - ]; - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - -%======== The seventh equation =========== -eqninx = 7; -nreseqn = 0; % Number of linear restrictions for the equation for each state. -if (indxEqnTv_m(eqninx, 2)<=2) - %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. - Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ - 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 - 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 - 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 - 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 - 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 - 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 - ]; - %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end -else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. - %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. - if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. - for si=1:nStates-1 - for ki=1:kvar - Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; - end - end - else - error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') - end -end - - - - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - - -for ki=1:nvar % initializing loop for each equation - Ui{ki} = null(Qi(:,:,ki)); - Vi{ki} = null(Ri(:,:,ki)); - n0(ki) = size(Ui{ki},2); - np(ki) = size(Vi{ki},2); -end +function [Ui,Vi,n0,np] = ftd_2s_caseall_upperchol7v(lags,nvar,nStates,indxEqnTv_m,nexo) +% Case 2&3: Policy a0j and a+j have only time-varying structural variances -- Case 2. +% All policy and nonpolicy a0j's and the corresponding constant terms are completely time-varying and only the scale +% of each variable in d+j,1** (excluding the constant term) is time-varying -- Case 3. +% +% Variables: Pcom, M2, FFR, y, P, U. Equations: information, policy, money demand, y, P, U. +% Exporting orthonormal matrices for the deterministic linear restrictions +% (equation by equation) with time-varying A0 and D+** equations. +% See Model II.3 on pp.71k-71r in TVBVAR NOTES (and Waggoner and Zha's Gibbs sampling paper and TVBVAR NOTES p.58). +% +% lags: Maximum length of lag. +% nvar: Number of endogeous variables. +% nStates: Number of states. +% indxEqnTv_m: nvar-by-2. Stores equation characteristics. +% 1st column: labels of equations [1:nvar]'. +% 2nd column: labels of time-varying features with +% 1: indxConst -- all coefficients are constant, +% 2: indxStv -- only shocks are time-varying, +% 3: indxTva0pv -- a0 are freely time-varying and each variable i for d+ is time-varying only by the scale lambda_i(s_t). +% 4: indxTva0ps -- a0 are freely time-varying and only the scale for the whole of d+ is time-varying. +% 5: indxTv -- time-varying for all coeffficients (a0 and a+) where the lag length for a+ may be shorter. +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant. +% So far this function is written to handle one exogenous variable, which is a constant term. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar*nStates-by-qi*si orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters +% within the state and si is the number of free states. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation in the order of [a_i for 1st state, ..., a_i for last state]. +% Vi: nvar-by-1 cell. In each cell, k*nStates-by-ri*si orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters within the state and si is the number of free states. +% With this transformation, we have fi = Vi*gi or Vi'*fi = gi where fi is a vector of total original +% parameters and gi is a vector of free parameters. The ith equation is in the order of [nvar variables +% for 1st lag and 1st state, ..., nvar variables for last lag and 1st state, const for 1st state, nvar +% variables for 1st lag and 2nd state, nvar variables for last lag and 2nd state, const for 2nd state, and so on]. +% n0: nvar-by-1, whose ith element represents the number of free A0 parameters in ith equation in *all states*. +% np: nvar-by-1, whose ith element represents the number of free D+ parameters in ith equation in *all states*. +% +% Tao Zha, February 2003 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation in all states. +np = zeros(nvar,1); % ith element represents the number of free D+ parameters in ith equation in all states. + +if (nargin==3) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +end + + +n = nvar*nStates; +kvar=lags*nvar+nexo; % Maximum number of lagged and exogenous variables in each equation under each state. +k = kvar*nStates; % Maximum number of lagged and exogenous variables in each equation in all states. + +Qi = zeros(n,n,nvar); % 3rd dim: nvar contemporaneous equations. +Ri = zeros(k,k,nvar); % 1st and 2nd dims: lagged and exogenous equations. + % Row corresponds to equation with nvar variables for state 1, ..., nvar variables for state nState. + % 0 means no restriction. + % 1 and -1 or any other number means the linear combination of the corresponding parameters is restricted to 0. + % 1 (only 1) means that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time for A0_s. +%------------------------------------------------------------- +% + +%======== The first equation =========== +eqninx = 1; +nreseqn = 6; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 + 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 1 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 1 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 1 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The second equation =========== +eqninx = 2; +nreseqn = 5; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 + 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 1 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_*.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The third equation =========== +eqninx = 3; +nreseqn = 4; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 + 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 1 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 1 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + + +%======== The fourth equation =========== +eqninx = 4; +nreseqn = 3; % Number of linear restrictions for A0(:,eqninx) for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 + 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 0 1 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 0 1 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_3s_case3a.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end + + %==== For freely time-varying A+ for only the first 6 lags. + %==== Lagged restrictions: zeros on all lags except the first 6 lags in the MS equation. + % nlagsno0 = 6; % Number of lags to be nonzero. + % for si=1:nStates + % for ki = 1:lags-nlagsno0 + % for kj=1:nvar + % Ri(kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,kvar*(si-1)+nlagsno0*nvar+nvar*(ki-1)+kj,2) = 1; + % end + % end + % end + %**** For constant D+_s except the first two lags and the constant term. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + % for si=1:nStates-1 + % for ki=[2*nvar+1:kvar-1] + % Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + % end + % end +end + + +%======== The fifth equation =========== +eqninx = 5; +nreseqn = 2; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 + 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 0 0 1 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The sixth equation =========== +eqninx = 6; +nreseqn = 1; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 + 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 + + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For time-varying A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:nreseqn*nStates,:,eqninx) = [ + 0 0 0 0 0 0 1 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + ]; + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + +%======== The seventh equation =========== +eqninx = 7; +nreseqn = 0; % Number of linear restrictions for the equation for each state. +if (indxEqnTv_m(eqninx, 2)<=2) + %**** For constant A0_s. In the order of [a0j(1),...,a0j(nStates)] for the 2nd dim of Qi. + Qi(1:(nStates-1)*nvar+nreseqn,:,eqninx) = [ + 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 + 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 + 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 + 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 + 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 + 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 + 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 + ]; + %**** For constant D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end +else % Time-varying equations at least for A0_s. For D+_s, constant-parameter equations in general. + %**** For D+_s. In the order of [aj+(1),...,aj+(nStates)] for the 2nd dim of Ri. + if (indxEqnTv_m(eqninx, 2)==3) % For constant D+** except the constant term. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar-1 % -1: no restrictions on the constant term, which is freely time-varying. + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + elseif (indxEqnTv_m(eqninx, 2)==4) % For constant D+**. In the order of [dj**(1),...,dj**(nStates)] for the 2nd dim of Ri. + for si=1:nStates-1 + for ki=1:kvar + Ri(kvar*(si-1)+ki,[kvar*(si-1)+ki si*kvar+ki],eqninx) = [1 -1]; + end + end + else + error('.../ftd_2s_caseall_simszha5v.m: Have not got time to deal with the simple case indxEqnTv_m(eqninx, 2)=5.') + end +end + + + + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + + +for ki=1:nvar % initializing loop for each equation + Ui{ki} = null(Qi(:,:,ki)); + Vi{ki} = null(Ri(:,:,ki)); + n0(ki) = size(Ui{ki},2); + np(ki) = size(Vi{ki},2); +end diff --git a/tests/ms-sbvar/archive-files/ftd_RSvensson_4v.m b/tests/ms-sbvar/archive-files/ftd_RSvensson_4v.m index a93ff82b7..2b24a786a 100644 --- a/tests/ms-sbvar/archive-files/ftd_RSvensson_4v.m +++ b/tests/ms-sbvar/archive-files/ftd_RSvensson_4v.m @@ -1,188 +1,188 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_reac_function_4v(lags,nvar,nexo,indxC0Pres) -% vlist = [ff+ch fh dpgdp ffr) -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% HERE FIRTS 3 EQUATIONS ARE AR2 AND THE LAST EQUATION IS AN UNRESTRICTED -% REACTION FUNCTION 2 lags -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 -% BN - -nvar=4; -lags=4; -nexo=1; - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% -%======== The first equation =========== -Qi(1:3,:,1) = [ - 0 1 0 0 - 0 0 1 0 - 0 0 0 1 - ]; - -%======== The second equation =========== -Qi(1:2,:,2) = [ - 0 0 1 0 - 0 0 0 1 - ]; - -%======== The third equation =========== NOTE THAT WE FORBID A -%CONTEMPORANEOUS IMPACT OF OUTPUTON PRICES TO AVOID A CONSTRAINT THAT -%INVOLVE A0 and Aplus -Qi(1:3,:,3) = [ - 1 0 0 0 - 0 1 0 0 - 0 0 0 1 - ]; - -%======== The fourth equation =========== - - -% Restrictions on the A+ in order to focus strictly on the reaction fucntion - -% indicates free parameterers X i -% Ap = [ -% X X X X -% X X X X -% -a1 -b1 X X -% a1 b1 0 X (1st lag) -% X X X X -% X X X X -% -a2 -b2 X X -% b2 b2 0 X (2nd lag) -% X 0 X X -% X X X X -% -a3 -b3 X X -% a3 a3 0 X (3rd lag) -% X X X X -% X X X X -% -a4 -b4 X X -% a4 b4 0 X (4th lag) -% X X X X (constant terms) -% ]; - -k=nvar*lags+nexo; -Ri = zeros(k,k,nvar); -% constraints on IS curve /conso+corporate investment -for nv=1:2 -for ll=1:lags -Ri(ll,3+lags*(ll-1),nv)=1; -Ri(ll,4+lags*(ll-1),nv)=1; -end -end - -% constraints on IS curve /conso+corporate investment only on the long run -% impact -% for nv=1:2 -% for ll=1:lags -% Ri(1,3+lags*(ll-1),nv)=1; -% Ri(1,4+lags*(ll-1),nv)=1; -% end -% end - - -% constraints on Ph curve / inflation does not react to interest rates -for ll=1:lags -Ri(ll,4+lags*(ll-1),3)=1; -end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_reac_function_4v(lags,nvar,nexo,indxC0Pres) +% vlist = [ff+ch fh dpgdp ffr) +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% HERE FIRTS 3 EQUATIONS ARE AR2 AND THE LAST EQUATION IS AN UNRESTRICTED +% REACTION FUNCTION 2 lags +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 +% BN + +nvar=4; +lags=4; +nexo=1; + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% +%======== The first equation =========== +Qi(1:3,:,1) = [ + 0 1 0 0 + 0 0 1 0 + 0 0 0 1 + ]; + +%======== The second equation =========== +Qi(1:2,:,2) = [ + 0 0 1 0 + 0 0 0 1 + ]; + +%======== The third equation =========== NOTE THAT WE FORBID A +%CONTEMPORANEOUS IMPACT OF OUTPUTON PRICES TO AVOID A CONSTRAINT THAT +%INVOLVE A0 and Aplus +Qi(1:3,:,3) = [ + 1 0 0 0 + 0 1 0 0 + 0 0 0 1 + ]; + +%======== The fourth equation =========== + + +% Restrictions on the A+ in order to focus strictly on the reaction fucntion + +% indicates free parameterers X i +% Ap = [ +% X X X X +% X X X X +% -a1 -b1 X X +% a1 b1 0 X (1st lag) +% X X X X +% X X X X +% -a2 -b2 X X +% b2 b2 0 X (2nd lag) +% X 0 X X +% X X X X +% -a3 -b3 X X +% a3 a3 0 X (3rd lag) +% X X X X +% X X X X +% -a4 -b4 X X +% a4 b4 0 X (4th lag) +% X X X X (constant terms) +% ]; + +k=nvar*lags+nexo; +Ri = zeros(k,k,nvar); +% constraints on IS curve /conso+corporate investment +for nv=1:2 +for ll=1:lags +Ri(ll,3+lags*(ll-1),nv)=1; +Ri(ll,4+lags*(ll-1),nv)=1; +end +end + +% constraints on IS curve /conso+corporate investment only on the long run +% impact +% for nv=1:2 +% for ll=1:lags +% Ri(1,3+lags*(ll-1),nv)=1; +% Ri(1,4+lags*(ll-1),nv)=1; +% end +% end + + +% constraints on Ph curve / inflation does not react to interest rates +for ll=1:lags +Ri(ll,4+lags*(ll-1),3)=1; +end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_cholesky.m b/tests/ms-sbvar/archive-files/ftd_cholesky.m index 74524c470..42126015a 100644 --- a/tests/ms-sbvar/archive-files/ftd_cholesky.m +++ b/tests/ms-sbvar/archive-files/ftd_cholesky.m @@ -1,251 +1,251 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_cholesky(lags,nvar,nexo,indxC0Pres) -%vlist = [1:4]; % regarding "xdd", % 1: p; 2: id; 3: ik; 4: y. -%For restricted VARs in the form: y_t'*A0 = x_t'*Ap + e_t', where y_t is a vector of endogenous variables -% and x_t is a vector of lagged endogenous variables and the constant term (last term). -% Note that the columns of A0 and Ap correspnd to equations. -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -%The restrictions considered here are in the following form where X means unrestricted: -% A0 = [ -% X 0 X X -% 0 X X X -% 0 0 X X -% 0 0 0 X -% ]; -% Ap = [ -% X 0 X X -% 0 X X X -% 0 0 X X -% 0 0 X X (1st lag) -% X 0 X X -% 0 X X X -% 0 0 X X -% 0 0 X X (2nd lag) -% X 0 X X -% 0 X X X -% 0 0 X X -% 0 0 X X (3rd lag) -% X 0 X X -% 0 X X X -% 0 0 X X -% 0 0 X X (4th lag) -% 0 X 0 0 (constant terms) -% ]; - -if (0) - %------------------------ Lower triangular A0 ------------------------------ - %======== The first equation =========== - - - %======== The second equation =========== - Qi(1:1,:,2) = [ - 1 0 0 0 - ]; - - %======== The third equation =========== - Qi(1:2,:,3) = [ - 1 0 0 0 - 0 1 0 0 - ]; - - %======== The fourth equation =========== - Qi(1:3,:,4) = [ - 1 0 0 0 - 0 1 0 0 - 0 0 1 0 - ]; -else - %------------------------ Upper triangular A0 ------------------------------ - %======== The first equation =========== - Qi(2:4,:,1) = [ - 0 1 0 0 - 0 0 1 0 - 0 0 0 1 - ]; - - %======== The second equation =========== - Qi([1 3:4],:,2) = [ - 1 0 0 0 - 0 0 1 0 - 0 0 0 1 - ]; - - %======== The third equation =========== - Qi(4:4,:,3) = [ - 0 0 0 1 - ]; - - %======== The fourth equation =========== -end - - -%-------------------------- Lag restrictions. ------------------------------------------ -if (1) - %--- Lag restrictions. - indxeqn = 1; %Which equation. - nrestrs = (nvar-1)*lags+1; %Number of restrictions. - vars_restr = [2:nvar]; %Variables that are restricted: id, ik, and y. - blags = zeros(nrestrs,k); %k=nvar*lags+1 - cnt = 0; - for ki = 1:lags - for kj=vars_restr - cnt = cnt+1; - blags(cnt,nvar*(ki-1)+kj) = 1; - end - end - %--- Keep constant zero. - cnt = cnt+1; - blags(cnt,end) = 1; %Constant = 0. - if cnt~=nrestrs - error('Check lagged restrictions in 1st equation!') - end - Ri(1:nrestrs,:,indxeqn) = blags; - - %--- Lag restrictions. - indxeqn = 2; %Which equation. - nrestrs = (nvar-1)*lags; %Number of restrictions. - vars_restr = [1 3:nvar]; %Variables that are restricted: id, ik, and y. - blags = zeros(nrestrs,k); %k=nvar*lags+1 - cnt = 0; - for ki = 1:lags - for kj=vars_restr - cnt = cnt+1; - blags(cnt,nvar*(ki-1)+kj) = 1; - end - end - Ri(1:nrestrs,:,indxeqn) = blags; - - %--- Lag restrictions. - indxeqn = 3; %Which equation. - nrestrs = 1; %Number of restrictions. - blags = zeros(nrestrs,k); - cnt = 0; - %--- Keep constant zero. - cnt = cnt+1; - blags(cnt,end) = 1; %Constant = 0. - if cnt~=nrestrs - error('Check lagged restrictions in 1st equation!') - end - Ri(1:nrestrs,:,indxeqn) = blags; - - %--- Lag restrictions. - indxeqn = 4; %Which equation. - nrestrs = 1; %Number of restrictions. - blags = zeros(nrestrs,k); - cnt = 0; - %--- Keep constant zero. - cnt = cnt+1; - blags(cnt,end) = 1; %Constant = 0. - if cnt~=nrestrs - error('Check lagged restrictions in 1st equation!') - end - Ri(1:nrestrs,:,indxeqn) = blags; -end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -% This type of restriction is used for the New-Keysian model studied by Leeper and Zha -% "Assessing Simple Policy Rules: A View from a Complete Macroeconomic Model" published -% by St. Louis Fed Review. -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_cholesky(lags,nvar,nexo,indxC0Pres) +%vlist = [1:4]; % regarding "xdd", % 1: p; 2: id; 3: ik; 4: y. +%For restricted VARs in the form: y_t'*A0 = x_t'*Ap + e_t', where y_t is a vector of endogenous variables +% and x_t is a vector of lagged endogenous variables and the constant term (last term). +% Note that the columns of A0 and Ap correspnd to equations. +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +%The restrictions considered here are in the following form where X means unrestricted: +% A0 = [ +% X 0 X X +% 0 X X X +% 0 0 X X +% 0 0 0 X +% ]; +% Ap = [ +% X 0 X X +% 0 X X X +% 0 0 X X +% 0 0 X X (1st lag) +% X 0 X X +% 0 X X X +% 0 0 X X +% 0 0 X X (2nd lag) +% X 0 X X +% 0 X X X +% 0 0 X X +% 0 0 X X (3rd lag) +% X 0 X X +% 0 X X X +% 0 0 X X +% 0 0 X X (4th lag) +% 0 X 0 0 (constant terms) +% ]; + +if (0) + %------------------------ Lower triangular A0 ------------------------------ + %======== The first equation =========== + + + %======== The second equation =========== + Qi(1:1,:,2) = [ + 1 0 0 0 + ]; + + %======== The third equation =========== + Qi(1:2,:,3) = [ + 1 0 0 0 + 0 1 0 0 + ]; + + %======== The fourth equation =========== + Qi(1:3,:,4) = [ + 1 0 0 0 + 0 1 0 0 + 0 0 1 0 + ]; +else + %------------------------ Upper triangular A0 ------------------------------ + %======== The first equation =========== + Qi(2:4,:,1) = [ + 0 1 0 0 + 0 0 1 0 + 0 0 0 1 + ]; + + %======== The second equation =========== + Qi([1 3:4],:,2) = [ + 1 0 0 0 + 0 0 1 0 + 0 0 0 1 + ]; + + %======== The third equation =========== + Qi(4:4,:,3) = [ + 0 0 0 1 + ]; + + %======== The fourth equation =========== +end + + +%-------------------------- Lag restrictions. ------------------------------------------ +if (1) + %--- Lag restrictions. + indxeqn = 1; %Which equation. + nrestrs = (nvar-1)*lags+1; %Number of restrictions. + vars_restr = [2:nvar]; %Variables that are restricted: id, ik, and y. + blags = zeros(nrestrs,k); %k=nvar*lags+1 + cnt = 0; + for ki = 1:lags + for kj=vars_restr + cnt = cnt+1; + blags(cnt,nvar*(ki-1)+kj) = 1; + end + end + %--- Keep constant zero. + cnt = cnt+1; + blags(cnt,end) = 1; %Constant = 0. + if cnt~=nrestrs + error('Check lagged restrictions in 1st equation!') + end + Ri(1:nrestrs,:,indxeqn) = blags; + + %--- Lag restrictions. + indxeqn = 2; %Which equation. + nrestrs = (nvar-1)*lags; %Number of restrictions. + vars_restr = [1 3:nvar]; %Variables that are restricted: id, ik, and y. + blags = zeros(nrestrs,k); %k=nvar*lags+1 + cnt = 0; + for ki = 1:lags + for kj=vars_restr + cnt = cnt+1; + blags(cnt,nvar*(ki-1)+kj) = 1; + end + end + Ri(1:nrestrs,:,indxeqn) = blags; + + %--- Lag restrictions. + indxeqn = 3; %Which equation. + nrestrs = 1; %Number of restrictions. + blags = zeros(nrestrs,k); + cnt = 0; + %--- Keep constant zero. + cnt = cnt+1; + blags(cnt,end) = 1; %Constant = 0. + if cnt~=nrestrs + error('Check lagged restrictions in 1st equation!') + end + Ri(1:nrestrs,:,indxeqn) = blags; + + %--- Lag restrictions. + indxeqn = 4; %Which equation. + nrestrs = 1; %Number of restrictions. + blags = zeros(nrestrs,k); + cnt = 0; + %--- Keep constant zero. + cnt = cnt+1; + blags(cnt,end) = 1; %Constant = 0. + if cnt~=nrestrs + error('Check lagged restrictions in 1st equation!') + end + Ri(1:nrestrs,:,indxeqn) = blags; +end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +% This type of restriction is used for the New-Keysian model studied by Leeper and Zha +% "Assessing Simple Policy Rules: A View from a Complete Macroeconomic Model" published +% by St. Louis Fed Review. +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_non_rec_5v.m b/tests/ms-sbvar/archive-files/ftd_non_rec_5v.m index e7ae07549..e9fbeb409 100644 --- a/tests/ms-sbvar/archive-files/ftd_non_rec_5v.m +++ b/tests/ms-sbvar/archive-files/ftd_non_rec_5v.m @@ -1,192 +1,192 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol5v(lags,nvar,nexo,indxC0Pres) -% vlist = [127 124 93 141 21]; % 1: GDP; 2: GDP deflator 124 (consumption deflator 79); 3: R; 4: M3 141 (M2 140); 5: exchange rate 21. -% varlist={'y', 'P', 'R', 'M3', 'Ex'}; -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% -%======== The first equation =========== -Qi(1:4,:,1) = [ - 0 1 0 0 0 - 0 0 1 0 0 - 0 0 0 1 0 - 0 0 0 0 1 - ]; - -%======== The second equation =========== -Qi(1:3,:,2) = [ - 0 0 1 0 0 - 0 0 0 1 0 - 0 0 0 0 1 - ]; - -%======== The third equation =========== -Qi(1:2,:,3) = [ - 0 0 0 1 0 - 0 0 0 0 1 - ]; - - -%======== The fourth equation =========== -%Qi(1:1,:,4) = [ -% 0 0 0 0 1 -% ]; - - -%======== The fifth equation =========== - -Qi(1:3,:,5) = [ - 1 0 0 0 0 - 0 1 0 0 0 - 0 0 1 0 0 - ]; - - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol5v(lags,nvar,nexo,indxC0Pres) +% vlist = [127 124 93 141 21]; % 1: GDP; 2: GDP deflator 124 (consumption deflator 79); 3: R; 4: M3 141 (M2 140); 5: exchange rate 21. +% varlist={'y', 'P', 'R', 'M3', 'Ex'}; +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% +%======== The first equation =========== +Qi(1:4,:,1) = [ + 0 1 0 0 0 + 0 0 1 0 0 + 0 0 0 1 0 + 0 0 0 0 1 + ]; + +%======== The second equation =========== +Qi(1:3,:,2) = [ + 0 0 1 0 0 + 0 0 0 1 0 + 0 0 0 0 1 + ]; + +%======== The third equation =========== +Qi(1:2,:,3) = [ + 0 0 0 1 0 + 0 0 0 0 1 + ]; + + +%======== The fourth equation =========== +%Qi(1:1,:,4) = [ +% 0 0 0 0 1 +% ]; + + +%======== The fifth equation =========== + +Qi(1:3,:,5) = [ + 1 0 0 0 0 + 0 1 0 0 0 + 0 0 1 0 0 + ]; + + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_simszha5v.m b/tests/ms-sbvar/archive-files/ftd_simszha5v.m index a2092fb3e..0a0034a9d 100644 --- a/tests/ms-sbvar/archive-files/ftd_simszha5v.m +++ b/tests/ms-sbvar/archive-files/ftd_simszha5v.m @@ -1,190 +1,190 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_simszha5v(lags,nvar,nexo,indxC0Pres) -%vlist = [21 141 93 127 124]; % 1: Pcom 2 (exchange rate 21); 2: M3 141 (M2 140); 3: R; 4: GDP; 5: GDP deflator 124 (consumption deflator 79). -%varlist={'Ex', 'M3', 'R', 'y','P'}; -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% - -%======== The first equation: information sector =========== - - -%======== The second equation: monetary policy =========== -%Qi(1:2,:,2) = [ -% 0 0 0 1 0 -% 0 0 0 0 1 -% ]; % Respond to Pcom. -Qi(1:3,:,2) = [ - 1 0 0 0 0 - 0 0 0 1 0 - 0 0 0 0 1 - ]; % Not respond to Pcom. - -%======== The third equation: money demand =========== -Qi(1,:,3) = [ - 1 0 0 0 0 - ]; - -%======== The fourth equation: y equation =========== -Qi(1:4,:,4) = [ - 1 0 0 0 0 - 0 1 0 0 0 - 0 0 1 0 0 - 0 0 0 0 1 - ]; - -%======== The fifth equation: p equation =========== -Qi(1:3,:,5) = [ - 1 0 0 0 0 - 0 1 0 0 0 - 0 0 1 0 0 - ]; - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_simszha5v(lags,nvar,nexo,indxC0Pres) +%vlist = [21 141 93 127 124]; % 1: Pcom 2 (exchange rate 21); 2: M3 141 (M2 140); 3: R; 4: GDP; 5: GDP deflator 124 (consumption deflator 79). +%varlist={'Ex', 'M3', 'R', 'y','P'}; +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% + +%======== The first equation: information sector =========== + + +%======== The second equation: monetary policy =========== +%Qi(1:2,:,2) = [ +% 0 0 0 1 0 +% 0 0 0 0 1 +% ]; % Respond to Pcom. +Qi(1:3,:,2) = [ + 1 0 0 0 0 + 0 0 0 1 0 + 0 0 0 0 1 + ]; % Not respond to Pcom. + +%======== The third equation: money demand =========== +Qi(1,:,3) = [ + 1 0 0 0 0 + ]; + +%======== The fourth equation: y equation =========== +Qi(1:4,:,4) = [ + 1 0 0 0 0 + 0 1 0 0 0 + 0 0 1 0 0 + 0 0 0 0 1 + ]; + +%======== The fifth equation: p equation =========== +Qi(1:3,:,5) = [ + 1 0 0 0 0 + 0 1 0 0 0 + 0 0 1 0 0 + ]; + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_upperchol3v.m b/tests/ms-sbvar/archive-files/ftd_upperchol3v.m index 4376b3c5d..a5c19f79e 100644 --- a/tests/ms-sbvar/archive-files/ftd_upperchol3v.m +++ b/tests/ms-sbvar/archive-files/ftd_upperchol3v.m @@ -1,170 +1,170 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol3v(lags,nvar,nexo,indxC0Pres) -%vlist = [20 6 3 44 1 10]; % regarding "xdd", Pcom (Poil or imfcom), M2, FFR, GDP, CPI (or PCE), and U. -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% - -%======== The first equation =========== -Qi(1:2,:,1) = [ - 0 1 0 - 0 0 1 - ]; - -%======== The second equation =========== -Qi(1:1,:,2) = [ - 0 0 1 - ]; - - -%======== The third equation =========== - - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol3v(lags,nvar,nexo,indxC0Pres) +%vlist = [20 6 3 44 1 10]; % regarding "xdd", Pcom (Poil or imfcom), M2, FFR, GDP, CPI (or PCE), and U. +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% + +%======== The first equation =========== +Qi(1:2,:,1) = [ + 0 1 0 + 0 0 1 + ]; + +%======== The second equation =========== +Qi(1:1,:,2) = [ + 0 0 1 + ]; + + +%======== The third equation =========== + + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_upperchol4v.m b/tests/ms-sbvar/archive-files/ftd_upperchol4v.m index 78c9a7c51..aadac9512 100644 --- a/tests/ms-sbvar/archive-files/ftd_upperchol4v.m +++ b/tests/ms-sbvar/archive-files/ftd_upperchol4v.m @@ -1,178 +1,178 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol4v(lags,nvar,nexo,indxC0Pres) -% vlist = [127 124 93 141 21]; % 1: GDP; 2: GDP deflator 124 (consumption deflator 79); 3: R; 4: M3 141 (M2 140); 5: exchange rate 21. -% varlist={'y', 'P', 'R', 'M3', 'Ex'}; -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% -%======== The first equation =========== -Qi(1:3,:,1) = [ - 0 1 0 0 - 0 0 1 0 - 0 0 0 1 - ]; - -%======== The second equation =========== -Qi(1:2,:,2) = [ - 0 0 1 0 - 0 0 0 1 - ]; - -%======== The third equation =========== -Qi(1:1,:,3) = [ - 0 0 0 1 - ]; - - -%======== The fourth equation =========== - - - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol4v(lags,nvar,nexo,indxC0Pres) +% vlist = [127 124 93 141 21]; % 1: GDP; 2: GDP deflator 124 (consumption deflator 79); 3: R; 4: M3 141 (M2 140); 5: exchange rate 21. +% varlist={'y', 'P', 'R', 'M3', 'Ex'}; +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% +%======== The first equation =========== +Qi(1:3,:,1) = [ + 0 1 0 0 + 0 0 1 0 + 0 0 0 1 + ]; + +%======== The second equation =========== +Qi(1:2,:,2) = [ + 0 0 1 0 + 0 0 0 1 + ]; + +%======== The third equation =========== +Qi(1:1,:,3) = [ + 0 0 0 1 + ]; + + +%======== The fourth equation =========== + + + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_upperchol5v.m b/tests/ms-sbvar/archive-files/ftd_upperchol5v.m index e1dfaa18d..b41a60c17 100644 --- a/tests/ms-sbvar/archive-files/ftd_upperchol5v.m +++ b/tests/ms-sbvar/archive-files/ftd_upperchol5v.m @@ -1,187 +1,187 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol5v(lags,nvar,nexo,indxC0Pres) -% vlist = [127 124 93 141 21]; % 1: GDP; 2: GDP deflator 124 (consumption deflator 79); 3: R; 4: M3 141 (M2 140); 5: exchange rate 21. -% varlist={'y', 'P', 'R', 'M3', 'Ex'}; -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% -%======== The first equation =========== -Qi(1:4,:,1) = [ - 0 1 0 0 0 - 0 0 1 0 0 - 0 0 0 1 0 - 0 0 0 0 1 - ]; - -%======== The second equation =========== -Qi(1:3,:,2) = [ - 0 0 1 0 0 - 0 0 0 1 0 - 0 0 0 0 1 - ]; - -%======== The third equation =========== -Qi(1:2,:,3) = [ - 0 0 0 1 0 - 0 0 0 0 1 - ]; - - -%======== The fourth equation =========== -Qi(1:1,:,4) = [ - 0 0 0 0 1 - ]; - - -%======== The fifth equation =========== - - - - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol5v(lags,nvar,nexo,indxC0Pres) +% vlist = [127 124 93 141 21]; % 1: GDP; 2: GDP deflator 124 (consumption deflator 79); 3: R; 4: M3 141 (M2 140); 5: exchange rate 21. +% varlist={'y', 'P', 'R', 'M3', 'Ex'}; +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% +%======== The first equation =========== +Qi(1:4,:,1) = [ + 0 1 0 0 0 + 0 0 1 0 0 + 0 0 0 1 0 + 0 0 0 0 1 + ]; + +%======== The second equation =========== +Qi(1:3,:,2) = [ + 0 0 1 0 0 + 0 0 0 1 0 + 0 0 0 0 1 + ]; + +%======== The third equation =========== +Qi(1:2,:,3) = [ + 0 0 0 1 0 + 0 0 0 0 1 + ]; + + +%======== The fourth equation =========== +Qi(1:1,:,4) = [ + 0 0 0 0 1 + ]; + + +%======== The fifth equation =========== + + + + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_upperchol6v.m b/tests/ms-sbvar/archive-files/ftd_upperchol6v.m index fb09e9298..c6560ffd9 100644 --- a/tests/ms-sbvar/archive-files/ftd_upperchol6v.m +++ b/tests/ms-sbvar/archive-files/ftd_upperchol6v.m @@ -1,194 +1,194 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol6v(lags,nvar,nexo,indxC0Pres) -% vlist = [127 124 2 93 141 21]; % 1: Pcom 2 (exchange rate 21); 2: M3 141 (M2 140); 3: R; 4: GDP; 5: GDP deflator 124 (consumption deflator 79). -% varlist={'y', 'P', 'Pcom', 'R', 'M3', 'Ex'}; -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% -%======== The first equation =========== -Qi(1:5,:,1) = [ - 0 1 0 0 0 0 - 0 0 1 0 0 0 - 0 0 0 1 0 0 - 0 0 0 0 1 0 - 0 0 0 0 0 1 - ]; - -%======== The second equation =========== -Qi(1:4,:,2) = [ - 0 0 1 0 0 0 - 0 0 0 1 0 0 - 0 0 0 0 1 0 - 0 0 0 0 0 1 - ]; - -%======== The third equation =========== -Qi(1:3,:,3) = [ - 0 0 0 1 0 0 - 0 0 0 0 1 0 - 0 0 0 0 0 1 - ]; - - -%======== The fourth equation =========== -Qi(1:2,:,4) = [ - 0 0 0 0 1 0 - 0 0 0 0 0 1 - ]; - - -%======== The fifth equation =========== -Qi(1:1,:,5) = [ - 0 0 0 0 0 1 - ]; - - -%======== The sixth equation =========== - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol6v(lags,nvar,nexo,indxC0Pres) +% vlist = [127 124 2 93 141 21]; % 1: Pcom 2 (exchange rate 21); 2: M3 141 (M2 140); 3: R; 4: GDP; 5: GDP deflator 124 (consumption deflator 79). +% varlist={'y', 'P', 'Pcom', 'R', 'M3', 'Ex'}; +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% +%======== The first equation =========== +Qi(1:5,:,1) = [ + 0 1 0 0 0 0 + 0 0 1 0 0 0 + 0 0 0 1 0 0 + 0 0 0 0 1 0 + 0 0 0 0 0 1 + ]; + +%======== The second equation =========== +Qi(1:4,:,2) = [ + 0 0 1 0 0 0 + 0 0 0 1 0 0 + 0 0 0 0 1 0 + 0 0 0 0 0 1 + ]; + +%======== The third equation =========== +Qi(1:3,:,3) = [ + 0 0 0 1 0 0 + 0 0 0 0 1 0 + 0 0 0 0 0 1 + ]; + + +%======== The fourth equation =========== +Qi(1:2,:,4) = [ + 0 0 0 0 1 0 + 0 0 0 0 0 1 + ]; + + +%======== The fifth equation =========== +Qi(1:1,:,5) = [ + 0 0 0 0 0 1 + ]; + + +%======== The sixth equation =========== + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/ms-sbvar/archive-files/ftd_upperchol7v.m b/tests/ms-sbvar/archive-files/ftd_upperchol7v.m index 31ce836cf..d0dc7969c 100644 --- a/tests/ms-sbvar/archive-files/ftd_upperchol7v.m +++ b/tests/ms-sbvar/archive-files/ftd_upperchol7v.m @@ -1,204 +1,204 @@ -function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol7v(lags,nvar,nexo,indxC0Pres) -% vlist = [127 124 2 93 141 21]; % 1: Pcom 2 (exchange rate 21); 2: M3 141 (M2 140); 3: R; 4: GDP; 5: GDP deflator 124 (consumption deflator 79). -% varlist={'y', 'P', 'Pcom', 'R', 'M3', 'Ex'}; -% -% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) -% See Waggoner and Zha's Gibbs sampling paper. -% -% q_m: quarter or month -% lags: the maximum length of lag -% nvar: number of endogeous variables -% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant -% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have -% Example for indxOres==1: restrictions of the form P(t) = P(t-1). -% These restrictions have to be manually and carefully keyed in. -%----------------- -% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith -% equation contemporaneous restriction matrix where qi is the number of free parameters. -% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector -% of total original parameters and bi is a vector of free parameters. When no -% restrictions are imposed, we have Ui = I. There must be at least one free -% parameter left for the ith equation. -% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith -% equation lagged restriction matrix where k is a total of exogenous variables and -% ri is the number of free parameters. With this transformation, we have fi = Vi*gi -% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a -% vector of free parameters. There must be at least one free parameter left for -% the ith equation. -% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation -% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation -% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. -% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. -% In the jth cell representing equation, we have 4 columns: -% 1st: the jth column (equation) of A+ or A0: f_j or a_j -% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% 4th: the number s such that f_j(i) = s * a_j(h) holds. -% -% Tao Zha, May 2000 - - - -Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables -Vi = cell(nvar,1); % initializing for lagged and exogenous variables -n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation -np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation - -if (nargin==2) - nexo = 1; % 1: constant as default where nexo must be a nonnegative integer -elseif (nargin==3) - indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. -end - -k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation - -Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations -Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations - % Row corresponds to equation. 0 means no restriction. - % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. - -%nfvar = 6; % number of foreign (Granger causing) variables -%nhvar = nvar-nfvar; % number of home (affected) variables. - - -%------------------------------------------------------------- -% Beginning the manual input of the restrictions one quation at a time -%------------------------------------------------------------- -% -%======== The first equation =========== -Qi(1:6,:,1) = [ - 0 1 0 0 0 0 0 - 0 0 1 0 0 0 0 - 0 0 0 1 0 0 0 - 0 0 0 0 1 0 0 - 0 0 0 0 0 1 0 - 0 0 0 0 0 0 1 - ]; - -%======== The second equation =========== -Qi(1:5,:,2) = [ - 0 0 1 0 0 0 0 - 0 0 0 1 0 0 0 - 0 0 0 0 1 0 0 - 0 0 0 0 0 1 0 - 0 0 0 0 0 0 1 - ]; - -%======== The third equation =========== -Qi(1:4,:,3) = [ - 0 0 0 1 0 0 0 - 0 0 0 0 1 0 0 - 0 0 0 0 0 1 0 - 0 0 0 0 0 0 1 - ]; - -%======== The fourth equation =========== -Qi(1:3,:,4) = [ - 0 0 0 0 1 0 0 - 0 0 0 0 0 1 0 - 0 0 0 0 0 0 1 - ]; - - -%======== The fifth equation =========== -Qi(1:2,:,5) = [ - 0 0 0 0 0 1 0 - 0 0 0 0 0 0 1 - ]; - - -%======== The sixth equation =========== -Qi(1:1,:,6) = [ - 0 0 0 0 0 0 1 - ]; - - -%======== The seventh equation =========== - -%===== Lagged restrictions in foreign (Granger causing) block -%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation -%bfor = zeros(nfbres,k); % each foreign equation -%cnt=0; -%for ki = 1:lags -% for kj=1:nvar-nfvar -% cnt=cnt+1; -% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; -% end -%end -%% -%if cnt~=nfbres -% error('Check lagged restrictions in foreign equations!') -%end -%% -%for kj=1:nfvar -% Ri(1:nfbres,:,kj) = bfor; -%end - - -%===== Lagged restrictions in home (affected) block -% -%~~~~~ selected domestic equations -%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations -%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). -%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector -%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation -%bhom = zeros(nhbres,k); % each home equation -%cnt=0; -%for ki = 1:lags -% for kj=1:length(rfvindx) -% cnt=cnt+1; -% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; -% end -%end -%% -%if cnt~=nhbres -% error('Check lagged restrictions in domestic equations!') -%end -%% -%for kj=dlrindx -% Ri(1:nhbres,:,kj) = bhom; -%end - - -for n=1:nvar % initializing loop for each equation - Ui{n} = null(Qi(:,:,n)); - Vi{n} = null(Ri(:,:,n)); - n0(n) = size(Ui{n},2); - np(n) = size(Vi{n},2); -end - - - -%(2)------------------------------------------------------------- -% Cross-A0-and-A+ rerestrictions one quation at a time -% i.e., the first, second, ..., kjth, ..., equation -%(2)------------------------------------------------------------- -% -if indxC0Pres - neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. - ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: - % 1st: the jth column (equation) of A+ or A0: f_j or a_j - % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ - % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 - % 4th: the number s such that f_j(i) = s * a_j(h) holds. - %** 1st equation - ixmC0Pres{1} = [1 2 2 1 - 1 7 1 1]; - %** 2nd equation - ixmC0Pres{2} = [2 2 2 2]; - %** 3rd equation - ixmC0Pres{3} = [3 7 1 1 - 3 2 2 1]; - - -% % 4 columns. -% ncres = 5; % manually key in the number of cross-A0-A+ restrictions - -% % 1st: the jth column (equation) of A+ or A0: f_j or a_j -% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ -% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 -% % 4th: the number s such that f_j(i) = s * a_j(h) holds. -else - ixmC0Pres = NaN; -end - +function [Ui,Vi,n0,np,ixmC0Pres] = ftd_upperchol7v(lags,nvar,nexo,indxC0Pres) +% vlist = [127 124 2 93 141 21]; % 1: Pcom 2 (exchange rate 21); 2: M3 141 (M2 140); 3: R; 4: GDP; 5: GDP deflator 124 (consumption deflator 79). +% varlist={'y', 'P', 'Pcom', 'R', 'M3', 'Ex'}; +% +% Exporting orthonormal matrices for the deterministic linear restrictions (equation by equation) +% See Waggoner and Zha's Gibbs sampling paper. +% +% q_m: quarter or month +% lags: the maximum length of lag +% nvar: number of endogeous variables +% nexo: number of exogenous variables. If nexo is not supplied, nexo=1 as default for a constant +% indxC0Pres: index for cross-A0-A+ restrictions. if 1: cross-A0-and-A+ restrictions; 0: idfile is all we have +% Example for indxOres==1: restrictions of the form P(t) = P(t-1). +% These restrictions have to be manually and carefully keyed in. +%----------------- +% Ui: nvar-by-1 cell. In each cell, nvar-by-qi orthonormal basis for the null of the ith +% equation contemporaneous restriction matrix where qi is the number of free parameters. +% With this transformation, we have ai = Ui*bi or Ui'*ai = bi where ai is a vector +% of total original parameters and bi is a vector of free parameters. When no +% restrictions are imposed, we have Ui = I. There must be at least one free +% parameter left for the ith equation. +% Vi: nvar-by-1 cell. In each cell, k-by-ri orthonormal basis for the null of the ith +% equation lagged restriction matrix where k is a total of exogenous variables and +% ri is the number of free parameters. With this transformation, we have fi = Vi*gi +% or Vi'*fi = gi where fi is a vector of total original parameters and gi is a +% vector of free parameters. There must be at least one free parameter left for +% the ith equation. +% n0: nvar-by-1, ith element represents the number of free A0 parameters in ith equation +% np: nvar-by-1, ith element represents the number of free A+ parameters in ith equation +% ixmC0Pres: neq_cres-by-1 cell. Effective only if indxC0Pres=1, otherwise equals NaN. +% neq_cres is the number of equations in which cross-A0-A+ restrictions occur. +% In the jth cell representing equation, we have 4 columns: +% 1st: the jth column (equation) of A+ or A0: f_j or a_j +% 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% 4th: the number s such that f_j(i) = s * a_j(h) holds. +% +% Tao Zha, May 2000 + + + +Ui = cell(nvar,1); % initializing for contemporaneous endogenous variables +Vi = cell(nvar,1); % initializing for lagged and exogenous variables +n0 = zeros(nvar,1); % ith element represents the number of free A0 parameters in ith equation +np = zeros(nvar,1); % ith element represents the number of free A+ parameters in ith equation + +if (nargin==2) + nexo = 1; % 1: constant as default where nexo must be a nonnegative integer +elseif (nargin==3) + indxC0Pres = 0; % default is no cross-A0-and-A+ restrictions. +end + +k = lags*nvar+nexo; % maximum number of lagged and exogenous variables in each equation + +Qi = zeros(nvar,nvar,nvar); % for nvar contemporaneous equations +Ri = zeros(k,k,nvar); % for nvar lagged and exogenous equations + % Row corresponds to equation. 0 means no restriction. + % 1 means exclusion restriction such that the corresponding parameter is restricted to 0. + +%nfvar = 6; % number of foreign (Granger causing) variables +%nhvar = nvar-nfvar; % number of home (affected) variables. + + +%------------------------------------------------------------- +% Beginning the manual input of the restrictions one quation at a time +%------------------------------------------------------------- +% +%======== The first equation =========== +Qi(1:6,:,1) = [ + 0 1 0 0 0 0 0 + 0 0 1 0 0 0 0 + 0 0 0 1 0 0 0 + 0 0 0 0 1 0 0 + 0 0 0 0 0 1 0 + 0 0 0 0 0 0 1 + ]; + +%======== The second equation =========== +Qi(1:5,:,2) = [ + 0 0 1 0 0 0 0 + 0 0 0 1 0 0 0 + 0 0 0 0 1 0 0 + 0 0 0 0 0 1 0 + 0 0 0 0 0 0 1 + ]; + +%======== The third equation =========== +Qi(1:4,:,3) = [ + 0 0 0 1 0 0 0 + 0 0 0 0 1 0 0 + 0 0 0 0 0 1 0 + 0 0 0 0 0 0 1 + ]; + +%======== The fourth equation =========== +Qi(1:3,:,4) = [ + 0 0 0 0 1 0 0 + 0 0 0 0 0 1 0 + 0 0 0 0 0 0 1 + ]; + + +%======== The fifth equation =========== +Qi(1:2,:,5) = [ + 0 0 0 0 0 1 0 + 0 0 0 0 0 0 1 + ]; + + +%======== The sixth equation =========== +Qi(1:1,:,6) = [ + 0 0 0 0 0 0 1 + ]; + + +%======== The seventh equation =========== + +%===== Lagged restrictions in foreign (Granger causing) block +%nfbres = lags*(nvar-nfvar); % number of block restrictions in each foreign equation +%bfor = zeros(nfbres,k); % each foreign equation +%cnt=0; +%for ki = 1:lags +% for kj=1:nvar-nfvar +% cnt=cnt+1; +% bfor(cnt,nvar*(ki-1)+nfvar+kj) = 1; +% end +%end +%% +%if cnt~=nfbres +% error('Check lagged restrictions in foreign equations!') +%end +%% +%for kj=1:nfvar +% Ri(1:nfbres,:,kj) = bfor; +%end + + +%===== Lagged restrictions in home (affected) block +% +%~~~~~ selected domestic equations +%dlrindx = nfvar+1; %[nfvar+1 nfvar+2]; % index for relevant home equations +%rfvindx = []; %[6]; %[1 2 3 5]; % index for restricted foreign variables (e.g., Poil, M2, FFR, P). +%%nf2hvar = nfvar-length(rfvindx); % number of free parameters -- foreign variables entering the home sector +%nhbres = lags*length(rfvindx); % number of block restrictions in each home equation +%bhom = zeros(nhbres,k); % each home equation +%cnt=0; +%for ki = 1:lags +% for kj=1:length(rfvindx) +% cnt=cnt+1; +% bhom(cnt,nvar*(ki-1)+rfvindx(kj)) = 1; +% end +%end +%% +%if cnt~=nhbres +% error('Check lagged restrictions in domestic equations!') +%end +%% +%for kj=dlrindx +% Ri(1:nhbres,:,kj) = bhom; +%end + + +for n=1:nvar % initializing loop for each equation + Ui{n} = null(Qi(:,:,n)); + Vi{n} = null(Ri(:,:,n)); + n0(n) = size(Ui{n},2); + np(n) = size(Vi{n},2); +end + + + +%(2)------------------------------------------------------------- +% Cross-A0-and-A+ rerestrictions one quation at a time +% i.e., the first, second, ..., kjth, ..., equation +%(2)------------------------------------------------------------- +% +if indxC0Pres + neq_cres = 3; % the number of equations in which cross-A0-A+ restrictions occur. + ixmC0Pres = cell(neq_cres,1); % in each cell representing equation, we have 4 columns: + % 1st: the jth column (equation) of A+ or A0: f_j or a_j + % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ + % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 + % 4th: the number s such that f_j(i) = s * a_j(h) holds. + %** 1st equation + ixmC0Pres{1} = [1 2 2 1 + 1 7 1 1]; + %** 2nd equation + ixmC0Pres{2} = [2 2 2 2]; + %** 3rd equation + ixmC0Pres{3} = [3 7 1 1 + 3 2 2 1]; + + +% % 4 columns. +% ncres = 5; % manually key in the number of cross-A0-A+ restrictions + +% % 1st: the jth column (equation) of A+ or A0: f_j or a_j +% % 2nd: the ith element f_j(i) -- the ith element in the jth column of A+ +% % 3rd: the hth element a_j(h) -- the hth element in the jth column of A0 +% % 4th: the number s such that f_j(i) = s * a_j(h) holds. +else + ixmC0Pres = NaN; +end + diff --git a/tests/optimal_policy/nk_ramsey.mod b/tests/optimal_policy/nk_ramsey.mod index c83cccc5e..3b35cf51c 100644 --- a/tests/optimal_policy/nk_ramsey.mod +++ b/tests/optimal_policy/nk_ramsey.mod @@ -1,90 +1,90 @@ -//MODEL: -//test on Dynare to find the lagrangean multipliers. -//We consider a standard NK model. We use the FOCS of the competitive economy and we aim at calculating the Ramsey optimal problem. - -//------------------------------------------------------------------------------------------------------------------------ -//1. Variable declaration -//------------------------------------------------------------------------------------------------------------------------ - -var pai, c, n, r, a; - -//4 variables + 1 shock - -varexo u; - - - - -//------------------------------------------------------------------------------------------------------------------------ -// 2. Parameter declaration and calibration -//------------------------------------------------------------------------------------------------------------------------- - -parameters beta, rho, epsilon, omega, phi, gamma; - -beta=0.99; -gamma=3; //Frish elasticity -omega=17; //price stickyness -epsilon=8; //elasticity for each variety of consumption -phi=1; //coefficient associated to labor effort disutility - -rho=0.95; //coefficient associated to productivity shock - - -//----------------------------------------------------------------------------------------------------------------------- -// 3. The model -//----------------------------------------------------------------------------------------------------------------------- - - -model; - - -a=rho*(a(-1))+u; - -1/c=beta*(1/(c(+1)))*(r/(pai(+1))); //euler - - -omega*pai*(pai-1)=beta*omega*(c/(c(+1)))*(pai(+1))*(pai(+1)-1)+epsilon*exp(a)*n*(c/exp(a)*phi*n^gamma-(epsilon-1)/epsilon); //NK pc -//pai*(pai-1)/c = beta*pai(+1)*(pai(+1)-1)/c(+1)+epsilon*phi*n^(gamma+1)/omega-exp(a)*n*(epsilon-1)/(omega*c); //NK pc - -(exp(a))*n=c+(omega/2)*((pai-1)^2); - -end; - -//-------------------------------------------------------------------------------------------------------------------------- -// 4. Steady state -//--------------------------------------------------------------------------------------------------------------------------- - -initval; - -pai=1; -r=1/beta; -c=0.9671684882; -n=0.9671684882; -a=0; - - -end; - - - -//--------------------------------------------------------------------------------------------------------------------------- -// 5. shocks -//--------------------------------------------------------------------------------------------------------------------------- - -shocks; -var u; stderr 0.008; - -end; - -//-------------------------------------------------------------------------------------------------------------------------- -// 6. Ramsey problem -//-------------------------------------------------------------------------------------------------------------------------- - -planner_objective(ln(c)-phi*((n^(1+gamma))/(1+gamma))); - -write_latex_static_model; - -ramsey_policy(planner_discount=0.99); - - - +//MODEL: +//test on Dynare to find the lagrangean multipliers. +//We consider a standard NK model. We use the FOCS of the competitive economy and we aim at calculating the Ramsey optimal problem. + +//------------------------------------------------------------------------------------------------------------------------ +//1. Variable declaration +//------------------------------------------------------------------------------------------------------------------------ + +var pai, c, n, r, a; + +//4 variables + 1 shock + +varexo u; + + + + +//------------------------------------------------------------------------------------------------------------------------ +// 2. Parameter declaration and calibration +//------------------------------------------------------------------------------------------------------------------------- + +parameters beta, rho, epsilon, omega, phi, gamma; + +beta=0.99; +gamma=3; //Frish elasticity +omega=17; //price stickyness +epsilon=8; //elasticity for each variety of consumption +phi=1; //coefficient associated to labor effort disutility + +rho=0.95; //coefficient associated to productivity shock + + +//----------------------------------------------------------------------------------------------------------------------- +// 3. The model +//----------------------------------------------------------------------------------------------------------------------- + + +model; + + +a=rho*(a(-1))+u; + +1/c=beta*(1/(c(+1)))*(r/(pai(+1))); //euler + + +omega*pai*(pai-1)=beta*omega*(c/(c(+1)))*(pai(+1))*(pai(+1)-1)+epsilon*exp(a)*n*(c/exp(a)*phi*n^gamma-(epsilon-1)/epsilon); //NK pc +//pai*(pai-1)/c = beta*pai(+1)*(pai(+1)-1)/c(+1)+epsilon*phi*n^(gamma+1)/omega-exp(a)*n*(epsilon-1)/(omega*c); //NK pc + +(exp(a))*n=c+(omega/2)*((pai-1)^2); + +end; + +//-------------------------------------------------------------------------------------------------------------------------- +// 4. Steady state +//--------------------------------------------------------------------------------------------------------------------------- + +initval; + +pai=1; +r=1/beta; +c=0.9671684882; +n=0.9671684882; +a=0; + + +end; + + + +//--------------------------------------------------------------------------------------------------------------------------- +// 5. shocks +//--------------------------------------------------------------------------------------------------------------------------- + +shocks; +var u; stderr 0.008; + +end; + +//-------------------------------------------------------------------------------------------------------------------------- +// 6. Ramsey problem +//-------------------------------------------------------------------------------------------------------------------------- + +planner_objective(ln(c)-phi*((n^(1+gamma))/(1+gamma))); + +write_latex_static_model; + +ramsey_policy(planner_discount=0.99); + + + diff --git a/tests/optimal_policy/nk_ramsey_expectation.mod b/tests/optimal_policy/nk_ramsey_expectation.mod index 6ef787945..00212c000 100644 --- a/tests/optimal_policy/nk_ramsey_expectation.mod +++ b/tests/optimal_policy/nk_ramsey_expectation.mod @@ -1,96 +1,96 @@ -//MODEL: -// test for using expectation operator with Ramsey policy -// The results is validated by comparing with replacing manually the expectation with an -// auxiliary variable in nk_ramsey_expectation_a.mod -// Note that the example doesn't make any sense from an economic point of view. - - -//------------------------------------------------------------------------------------------------------------------------ -//1. Variable declaration -//------------------------------------------------------------------------------------------------------------------------ - -var pai, c, n, r, a; - -//4 variables + 1 shock - -varexo u; - - - - -//------------------------------------------------------------------------------------------------------------------------ -// 2. Parameter declaration and calibration -//------------------------------------------------------------------------------------------------------------------------- - -parameters beta, rho, epsilon, omega, phi, gamma; - -beta=0.99; -gamma=3; //Frish elasticity -omega=17; //price stickyness -epsilon=8; //elasticity for each variety of consumption -phi=1; //coefficient associated to labor effort disutility - -rho=0.95; //coefficient associated to productivity shock - - -//----------------------------------------------------------------------------------------------------------------------- -// 3. The model -//----------------------------------------------------------------------------------------------------------------------- - - -model; - - -a=rho*(a(-1))+u; - -1/c=beta*(1/(c(+1)))*(r/expectation(0)(pai(+1))); //euler - - -omega*pai*(pai-1)=beta*omega*(c/(c(+1)))*(pai(+1))*(pai(+1)-1)+epsilon*exp(a)*n*(c/exp(a)*phi*n^gamma-(epsilon-1)/epsilon); //NK pc -//pai*(pai-1)/c = beta*pai(+1)*(pai(+1)-1)/c(+1)+epsilon*phi*n^(gamma+1)/omega-exp(a)*n*(epsilon-1)/(omega*c); //NK pc - -(exp(a))*n=c+(omega/2)*((pai-1)^2); - -end; - -//-------------------------------------------------------------------------------------------------------------------------- -// 4. Steady state -//--------------------------------------------------------------------------------------------------------------------------- - -initval; -% this is the exact steady state under optimal policy -%important for the comparison - -pai=1; -r=1/beta; -c=((epsilon-1)/(epsilon*phi))^(1/(1+gamma)); -n=c; -a=0; - -end; - - - -//--------------------------------------------------------------------------------------------------------------------------- -// 5. shocks -//--------------------------------------------------------------------------------------------------------------------------- - -shocks; -var u; stderr 0.008; - -end; - -//-------------------------------------------------------------------------------------------------------------------------- -// 6. Ramsey problem -//-------------------------------------------------------------------------------------------------------------------------- - -planner_objective(ln(c)-phi*((n^(1+gamma))/(1+gamma))); - -write_latex_static_model; -write_latex_dynamic_model; - -options_.solve_tolf=1e-12; -ramsey_policy(planner_discount=0.99); - - - +//MODEL: +// test for using expectation operator with Ramsey policy +// The results is validated by comparing with replacing manually the expectation with an +// auxiliary variable in nk_ramsey_expectation_a.mod +// Note that the example doesn't make any sense from an economic point of view. + + +//------------------------------------------------------------------------------------------------------------------------ +//1. Variable declaration +//------------------------------------------------------------------------------------------------------------------------ + +var pai, c, n, r, a; + +//4 variables + 1 shock + +varexo u; + + + + +//------------------------------------------------------------------------------------------------------------------------ +// 2. Parameter declaration and calibration +//------------------------------------------------------------------------------------------------------------------------- + +parameters beta, rho, epsilon, omega, phi, gamma; + +beta=0.99; +gamma=3; //Frish elasticity +omega=17; //price stickyness +epsilon=8; //elasticity for each variety of consumption +phi=1; //coefficient associated to labor effort disutility + +rho=0.95; //coefficient associated to productivity shock + + +//----------------------------------------------------------------------------------------------------------------------- +// 3. The model +//----------------------------------------------------------------------------------------------------------------------- + + +model; + + +a=rho*(a(-1))+u; + +1/c=beta*(1/(c(+1)))*(r/expectation(0)(pai(+1))); //euler + + +omega*pai*(pai-1)=beta*omega*(c/(c(+1)))*(pai(+1))*(pai(+1)-1)+epsilon*exp(a)*n*(c/exp(a)*phi*n^gamma-(epsilon-1)/epsilon); //NK pc +//pai*(pai-1)/c = beta*pai(+1)*(pai(+1)-1)/c(+1)+epsilon*phi*n^(gamma+1)/omega-exp(a)*n*(epsilon-1)/(omega*c); //NK pc + +(exp(a))*n=c+(omega/2)*((pai-1)^2); + +end; + +//-------------------------------------------------------------------------------------------------------------------------- +// 4. Steady state +//--------------------------------------------------------------------------------------------------------------------------- + +initval; +% this is the exact steady state under optimal policy +%important for the comparison + +pai=1; +r=1/beta; +c=((epsilon-1)/(epsilon*phi))^(1/(1+gamma)); +n=c; +a=0; + +end; + + + +//--------------------------------------------------------------------------------------------------------------------------- +// 5. shocks +//--------------------------------------------------------------------------------------------------------------------------- + +shocks; +var u; stderr 0.008; + +end; + +//-------------------------------------------------------------------------------------------------------------------------- +// 6. Ramsey problem +//-------------------------------------------------------------------------------------------------------------------------- + +planner_objective(ln(c)-phi*((n^(1+gamma))/(1+gamma))); + +write_latex_static_model; +write_latex_dynamic_model; + +options_.solve_tolf=1e-12; +ramsey_policy(planner_discount=0.99); + + + diff --git a/tests/optimal_policy/nk_ramsey_expectation_a.mod b/tests/optimal_policy/nk_ramsey_expectation_a.mod index cbd7a5f34..8755e7f36 100644 --- a/tests/optimal_policy/nk_ramsey_expectation_a.mod +++ b/tests/optimal_policy/nk_ramsey_expectation_a.mod @@ -1,104 +1,104 @@ -//MODEL: -// test for using expectation operator with Ramsey policy -// Here, the expected variable is replaced manually with an auxiliary variable (epai) -// We check that the result is the same as with an explicit expectation operator in nk_ramsey_expectation.mod -// Note that the example doesn't make any sense from an economic point of view. - -//------------------------------------------------------------------------------------------------------------------------ -//1. Variable declaration -//------------------------------------------------------------------------------------------------------------------------ - -var pai, c, n, r, a, epai; - -//4 variables + 1 shock - -varexo u; - - - - -//------------------------------------------------------------------------------------------------------------------------ -// 2. Parameter declaration and calibration -//------------------------------------------------------------------------------------------------------------------------- - -parameters beta, rho, epsilon, omega, phi, gamma; - -beta=0.99; -gamma=3; //Frish elasticity -omega=17; //price stickyness -epsilon=8; //elasticity for each variety of consumption -phi=1; //coefficient associated to labor effort disutility - -rho=0.95; //coefficient associated to productivity shock - - -//----------------------------------------------------------------------------------------------------------------------- -// 3. The model -//----------------------------------------------------------------------------------------------------------------------- - - -model; - - -a=rho*(a(-1))+u; - -1/c=beta*(1/(c(+1)))*(r/epai); //euler - - -omega*pai*(pai-1)=beta*omega*(c/(c(+1)))*(pai(+1))*(pai(+1)-1)+epsilon*exp(a)*n*(c/exp(a)*phi*n^gamma-(epsilon-1)/epsilon); //NK pc -//pai*(pai-1)/c = beta*pai(+1)*(pai(+1)-1)/c(+1)+epsilon*phi*n^(gamma+1)/omega-exp(a)*n*(epsilon-1)/(omega*c); //NK pc - -(exp(a))*n=c+(omega/2)*((pai-1)^2); - -epai = pai(+1); -end; - -//-------------------------------------------------------------------------------------------------------------------------- -// 4. Steady state -//--------------------------------------------------------------------------------------------------------------------------- - -initval; -% this is the exact steady state under optimal policy -%important for the comparison - -pai=1; -epai=1; -r=1/beta; -c=((epsilon-1)/(epsilon*phi))^(1/(1+gamma)); -n=c; -a=0; - - -end; - - - -//--------------------------------------------------------------------------------------------------------------------------- -// 5. shocks -//--------------------------------------------------------------------------------------------------------------------------- - -shocks; -var u; stderr 0.008; - -end; - -//-------------------------------------------------------------------------------------------------------------------------- -// 6. Ramsey problem -//-------------------------------------------------------------------------------------------------------------------------- - -planner_objective(ln(c)-phi*((n^(1+gamma))/(1+gamma))); - -options_.solve_tolf=1e-12; -ramsey_policy(planner_discount=0.99); - -o1=load('nk_ramsey_expectation_results'); -if (norm(o1.oo_.dr.ghx-oo_.dr.ghx,inf) > 1e-12) - error('ghx doesn''t match') -end -if (norm(o1.oo_.dr.ghu-oo_.dr.ghu,inf) > 1e-12) - error('ghu doesn''t match') -end -if (abs(o1.oo_.planner_objective_value(1)-oo_.planner_objective_value(1)) > 1e-12) - error('planner objective value doesn''t match') -end - +//MODEL: +// test for using expectation operator with Ramsey policy +// Here, the expected variable is replaced manually with an auxiliary variable (epai) +// We check that the result is the same as with an explicit expectation operator in nk_ramsey_expectation.mod +// Note that the example doesn't make any sense from an economic point of view. + +//------------------------------------------------------------------------------------------------------------------------ +//1. Variable declaration +//------------------------------------------------------------------------------------------------------------------------ + +var pai, c, n, r, a, epai; + +//4 variables + 1 shock + +varexo u; + + + + +//------------------------------------------------------------------------------------------------------------------------ +// 2. Parameter declaration and calibration +//------------------------------------------------------------------------------------------------------------------------- + +parameters beta, rho, epsilon, omega, phi, gamma; + +beta=0.99; +gamma=3; //Frish elasticity +omega=17; //price stickyness +epsilon=8; //elasticity for each variety of consumption +phi=1; //coefficient associated to labor effort disutility + +rho=0.95; //coefficient associated to productivity shock + + +//----------------------------------------------------------------------------------------------------------------------- +// 3. The model +//----------------------------------------------------------------------------------------------------------------------- + + +model; + + +a=rho*(a(-1))+u; + +1/c=beta*(1/(c(+1)))*(r/epai); //euler + + +omega*pai*(pai-1)=beta*omega*(c/(c(+1)))*(pai(+1))*(pai(+1)-1)+epsilon*exp(a)*n*(c/exp(a)*phi*n^gamma-(epsilon-1)/epsilon); //NK pc +//pai*(pai-1)/c = beta*pai(+1)*(pai(+1)-1)/c(+1)+epsilon*phi*n^(gamma+1)/omega-exp(a)*n*(epsilon-1)/(omega*c); //NK pc + +(exp(a))*n=c+(omega/2)*((pai-1)^2); + +epai = pai(+1); +end; + +//-------------------------------------------------------------------------------------------------------------------------- +// 4. Steady state +//--------------------------------------------------------------------------------------------------------------------------- + +initval; +% this is the exact steady state under optimal policy +%important for the comparison + +pai=1; +epai=1; +r=1/beta; +c=((epsilon-1)/(epsilon*phi))^(1/(1+gamma)); +n=c; +a=0; + + +end; + + + +//--------------------------------------------------------------------------------------------------------------------------- +// 5. shocks +//--------------------------------------------------------------------------------------------------------------------------- + +shocks; +var u; stderr 0.008; + +end; + +//-------------------------------------------------------------------------------------------------------------------------- +// 6. Ramsey problem +//-------------------------------------------------------------------------------------------------------------------------- + +planner_objective(ln(c)-phi*((n^(1+gamma))/(1+gamma))); + +options_.solve_tolf=1e-12; +ramsey_policy(planner_discount=0.99); + +o1=load('nk_ramsey_expectation_results'); +if (norm(o1.oo_.dr.ghx-oo_.dr.ghx,inf) > 1e-12) + error('ghx doesn''t match') +end +if (norm(o1.oo_.dr.ghu-oo_.dr.ghu,inf) > 1e-12) + error('ghu doesn''t match') +end +if (abs(o1.oo_.planner_objective_value(1)-oo_.planner_objective_value(1)) > 1e-12) + error('planner objective value doesn''t match') +end + diff --git a/tests/pi2004/idata.m b/tests/pi2004/idata.m index 9ce34b9eb..e7a5a2c50 100644 --- a/tests/pi2004/idata.m +++ b/tests/pi2004/idata.m @@ -1,5 +1,5 @@ -load ych.dat; -data = log(ych); -oy = data(:,1); -oc = data(:,2); +load ych.dat; +data = log(ych); +oy = data(:,1); +oc = data(:,2); oh = data(:,3); \ No newline at end of file diff --git a/tests/practicing/datasaver.m b/tests/practicing/datasaver.m index 2c72e20e1..0ac532a4a 100644 --- a/tests/practicing/datasaver.m +++ b/tests/practicing/datasaver.m @@ -1,58 +1,58 @@ -function datasaver (s,var_list) -% datasaver saves variables simulated by Dynare -% INPUT -% s: a string containing the name of the destination *.m file -% var_list: a character matrix containting the name of the variables -% to be saved (optional, default: all endogenous variables) -% OUTPUT -% none -% This is part of the examples included in F. Barillas, R. Colacito, -% S. Kitao, C. Matthes, T. Sargent and Y. Shin (2007) "Practicing -% Dynare". - -% Modified by M. Juillard to make it also compatible with Dynare -% version 4 (12/4/07) - - -global lgy_ lgx_ y_ endo_nbr M_ oo_ - -% test and adapt for Dynare version 4 -if isempty(lgy_) - lgy_ = M_.endo_names; - lgx_ + M_.exo_names; - y_ = oo_.endo_simul; - endo_nbr = M_.endo_nbr; -end - -sm=[s,'.m']; -fid=fopen(sm,'w') ; - -n = size(var_list,1); -if n == 0 - n = endo_nbr; - ivar = [1:n]'; - var_list = lgy_; -else - ivar=zeros(n,1); - for i=1:n - i_tmp = strmatch(var_list(i,:),lgy_,'exact'); - if isempty(i_tmp) - error (['One of the specified variables does not exist']) ; - else - ivar(i) = i_tmp; - end - end -end - - -for i = 1:n - fprintf(fid,[lgy_(ivar(i),:), '=['],'\n') ; - fprintf(fid,'\n') ; - fprintf(fid,'%15.8g\n',y_(ivar(i),:)') ; - fprintf(fid,'\n') ; - fprintf(fid,'];\n') ; - fprintf(fid,'\n') ; -end -fclose(fid) ; - -return ; +function datasaver (s,var_list) +% datasaver saves variables simulated by Dynare +% INPUT +% s: a string containing the name of the destination *.m file +% var_list: a character matrix containting the name of the variables +% to be saved (optional, default: all endogenous variables) +% OUTPUT +% none +% This is part of the examples included in F. Barillas, R. Colacito, +% S. Kitao, C. Matthes, T. Sargent and Y. Shin (2007) "Practicing +% Dynare". + +% Modified by M. Juillard to make it also compatible with Dynare +% version 4 (12/4/07) + + +global lgy_ lgx_ y_ endo_nbr M_ oo_ + +% test and adapt for Dynare version 4 +if isempty(lgy_) + lgy_ = M_.endo_names; + lgx_ + M_.exo_names; + y_ = oo_.endo_simul; + endo_nbr = M_.endo_nbr; +end + +sm=[s,'.m']; +fid=fopen(sm,'w') ; + +n = size(var_list,1); +if n == 0 + n = endo_nbr; + ivar = [1:n]'; + var_list = lgy_; +else + ivar=zeros(n,1); + for i=1:n + i_tmp = strmatch(var_list(i,:),lgy_,'exact'); + if isempty(i_tmp) + error (['One of the specified variables does not exist']) ; + else + ivar(i) = i_tmp; + end + end +end + + +for i = 1:n + fprintf(fid,[lgy_(ivar(i),:), '=['],'\n') ; + fprintf(fid,'\n') ; + fprintf(fid,'%15.8g\n',y_(ivar(i),:)') ; + fprintf(fid,'\n') ; + fprintf(fid,'];\n') ; + fprintf(fid,'\n') ; +end +fclose(fid) ; + +return ; diff --git a/tests/recursive/data_ca1.m b/tests/recursive/data_ca1.m index b0b4f0546..c28fae1a2 100644 --- a/tests/recursive/data_ca1.m +++ b/tests/recursive/data_ca1.m @@ -1,100 +1,100 @@ -data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... --0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... --0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... --0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... --0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... --0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... --0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... -1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... -2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... -1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... -1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... -1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... -1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... -0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... -1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... -1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... -0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... -1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... -1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... --0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... -0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... -0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... --0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... -2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... -1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... -1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... -1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... -1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... -1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... -0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... -0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... -1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... -0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... -0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... -0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... -0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... --0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... --0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... --0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... --1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... -0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... -0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... -0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... --0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... -0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... -0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... -0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... -0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... -0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... -0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... -0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... -1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... -1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... -1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... -0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... -0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... --0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... -0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... -0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... -0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... -0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... -1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... -0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... -0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... -1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... -1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... -0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... -1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... -0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... -1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... -1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... -1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... -1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... -1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... -1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... -1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... -0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... -1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... -0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... -0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... -0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... --0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... -0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... -1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... -1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... -0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... -]; - -data = reshape(data,5,86)'; -y_obs = data(:,1); -pie_obs = data(:,2); -R_obs = data(:,3); -de = data(:,4); -dq = data(:,5); - -%Country: Canada -%Sample Range: 1981:2 to 2002:3 -%Observations: 86 -%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], -% Exchange Rate Change [%], Terms of Trade Change [%] +data = [0.928467646476 11.8716889412 20 0.418037507392 0.227382377518 ... +-0.705994063083 11.7522582094 21.25 1.09254424511 -1.29488274994 ... +-0.511895351926 9.68144025625 17.25 -1.66150408407 0.331508393098 ... +-0.990955971267 10.0890781236 17 1.43016275252 -2.43589670141 ... +-0.981233061806 12.1094840679 18.25 2.91293288733 -0.790246576864 ... +-0.882182844512 8.54559460406 15 0.419579139481 0.358729719566 ... +-0.930893002836 6.19238374422 12.5 -1.48847457959 0.739779938797 ... +1.53158206947 2.76544271886 11.5 -0.336216769682 0.455559918769 ... +2.2659052834 5.47418162513 11 0.306436789767 -0.0707985731221 ... +1.05419803797 6.35698426189 11 0.140700250477 0.620401487202 ... +1.20161076793 3.4253301593 11 0.461296492351 0.14354323987 ... +1.73934077971 4.70926070322 11.5 1.35798282982 0.38564694435 ... +1.71735262584 3.54232079749 12.5 2.9097529155 -0.804308583301 ... +0.426343657844 3.32719108897 13 1.64214862652 -1.18214664701 ... +1.67751812324 2.93444727338 11.25 0.344434910651 -1.6529373719 ... +1.37013301099 4.72303361923 11.75 2.61511526582 0.327684243041 ... +0.281231073781 4.4893853071 10.5 1.17043449257 1.12855106649 ... +1.53638992834 3.7325309699 10.25 -0.683947046728 0.11943538737 ... +1.68081431462 3.34729969129 10 1.41159342106 -1.59065680853 ... +-0.343321601133 5.05563513564 12 1.75117366498 -2.40127764642 ... +0.873415608666 3.2779996255 10.25 -1.39895866711 0.0971444398216 ... +0.26399696544 4.78229419828 9.75 0.0914692438124 0.299310457612 ... +-0.562233624818 3.88598638237 9.75 -0.0505384765105 0.332826708151 ... +2.15161914936 3.84859710132 8.75 -3.44811080489 0.789138678784 ... +1.2345093726 5.62225030942 9.5 -0.366945407434 2.32974981198 ... +1.62554967459 4.24667132831 10 -0.800958371402 0.0293183770935 ... +1.33035402527 2.75248979249 9.75 -0.855723113225 0.852493939813 ... +1.52078814077 3.53415985826 9.75 -3.37963469203 -1.05133958119 ... +1.16704983697 4.92754079464 10.75 -3.0142303324 0.459907431978 ... +0.277213572101 4.55532133037 11.75 -0.851995599415 2.03242034852 ... +0.842215068977 3.11164509647 12.25 -1.08290421696 0.014323281961 ... +1.05325028606 4.92882647578 13.5 -1.1953883867 0.706764750654 ... +0.453051253568 6.82998950103 13.5 0.111803656462 0.088462593153 ... +0.199885995525 5.82643354662 13.5 -0.920501518421 -0.26504958666 ... +0.137907999624 2.66076369132 13.5 -1.17122929812 -0.995642430514 ... +0.721949686709 5.70497876823 14.25 1.19378169018 -1.10644839651 ... +-0.418465249225 3.75861110232 14.75 -1.03131674824 0.188507675831 ... +-0.644028342116 4.15104788154 13.75 -1.48911756546 0.204560913792 ... +-0.848213852668 5.65580324027 12.75 0.677011703877 -0.849628054542 ... +-1.51954076928 11.4866911266 11.25 -0.446024680774 -0.456342350765 ... +0.265275055215 2.85472749592 9.75 -0.598778202436 -0.907311640831 ... +0.356162529063 2.29614015658 9.5 -0.46820788432 -1.22130883441 ... +0.368308864363 -0.539083504685 8 -0.781333991956 0.374007246518 ... +-0.145751412732 1.61507621789 8.25 3.68291932628 1.32438399845 ... +0.285457283664 2.14334055993 7 1.42819405379 -0.00818660844123 ... +0.372390129412 1.60000213334 6.25 0.626106424052 -0.10136772765 ... +0.382720203063 1.72614243263 7.25 4.89631941021 -1.10060711916 ... +0.737957515573 2.90430582851 6 -0.0422721010314 0.4178952497 ... +0.649532581668 0.657135682543 6 0.692066153971 0.422299120276 ... +0.627159201987 1.70352689913 5.75 2.62066711305 -1.29237304034 ... +0.905441299817 1.95663197267 5.5 1.5949697565 -0.27115830703 ... +1.49322577898 -2.08741765309 6.25 1.23027694802 0.418336889527 ... +1.48750731567 -1.57274121871 8 3.01660550994 -0.893958254365 ... +1.39783858087 2.22623066426 7 -0.80842319214 1.47625453886 ... +0.89274836317 1.30378081742 8 -0.249485058661 0.159871204185 ... +0.920652246088 4.1437741965 9.75 2.8204453623 0.178149239655 ... +-0.00264276644799 3.07989972052 8.75 -2.56342461535 2.105998353 ... +0.0198190461681 0.766283759256 8 -1.15838865989 1.56888883418 ... +0.440050515311 0.127570085801 7.5 0.0400753569995 0.028914333532 ... +0.129536637901 1.78174141526 6.75 0.959943962785 0.307781224401 ... +0.398549827172 3.03606770667 6.5 -0.340209794742 0.100979469478 ... +1.17174775425 0.629625188037 5.75 0.403003686814 0.902394579377 ... +0.991163981251 2.50862910684 4.75 -1.44963996982 1.16150986945 ... +0.967603566096 2.12003739013 4.75 0.610846030775 -0.889994896068 ... +1.14689383604 1.24185011459 4.75 2.01098091308 -1.73846431001 ... +1.32593824054 0.990713820685 4.75 -0.0955142989332 -0.0369257308362 ... +0.861135002644 -0.24744943605 6 1.72793107135 -0.691506789639 ... +1.26870850151 2.09844764887 6.5 1.50720217572 -1.31399187077 ... +0.260364987715 1.10650139716 6.5 1.13659047496 0.0720441664643 ... +1.09731242214 0.490796381346 7.25 4.59123894147 -2.14073070763 ... +1.63792841781 0.612652594286 6.75 1.79604605035 -0.644363995357 ... +1.48465576034 0.978295808687 6.75 -2.00753620902 1.39437534964 ... +1.0987608663 4.25212569087 6.25 -2.58901196498 2.56054320803 ... +1.42592178132 2.76984518311 6.25 0.888195752358 1.03114549274 ... +1.52958239462 1.31795955491 6.5 -0.902907564082 -0.0952198893776 ... +1.0170168994 2.14733589918 7 -1.3054866978 2.68803738466 ... +0.723253652257 3.43552889347 7.5 1.8213700853 0.592593586195 ... +1.24720806008 3.87383806577 7.5 0.0522300654168 0.988871238698 ... +0.482531471239 2.67793287032 7.5 2.9693944293 -0.108591166081 ... +0.154056100439 0.927269031704 6.75 0.119222057561 3.30489209451 ... +0.0694865769274 6.65916526788 6.25 0.889014476084 -2.83976849035 ... +-0.121267434867 0.341442615696 5.25 0.323053239216 -3.49289229012 ... +0.726473690375 -3.5423730964 4 2.19149290449 -3.20855054004 ... +1.39271709108 2.63121085718 3.75 0.88406577736 0.75622580197 ... +1.07502077727 5.88578836799 4.25 -2.55088273352 2.89018116374 ... +0.759049251607 4.24703604223 4.5 0.575687665685 -0.388292506167 ... +]; + +data = reshape(data,5,86)'; +y_obs = data(:,1); +pie_obs = data(:,2); +R_obs = data(:,3); +de = data(:,4); +dq = data(:,5); + +%Country: Canada +%Sample Range: 1981:2 to 2002:3 +%Observations: 86 +%Variables: Real GDP Growth [%], Inflation [annualized %], Nom Rate [%], +% Exchange Rate Change [%], Terms of Trade Change [%] diff --git a/tests/steady_state/multi_leads.mod b/tests/steady_state/multi_leads.mod index 8d6d3c877..85573c3f8 100644 --- a/tests/steady_state/multi_leads.mod +++ b/tests/steady_state/multi_leads.mod @@ -1,27 +1,27 @@ - @#define N = 4 - var A B; - varexo eB; - parameters Bss rho; - - Bss=1; - rho=0.9; - - model; - A = B(@{N}); - B = (1-rho)*Bss +rho*B(-1) +eB; - end; - - steady_state_model; - A = Bss; - B = Bss; - end; - - resid; - steady; - check; - - shocks; - var eB ; stderr 1 ; - end; - - stoch_simul(order=1,irf=0) ; + @#define N = 4 + var A B; + varexo eB; + parameters Bss rho; + + Bss=1; + rho=0.9; + + model; + A = B(@{N}); + B = (1-rho)*Bss +rho*B(-1) +eB; + end; + + steady_state_model; + A = Bss; + B = Bss; + end; + + resid; + steady; + check; + + shocks; + var eB ; stderr 1 ; + end; + + stoch_simul(order=1,irf=0) ; diff --git a/tests/steady_state/walsh1_initval.mod b/tests/steady_state/walsh1_initval.mod index b99016724..bcbebc43f 100644 --- a/tests/steady_state/walsh1_initval.mod +++ b/tests/steady_state/walsh1_initval.mod @@ -1,68 +1,68 @@ -var y c k m n R pi z u; -varexo e sigma; -// sigma stands for phi in the eq 2.37 p.69 - -parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; -//phi1 stands for capital phi in eq.2.68 and 2.69 -//phi2 stands for lowercase phi in eq. 2.66 - -change_type(var) Psi; -change_type(parameters) n; - -alpha = 0.36; -beta = 0.989; -gamm = 0.5; -delta = 0.019; -phi1 = 2; -phi2 = 0; -eta = 1; -a = 0.95; -b = 2.56; -rho = 0.95; -//Psi = 1.47630583; -thetass = 1.0125; - -model; - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); - -Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); - -exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; - -exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); - -exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); - -exp(m) = exp(m(-1))*(u+thetass)/(1+pi); - -z = rho*z(-1) + e; - -u = gamm*u(-1) + phi2*z(-1) + sigma; - -end; - -shocks; -var e; stderr 0.007; -var sigma;stderr 0.0089; -end; - -n=log(1/3); - -initval; -y = 0.2; -c = 0.03; -k = 2.7; -m = 0.3; -Psi = 1.5; -R = 0.01; -pi = 0.01; -z = 0; -u = 0; -end; - - -steady; - +var y c k m n R pi z u; +varexo e sigma; +// sigma stands for phi in the eq 2.37 p.69 + +parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; +//phi1 stands for capital phi in eq.2.68 and 2.69 +//phi2 stands for lowercase phi in eq. 2.66 + +change_type(var) Psi; +change_type(parameters) n; + +alpha = 0.36; +beta = 0.989; +gamm = 0.5; +delta = 0.019; +phi1 = 2; +phi2 = 0; +eta = 1; +a = 0.95; +b = 2.56; +rho = 0.95; +//Psi = 1.47630583; +thetass = 1.0125; + +model; + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); + +Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); + +exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; + +exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); + +exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); + +exp(m) = exp(m(-1))*(u+thetass)/(1+pi); + +z = rho*z(-1) + e; + +u = gamm*u(-1) + phi2*z(-1) + sigma; + +end; + +shocks; +var e; stderr 0.007; +var sigma;stderr 0.0089; +end; + +n=log(1/3); + +initval; +y = 0.2; +c = 0.03; +k = 2.7; +m = 0.3; +Psi = 1.5; +R = 0.01; +pi = 0.01; +z = 0; +u = 0; +end; + + +steady; + diff --git a/tests/steady_state/walsh1_old_ss.mod b/tests/steady_state/walsh1_old_ss.mod index 39eb8910d..1b27d832d 100644 --- a/tests/steady_state/walsh1_old_ss.mod +++ b/tests/steady_state/walsh1_old_ss.mod @@ -1,51 +1,51 @@ -var y c k m n R pi z u; -varexo e sigma; -// sigma stands for phi in the eq 2.37 p.69 - -parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; -//phi1 stands for capital phi in eq.2.68 and 2.69 -//phi2 stands for lowercase phi in eq. 2.66 - -alpha = 0.36; -beta = 0.989; -gamm = 0.5; -delta = 0.019; -phi1 = 2; -phi2 = 0; -eta = 1; -a = 0.95; -b = 2.56; -rho = 0.95; -Psi = 1.47630583; -thetass = 1.0125; - -model; - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); - -Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); - -exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; - -exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); - -exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); - -exp(m) = exp(m(-1))*(u+thetass)/(1+pi); - -z = rho*z(-1) + e; - -u = gamm*u(-1) + phi2*z(-1) + sigma; - -end; - -shocks; -var e; stderr 0.007; -var sigma;stderr 0.0089; -end; - - -steady; - +var y c k m n R pi z u; +varexo e sigma; +// sigma stands for phi in the eq 2.37 p.69 + +parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; +//phi1 stands for capital phi in eq.2.68 and 2.69 +//phi2 stands for lowercase phi in eq. 2.66 + +alpha = 0.36; +beta = 0.989; +gamm = 0.5; +delta = 0.019; +phi1 = 2; +phi2 = 0; +eta = 1; +a = 0.95; +b = 2.56; +rho = 0.95; +Psi = 1.47630583; +thetass = 1.0125; + +model; + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); + +Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); + +exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; + +exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); + +exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); + +exp(m) = exp(m(-1))*(u+thetass)/(1+pi); + +z = rho*z(-1) + e; + +u = gamm*u(-1) + phi2*z(-1) + sigma; + +end; + +shocks; +var e; stderr 0.007; +var sigma;stderr 0.0089; +end; + + +steady; + diff --git a/tests/steady_state/walsh1_ssm.mod b/tests/steady_state/walsh1_ssm.mod index 8d1de749e..11ad8da6b 100644 --- a/tests/steady_state/walsh1_ssm.mod +++ b/tests/steady_state/walsh1_ssm.mod @@ -1,72 +1,72 @@ -var y c k m n R pi z u; -varexo e sigma; -// sigma stands for phi in the eq 2.37 p.69 - -parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; -//phi1 stands for capital phi in eq.2.68 and 2.69 -//phi2 stands for lowercase phi in eq. 2.66 - -alpha = 0.36; -beta = 0.989; -gamm = 0.5; -delta = 0.019; -phi1 = 2; -phi2 = 0; -eta = 1; -a = 0.95; -b = 2.56; -rho = 0.95; -Psi = 1.47630583; -thetass = 1.0125; - -model; - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); - -Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); - -exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; - -exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); - -exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); - -exp(m) = exp(m(-1))*(u+thetass)/(1+pi); - -z = rho*z(-1) + e; - -u = gamm*u(-1) + phi2*z(-1) + sigma; - -end; - -shocks; -var e; stderr 0.007; -var sigma;stderr 0.0089; -end; - -steady_state_model; -// solving in levels -// calibrating n = 1/3 and recovering the value of Psi -// adapting solution Walsh (2003) p. 84 -pi = thetass-1; -en = 1/3; -eR = 1/beta; -y_k = (1/alpha)*(1/beta-1+delta); -ek = en*y_k^(-1/(1-alpha)); -ec = ek*(y_k-delta); -em = ec*(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^(-1/b); -ey = ek*y_k; -Xss = a*ec^(1-b)*(1+(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^((b-1)/b)); -Psi = (1-alpha)*(ey/en)*Xss^((b-phi1)/(1-b))*a*ec^(-b)*(1-en)^eta; -n = log(en); -k = log(ek); -m = log(em); -c = log(ec); -y = log(ey); -R = log(eR); -end; - -steady; - +var y c k m n R pi z u; +varexo e sigma; +// sigma stands for phi in the eq 2.37 p.69 + +parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; +//phi1 stands for capital phi in eq.2.68 and 2.69 +//phi2 stands for lowercase phi in eq. 2.66 + +alpha = 0.36; +beta = 0.989; +gamm = 0.5; +delta = 0.019; +phi1 = 2; +phi2 = 0; +eta = 1; +a = 0.95; +b = 2.56; +rho = 0.95; +Psi = 1.47630583; +thetass = 1.0125; + +model; + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); + +Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); + +exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; + +exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); + +exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); + +exp(m) = exp(m(-1))*(u+thetass)/(1+pi); + +z = rho*z(-1) + e; + +u = gamm*u(-1) + phi2*z(-1) + sigma; + +end; + +shocks; +var e; stderr 0.007; +var sigma;stderr 0.0089; +end; + +steady_state_model; +// solving in levels +// calibrating n = 1/3 and recovering the value of Psi +// adapting solution Walsh (2003) p. 84 +pi = thetass-1; +en = 1/3; +eR = 1/beta; +y_k = (1/alpha)*(1/beta-1+delta); +ek = en*y_k^(-1/(1-alpha)); +ec = ek*(y_k-delta); +em = ec*(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^(-1/b); +ey = ek*y_k; +Xss = a*ec^(1-b)*(1+(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^((b-1)/b)); +Psi = (1-alpha)*(ey/en)*Xss^((b-phi1)/(1-b))*a*ec^(-b)*(1-en)^eta; +n = log(en); +k = log(ek); +m = log(em); +c = log(ec); +y = log(ey); +R = log(eR); +end; + +steady; + diff --git a/tests/steady_state/walsh1_ssm_block.mod b/tests/steady_state/walsh1_ssm_block.mod index 05bd18125..38fe294ee 100644 --- a/tests/steady_state/walsh1_ssm_block.mod +++ b/tests/steady_state/walsh1_ssm_block.mod @@ -1,72 +1,72 @@ -var y c k m n R pi z u; -varexo e sigma; -// sigma stands for phi in the eq 2.37 p.69 - -parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; -//phi1 stands for capital phi in eq.2.68 and 2.69 -//phi2 stands for lowercase phi in eq. 2.66 - -alpha = 0.36; -beta = 0.989; -gamm = 0.5; -delta = 0.019; -phi1 = 2; -phi2 = 0; -eta = 1; -a = 0.95; -b = 2.56; -rho = 0.95; -Psi = 1.47630583; -thetass = 1.0125; - -model(block); - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); - -Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); - -(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); - -exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; - -exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); - -exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); - -exp(m) = exp(m(-1))*(u+thetass)/(1+pi); - -z = rho*z(-1) + e; - -u = gamm*u(-1) + phi2*z(-1) + sigma; - -end; - -shocks; -var e; stderr 0.007; -var sigma;stderr 0.0089; -end; - -steady_state_model; -// solving in levels -// calibrating n = 1/3 and recovering the value of Psi -// adapting solution Walsh (2003) p. 84 -pi = thetass-1; -en = 1/3; -eR = 1/beta; -y_k = (1/alpha)*(1/beta-1+delta); -ek = en*y_k^(-1/(1-alpha)); -ec = ek*(y_k-delta); -em = ec*(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^(-1/b); -ey = ek*y_k; -Xss = a*ec^(1-b)*(1+(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^((b-1)/b)); -Psi = (1-alpha)*(ey/en)*Xss^((b-phi1)/(1-b))*a*ec^(-b)*(1-en)^eta; -n = log(en); -k = log(ek); -m = log(em); -c = log(ec); -y = log(ey); -R = log(eR); -end; - -steady; - +var y c k m n R pi z u; +varexo e sigma; +// sigma stands for phi in the eq 2.37 p.69 + +parameters alpha beta delta gamm phi1 eta a b rho phi2 Psi thetass; +//phi1 stands for capital phi in eq.2.68 and 2.69 +//phi2 stands for lowercase phi in eq. 2.66 + +alpha = 0.36; +beta = 0.989; +gamm = 0.5; +delta = 0.019; +phi1 = 2; +phi2 = 0; +eta = 1; +a = 0.95; +b = 2.56; +rho = 0.95; +Psi = 1.47630583; +thetass = 1.0125; + +model(block); + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = (a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*(1-a)*exp(m)^(-b)+beta*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b)/(1+pi(+1)); + +Psi*(1-exp(n))^(-eta)/(a*exp(c)^(-b)*(a*exp(c)^(1-b) + (1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))) = (1-alpha)*exp(y)/exp(n); + +(a*exp(c)^(1-b)+(1-a)*exp(m)^(1-b))^((b-phi1)/(1-b))*a*exp(c)^(-b) = beta*exp(R(+1))*(a*exp(c(+1))^(1-b)+(1-a)*exp(m(+1))^(1-b))^((b-phi1)/(1-b))*a*exp(c(+1))^(-b); + +exp(R) = alpha*exp(y)/exp(k(-1)) + 1-delta; + +exp(k) = (1-delta)*exp(k(-1))+exp(y)-exp(c); + +exp(y) = exp(z)*exp(k(-1))^alpha*exp(n)^(1-alpha); + +exp(m) = exp(m(-1))*(u+thetass)/(1+pi); + +z = rho*z(-1) + e; + +u = gamm*u(-1) + phi2*z(-1) + sigma; + +end; + +shocks; +var e; stderr 0.007; +var sigma;stderr 0.0089; +end; + +steady_state_model; +// solving in levels +// calibrating n = 1/3 and recovering the value of Psi +// adapting solution Walsh (2003) p. 84 +pi = thetass-1; +en = 1/3; +eR = 1/beta; +y_k = (1/alpha)*(1/beta-1+delta); +ek = en*y_k^(-1/(1-alpha)); +ec = ek*(y_k-delta); +em = ec*(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^(-1/b); +ey = ek*y_k; +Xss = a*ec^(1-b)*(1+(a/(1-a))^(-1/b)*((thetass-beta)/thetass)^((b-1)/b)); +Psi = (1-alpha)*(ey/en)*Xss^((b-phi1)/(1-b))*a*ec^(-b)*(1-en)^eta; +n = log(en); +k = log(ek); +m = log(em); +c = log(ec); +y = log(ey); +R = log(eR); +end; + +steady; + diff --git a/tests/test.m b/tests/test.m index f05f5f1c4..a23db4311 100644 --- a/tests/test.m +++ b/tests/test.m @@ -1,4 +1,4 @@ -function test(a,b,n) - if max(max(abs(a)-abs(b))) > 1e-5 - error(['Test error in test ' int2str(n)]) +function test(a,b,n) + if max(max(abs(a)-abs(b))) > 1e-5 + error(['Test error in test ' int2str(n)]) end \ No newline at end of file