


Copyright (C) 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/>.


0001 function tau = thet2tau(params, indx, indexo, flagmoments,mf,nlags,useautocorr) 0002 0003 % Copyright (C) 2012 Dynare Team 0004 % 0005 % This file is part of Dynare. 0006 % 0007 % Dynare is free software: you can redistribute it and/or modify 0008 % it under the terms of the GNU General Public License as published by 0009 % the Free Software Foundation, either version 3 of the License, or 0010 % (at your option) any later version. 0011 % 0012 % Dynare is distributed in the hope that it will be useful, 0013 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0015 % GNU General Public License for more details. 0016 % 0017 % You should have received a copy of the GNU General Public License 0018 % along with Dynare. If not, see <http://www.gnu.org/licenses/>. 0019 0020 global M_ oo_ options_ 0021 0022 if nargin==1, 0023 indx = [1:M_.param_nbr]; 0024 indexo = []; 0025 end 0026 0027 if nargin<4, 0028 flagmoments=0; 0029 end 0030 if nargin<7 | isempty(useautocorr), 0031 useautocorr=0; 0032 end 0033 0034 M_.params(indx) = params(length(indexo)+1:end); 0035 if ~isempty(indexo) 0036 M_.Sigma_e(indexo,indexo) = diag(params(1:length(indexo)).^2); 0037 end 0038 [A,B,plouf,plouf,M_,options_,oo_] = dynare_resolve(M_,options_,oo_); 0039 if flagmoments==0, 0040 tau = [oo_.dr.ys(oo_.dr.order_var); A(:); dyn_vech(B*M_.Sigma_e*B')]; 0041 else 0042 GAM = lyapunov_symm(A,B*M_.Sigma_e*B',options_.qz_criterium,options_.lyapunov_complex_threshold); 0043 k = find(abs(GAM) < 1e-12); 0044 GAM(k) = 0; 0045 if useautocorr, 0046 sy = sqrt(diag(GAM)); 0047 sy = sy*sy'; 0048 sy0 = sy-diag(diag(sy))+eye(length(sy)); 0049 dum = GAM./sy0; 0050 tau = dyn_vech(dum(mf,mf)); 0051 else 0052 tau = dyn_vech(GAM(mf,mf)); 0053 end 0054 for ii = 1:nlags 0055 dum = A^(ii)*GAM; 0056 if useautocorr, 0057 dum = dum./sy; 0058 end 0059 tau = [tau;vec(dum(mf,mf))]; 0060 end 0061 tau = [ oo_.dr.ys(oo_.dr.order_var(mf)); tau]; 0062 end