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