Hello all,
I got a problem about coding involving Dynare variables. The situation is,
After running the dynare model file, I got something like M_, oo_. Given those, I would like to changethe parameter by locating corresponding location of "M_.params" based on "M_.param_names", say I want to change the value of 'BETTA' and 'ALPA' defined in the model file, then what I can do is, including the following commands
par_list = strvcat('BETTA','ALPA');
par_value = [0.94 0.03];
par_list_ind = strmatch(par_list(i,:),M_.param_names,'exact');
M_.params(par_list_ind,:) = par_value(i,:)';
However, if the covariance matrix of shocks depends on parameter, eg,
shocks;
var epsah; stderr STD_EPSAH;
var epsaf; stderr STD_EPSAF;
var epsah, epsaf = COR_EPSAHAF*STD_EPSAH*STD_EPSAF;
end;
and after running dynare model file, we can get the below commands,
M_.Sigma_e(1, 1) = (M_.params(40))^2;
M_.Sigma_e(2, 2) = (M_.params(41))^2;
M_.Sigma_e(1, 2) = M_.params(41)*M_.params(40)*M_.params(42);
M_.Sigma_e(2, 1) = M_.Sigma_e(1, 2);
in abc.m if abc.mod is run by Dynare. In order to update the parameter of STD_EPSAH, STD_EPSAF, then, I need to include,
par_list = strvcat('STD_EPSAH','STD_EPSAF');
par_value = [0.01 0.01];
par_list_ind = strmatch(par_list(i,:),M_.param_names,'exact');
M_.params(par_list_ind,:) = par_value(i,:)';
On the other hands, Sigma_e should also be updated correspondingly but I want to ask is that, can I make the code to update Sigma_e flexibly by some commands instead of copying the commands in abc.m?
Furthermore, can I capture the commands
M_.Sigma_e(1, 1) = (M_.params(40))^2;
M_.Sigma_e(2, 2) = (M_.params(41))^2;
M_.Sigma_e(1, 2) = M_.params(41)*M_.params(40)*M_.params(42);
M_.Sigma_e(2, 1) = M_.Sigma_e(1, 2);
in abc.m fleixbly by including appropriate commands in .mod file?
Thanks for your kind attention.