Convert files to Unix EOL

time-shift
Sébastien Villemot 2012-06-08 19:10:19 +02:00
parent c079ace8c3
commit 02efbd31a8
50 changed files with 8742 additions and 8742 deletions

View File

@ -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 ];

View File

@ -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];

View File

@ -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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
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

View File

@ -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 <http://www.gnu.org/licenses/>.
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<crit
rcode=1;
else
rcode=0;
end
end
function [A00,A11,A22,A33,A44,A55,WW,Q,endo_nbr,exo_nbr,aux,endo_augm_id]=GetDennisMatrices(AAlag,AA0,AAlead,BB,bigw,instr_id)
[eq_nbr,endo_nbr]=size(AAlag);
exo_nbr=size(BB,2);
y=setdiff(1:endo_nbr,instr_id);
instr_nbr=numel(instr_id);
A0=AA0(:,y);
A1=-AAlag(:,y);
A2=-AAlead(:,y);
A3=-AA0(:,instr_id);
A4=-AAlead(:,instr_id);
A5=-BB;
W=bigw(y,y);
Q=bigw(instr_id,instr_id);
% Adjust for possible lags in instruments by creating auxiliary equations
A6=-AAlag(:,instr_id);
aux=any(A6);
AuxiliaryVariables_nbr=sum(aux);
ny=eq_nbr;
m=eq_nbr+AuxiliaryVariables_nbr;
A00=zeros(m);A00(1:ny,1:ny)=A0;A00(ny+1:end,ny+1:end)=eye(AuxiliaryVariables_nbr);
A11=zeros(m);A11(1:ny,1:ny)=A1;A11(1:ny,ny+1:end)=A6(:,aux);
A22=zeros(m);A22(1:ny,1:ny)=A2;
A33=zeros(m,instr_nbr);A33(1:ny,1:end)=A3;A33(ny+1:end,aux)=eye(AuxiliaryVariables_nbr);
A44=zeros(m,instr_nbr);A44(1:ny,1:end)=A4;
A55=zeros(m,exo_nbr);A55(1:ny,1:end)=A5;
WW=zeros(m);WW(1:ny,1:ny)=W;
endo_augm_id=setdiff(1:endo_nbr+AuxiliaryVariables_nbr,instr_id);
end
function v= SylvesterDoubling (d,g,h,tol,maxit)
% DOUBLES Solves a Sylvester equation using doubling
%
% [v,info] = doubles (g,d,h,tol,maxit) uses a doubling algorithm
% to solve the Sylvester equation v = d + g v h
v = d;
for i =1:maxit,
vadd = g*v*h;
v = v+vadd;
if norm (vadd,1) <= (tol*norm(v,1))
break;
end
g = g*g;
h = h*h;
end
end
function v = SylvesterHessenbergSchur(d,g,h)
%
% DSYLHS Solves a discrete time sylvester equation using the
% Hessenberg-Schur algorithm
%
% v = DSYLHS(g,d,h) computes the matrix v that satisfies the
% discrete time sylvester equation
%
% v = d + g'vh
if size(g,1) >= 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<n,
b= i-1;
temp = [temp g*v(:,size(temp,2)+1:b)]; %#ok<AGROW>
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 <http://www.gnu.org/licenses/>.
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<crit
rcode=1;
else
rcode=0;
end
end
function [A00,A11,A22,A33,A44,A55,WW,Q,endo_nbr,exo_nbr,aux,endo_augm_id]=GetDennisMatrices(AAlag,AA0,AAlead,BB,bigw,instr_id)
[eq_nbr,endo_nbr]=size(AAlag);
exo_nbr=size(BB,2);
y=setdiff(1:endo_nbr,instr_id);
instr_nbr=numel(instr_id);
A0=AA0(:,y);
A1=-AAlag(:,y);
A2=-AAlead(:,y);
A3=-AA0(:,instr_id);
A4=-AAlead(:,instr_id);
A5=-BB;
W=bigw(y,y);
Q=bigw(instr_id,instr_id);
% Adjust for possible lags in instruments by creating auxiliary equations
A6=-AAlag(:,instr_id);
aux=any(A6);
AuxiliaryVariables_nbr=sum(aux);
ny=eq_nbr;
m=eq_nbr+AuxiliaryVariables_nbr;
A00=zeros(m);A00(1:ny,1:ny)=A0;A00(ny+1:end,ny+1:end)=eye(AuxiliaryVariables_nbr);
A11=zeros(m);A11(1:ny,1:ny)=A1;A11(1:ny,ny+1:end)=A6(:,aux);
A22=zeros(m);A22(1:ny,1:ny)=A2;
A33=zeros(m,instr_nbr);A33(1:ny,1:end)=A3;A33(ny+1:end,aux)=eye(AuxiliaryVariables_nbr);
A44=zeros(m,instr_nbr);A44(1:ny,1:end)=A4;
A55=zeros(m,exo_nbr);A55(1:ny,1:end)=A5;
WW=zeros(m);WW(1:ny,1:ny)=W;
endo_augm_id=setdiff(1:endo_nbr+AuxiliaryVariables_nbr,instr_id);
end
function v= SylvesterDoubling (d,g,h,tol,maxit)
% DOUBLES Solves a Sylvester equation using doubling
%
% [v,info] = doubles (g,d,h,tol,maxit) uses a doubling algorithm
% to solve the Sylvester equation v = d + g v h
v = d;
for i =1:maxit,
vadd = g*v*h;
v = v+vadd;
if norm (vadd,1) <= (tol*norm(v,1))
break;
end
g = g*g;
h = h*h;
end
end
function v = SylvesterHessenbergSchur(d,g,h)
%
% DSYLHS Solves a discrete time sylvester equation using the
% Hessenberg-Schur algorithm
%
% v = DSYLHS(g,d,h) computes the matrix v that satisfies the
% discrete time sylvester equation
%
% v = d + g'vh
if size(g,1) >= 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<n,
b= i-1;
temp = [temp g*v(:,size(temp,2)+1:b)]; %#ok<AGROW>
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

View File

@ -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 <http://www.gnu.org/licen
global M_ options_
OutputDirectoryName = CheckPath('Identification',M_.dname);
k = size(J,2); % number of parameters
if nargin<2 || isempty(n)
n = 4; % max n-tuple
end
if nargin<3 || isempty(TeX)
TeX = 0; % max n-tuple
end
cosnJ=zeros(k,n);
pars{k,n}=[];
for ll = 1:n,
h = dyn_waitbar(0,['Brute force collinearity for ' int2str(ll) ' parameters.']);
for ii = 1:k
tmp = find([1:k]~=ii);
tmp2 = nchoosek(tmp,ll);
cosnJ2=zeros(size(tmp2,1),1);
b=[];
for jj = 1:size(tmp2,1)
[cosnJ2(jj,1), b(:,jj)] = cosn([J(:,ii),J(:,tmp2(jj,:))]);
end
cosnJ(ii,ll) = max(cosnJ2(:,1));
if cosnJ(ii,ll)>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 <http://www.gnu.org/licen
global M_ options_
OutputDirectoryName = CheckPath('Identification',M_.dname);
k = size(J,2); % number of parameters
if nargin<2 || isempty(n)
n = 4; % max n-tuple
end
if nargin<3 || isempty(TeX)
TeX = 0; % max n-tuple
end
cosnJ=zeros(k,n);
pars{k,n}=[];
for ll = 1:n,
h = dyn_waitbar(0,['Brute force collinearity for ' int2str(ll) ' parameters.']);
for ii = 1:k
tmp = find([1:k]~=ii);
tmp2 = nchoosek(tmp,ll);
cosnJ2=zeros(size(tmp2,1),1);
b=[];
for jj = 1:size(tmp2,1)
[cosnJ2(jj,1), b(:,jj)] = cosn([J(:,ii),J(:,tmp2(jj,:))]);
end
cosnJ(ii,ll) = max(cosnJ2(:,1));
if cosnJ(ii,ll)>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

View File

@ -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 <http://www.gnu.org/licenses/>.
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 <http://www.gnu.org/licenses/>.
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;

View File

@ -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 ;

File diff suppressed because it is too large Load Diff

View File

@ -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 ;

View File

@ -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);

View File

@ -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 [%]

View File

@ -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 ];

View File

@ -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 ];

View File

@ -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];

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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',[]);

View File

@ -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

View File

@ -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 ];

View File

@ -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 ];

View File

@ -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)))

View File

@ -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 [%]

View File

@ -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 [%]

View File

@ -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

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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 ;

View File

@ -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 [%]

View File

@ -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) ;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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