Dear Dynare Users,
As I am a truly beginner, I have a basic problem: loop over parameters. I know that this problem was discussed many times since I found some topics connected with it, but I didn’t find any solution for my problem.
I combined two model: DSGE and human capital model. The model’s most important parameter is named by „x”: x=private investment into human capital/total investment into human capital, 1-x=government investment into human capital/ total investment into human capital. I would like to let that „x” parameter vary.
I’ve already tried the given .m code, but it does not work properly (for example it could not recognise „var_list_”, or I get the following error: „Index exceeds matrix dimensions”). What should I write after stoc_simul (or how should I write my variables after stoch_simul)? Or has my Dynare or my Matlab file another problem?
I would be thankful for any help.
Dora
dsge_humancapital.m (417 Bytes)
dsge_humancapital.mod (1.1 KB)
Dear Prof. Pfeifer,
Many thanks for your help and reply. I am still experiencing further problems. I saw Running a loop on a parameter, and I transformed the given codes in order to solve my problem:
dynare dsge_humancapital nostrict
phi = 0.1:0.1:1;
first_time = 1;
for i=1:length(phi)
if first_time
set_param_value(‘x’,phi(i));
dynare dsge_humancapital nostrict;
first_time = 0;
else
set_param_value(‘x’,phi(i));
perfect_foresight_setup;
perfect_foresight_solver;
if oo_.deterministic_simulation.status ~= 1;
disp([‘Computation fails for x =’ num2str(x)]);
end;
end
end
However, when I run the code, I get the following error:
Attempted to access phi(2); index out of bounds because numel(phi)=1.
Error in ==> proba1 at 10
set_param_value(‘x’,phi(i));
What is the difference between my code/my problem and the problem in Running a loop on a parameter ? What should I change in my code?
Many thanks in advance!!
Dóra
dsge_humancapital.mod (1.1 KB)
forum loop.m (455 Bytes)
Meantime I found an other/alternative way to solve my problem, but I can not save the steady state results, because I always overwrite the last value in oo_.steady_state. So I tried the following code: results_cell{i}=oo_.steady_state within the loop. But it does not work (I don’t get error, but the results are still overwritten).
Can you help my, please?
mod2.mod (1.4 KB)
forum loop2.m (350 Bytes)
Sorry, but when I run your codes, I get an error that the steady state cannot be computed
It would be possible, that if x=0.5, the steady state results are:
Y=0.511295;
C=0.26954;
IK=0.12748;
IHP=0.00600798;
H=0.200266;
R=1.02041;
rk=0.0924082;
L=0.306103;
K=1.77056;
w=1.13583;
IH=0.012016;
IHG=0.00600798;
Maybe you can try these results in initval…end.
You should use the attached codes. You want to loop over steady
, so it should be
x_vec = 0.1:0.1:1;
first_time = 1;
for i=1:length(x_vec)
if first_time
dynare dsge_humancapital nostrict noclearall;
first_time = 0;
else
set_param_value('x',x_vec(i));
try
steady;
results_cell{i}=oo_.steady_state;
catch
disp('Failed to compute steady state')
end
end
end
You cannot name your run variable phi, because that is the name of a parameter in your model.
dsge_humancapital.m (8.0 KB)
forumloop.m (382 Bytes)
Thank you very much, it’s perfect!
Dóra