Added integration test...

For nonlinear simul_backward_model. Use a Solow model with varying
growth rates of efficiency and population.
time-shift
Stéphane Adjemian (Charybdis) 2016-12-06 22:57:12 +01:00
parent 6fd715a3b8
commit 535fa1a721
2 changed files with 68 additions and 0 deletions

View File

@ -240,6 +240,7 @@ MODFILES = \
ep/linearmodel1.mod \
stochastic-backward-models/solow_cd.mod \
stochastic-backward-models/solow_ces.mod \
stochastic-backward-models/solow_cd_with_steadystate.mod \
stochastic-backward-models/backward_linear.mod \
deterministic_simulations/purely_forward/ar1.mod \
deterministic_simulations/purely_forward/nk.mod \

View File

@ -0,0 +1,67 @@
var Efficiency $A$
EfficiencyGrowth $X$
Population $L$
PopulationGrowth $N$
Output $Y$
PhysicalCapitalStock $K$ ;
varexo e_x $\varepsilon_x$
e_n $\varepsilon_n$;
parameters alpha $\alpha$
delta $\delta$
s $s$
rho_x $\rho_x$
rho_n $\rho_n$
EfficiencyGrowth_ss $X^{\star}$
PopulationGrowth_ss $N^{\star}$ ;
alpha = .33;
delta = .02;
s = .20;
rho_x = .90;
rho_n = .95;
EfficiencyGrowth_ss = 1.00; // Do not change this calibration
PopulationGrowth_ss = 1.00; // Do not change this calibration
model;
Efficiency = EfficiencyGrowth*Efficiency(-1);
EfficiencyGrowth/EfficiencyGrowth_ss = (EfficiencyGrowth(-1)/EfficiencyGrowth_ss)^(rho_x)*exp(e_x);
Population = PopulationGrowth*Population(-1);
PopulationGrowth/PopulationGrowth_ss = (PopulationGrowth(-1)/PopulationGrowth_ss)^(rho_n)*exp(e_n);
Output = PhysicalCapitalStock(-1)^alpha*(Efficiency*Population)^(1-alpha);
PhysicalCapitalStock = (1-delta)*PhysicalCapitalStock(-1) + s*Output;
end;
histval;
Efficiency(0) = .5;
EfficiencyGrowth(0) = 1.02;
Population(0) = 1;
PopulationGrowth(0) = 1.02;
PhysicalCapitalStock(0) = 1;
end;
LongRunEfficiency = M_.endo_histval(1)*M_.endo_histval(2)^(rho_x/(1-rho_x));
LongRunPopulation = M_.endo_histval(3)*M_.endo_histval(4)^(rho_n/(1-rho_n));
LongRunEfficiencyGrowth = EfficiencyGrowth_ss;
LongRunPopulationGrowth = PopulationGrowth_ss;
LongRunIntensiveCapitalStock = LongRunEfficiencyGrowth*LongRunPopulationGrowth*(s/(LongRunEfficiencyGrowth*LongRunPopulationGrowth-1+delta))^(1/(1-alpha));
precision = 1e-6;
T = 5*floor(log(precision)/log(max(rho_x, rho_n)));
oo_ = simul_backward_model(M_.endo_histval, T, options_, M_, oo_, zeros(T+1,2));
if abs(oo_.endo_simul(1,end)-LongRunEfficiency)>1e-10
error('Wrong long run level!')
end
if abs(oo_.endo_simul(3,end)-LongRunPopulation)>1e-10
error('Wrong long run level!')
end
IntensiveCapitalStock = oo_.endo_simul(6,1:end)./(oo_.endo_simul(1,1:end).*oo_.endo_simul(3,1:end));
if abs(IntensiveCapitalStock-LongRunIntensiveCapitalStock)>1e-6
error('Wrong long run level!')
end