commit
848d81eb84
|
@ -147,7 +147,7 @@ options_ = set_default_option(options_,'datafile','');
|
||||||
options_.mode_compute = 0;
|
options_.mode_compute = 0;
|
||||||
options_.plot_priors = 0;
|
options_.plot_priors = 0;
|
||||||
options_.smoother=1;
|
options_.smoother=1;
|
||||||
[dataset_,dataset_info,xparam1,hh, M_, options_, oo_, estim_params_,bayestopt_]=dynare_estimation_init(M_.endo_names,fname_,1, M_, options_, oo_, estim_params_, bayestopt_);
|
[dataset_,dataset_info,xparam1,hh, M_, options_, oo_, estim_params_,bayestopt_,bounds]=dynare_estimation_init(M_.endo_names,fname_,1, M_, options_, oo_, estim_params_, bayestopt_);
|
||||||
options_ident = set_default_option(options_ident,'analytic_derivation_mode',options_.analytic_derivation_mode); % if not set by user, inherit default global one
|
options_ident = set_default_option(options_ident,'analytic_derivation_mode',options_.analytic_derivation_mode); % if not set by user, inherit default global one
|
||||||
|
|
||||||
if prior_exist
|
if prior_exist
|
||||||
|
@ -310,7 +310,7 @@ if iload <=0,
|
||||||
disp('Testing current parameter values')
|
disp('Testing current parameter values')
|
||||||
end
|
end
|
||||||
[idehess_point, idemoments_point, idemodel_point, idelre_point, derivatives_info_point, info, options_ident] = ...
|
[idehess_point, idemoments_point, idemodel_point, idelre_point, derivatives_info_point, info, options_ident] = ...
|
||||||
identification_analysis(params,indx,indexo,options_ident,dataset_, dataset_info, prior_exist, name_tex,1,parameters);
|
identification_analysis(params,indx,indexo,options_ident,dataset_, dataset_info, prior_exist, name_tex,1,parameters,bounds);
|
||||||
if info(1)~=0,
|
if info(1)~=0,
|
||||||
skipline()
|
skipline()
|
||||||
disp('----------- ')
|
disp('----------- ')
|
||||||
|
@ -353,7 +353,7 @@ if iload <=0,
|
||||||
kk=kk+1;
|
kk=kk+1;
|
||||||
params = prior_draw();
|
params = prior_draw();
|
||||||
[idehess_point, idemoments_point, idemodel_point, idelre_point, derivatives_info_point, info, options_ident] = ...
|
[idehess_point, idemoments_point, idemodel_point, idelre_point, derivatives_info_point, info, options_ident] = ...
|
||||||
identification_analysis(params,indx,indexo,options_ident,dataset_,dataset_info, prior_exist, name_tex,1,'Random_prior_params');
|
identification_analysis(params,indx,indexo,options_ident,dataset_,dataset_info, prior_exist, name_tex,1,'Random_prior_params',bounds);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if info(1)
|
if info(1)
|
||||||
|
@ -407,7 +407,7 @@ if iload <=0,
|
||||||
params = prior_draw();
|
params = prior_draw();
|
||||||
end
|
end
|
||||||
[dum1, ideJ, ideH, ideGP, dum2 , info, options_MC] = ...
|
[dum1, ideJ, ideH, ideGP, dum2 , info, options_MC] = ...
|
||||||
identification_analysis(params,indx,indexo,options_MC,dataset_, dataset_info, prior_exist, name_tex,0);
|
identification_analysis(params,indx,indexo,options_MC,dataset_, dataset_info, prior_exist, name_tex,0,[],bounds);
|
||||||
if iteration==0 && info(1)==0,
|
if iteration==0 && info(1)==0,
|
||||||
MAX_tau = min(SampleSize,ceil(MaxNumberOfBytes/(size(ideH.siH,1)*nparam)/8));
|
MAX_tau = min(SampleSize,ceil(MaxNumberOfBytes/(size(ideH.siH,1)*nparam)/8));
|
||||||
stoH = zeros([size(ideH.siH,1),nparam,MAX_tau]);
|
stoH = zeros([size(ideH.siH,1),nparam,MAX_tau]);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
function [ide_hess, ide_moments, ide_model, ide_lre, derivatives_info, info, options_ident] = identification_analysis(params,indx,indexo,options_ident,dataset_,dataset_info, prior_exist,name_tex,init,tittxt)
|
function [ide_hess, ide_moments, ide_model, ide_lre, derivatives_info, info, options_ident] = identification_analysis(params,indx,indexo,options_ident,dataset_,dataset_info, prior_exist,name_tex,init,tittxt,bounds)
|
||||||
% function [ide_hess, ide_moments, ide_model, ide_lre, derivatives_info, info] = identification_analysis(params,indx,indexo,options_ident,data_info, prior_exist,name_tex,init,analyis_type)
|
% function [ide_hess, ide_moments, ide_model, ide_lre, derivatives_info, info] = identification_analysis(params,indx,indexo,options_ident,data_info, prior_exist,name_tex,init,analyis_type)
|
||||||
% given the parameter vector params, wraps all identification analyses
|
% given the parameter vector params, wraps all identification analyses
|
||||||
%
|
%
|
||||||
|
@ -122,7 +122,7 @@ if info(1)==0,
|
||||||
ide_strength_J=NaN(1,nparam);
|
ide_strength_J=NaN(1,nparam);
|
||||||
ide_strength_J_prior=NaN(1,nparam);
|
ide_strength_J_prior=NaN(1,nparam);
|
||||||
if init, %~isempty(indok),
|
if init, %~isempty(indok),
|
||||||
normaliz = abs(params);
|
normaliz = NaN(1,nparam);
|
||||||
if prior_exist,
|
if prior_exist,
|
||||||
if ~isempty(estim_params_.var_exo),
|
if ~isempty(estim_params_.var_exo),
|
||||||
normaliz1 = estim_params_.var_exo(:,7)'; % normalize with prior standard deviation
|
normaliz1 = estim_params_.var_exo(:,7)'; % normalize with prior standard deviation
|
||||||
|
@ -155,12 +155,12 @@ if info(1)==0,
|
||||||
info = stoch_simul(char(options_.varobs));
|
info = stoch_simul(char(options_.varobs));
|
||||||
dataset_ = dseries(oo_.endo_simul(options_.varobs_id,100+1:end)',dates('1Q1'), options_.varobs);
|
dataset_ = dseries(oo_.endo_simul(options_.varobs_id,100+1:end)',dates('1Q1'), options_.varobs);
|
||||||
derivatives_info.no_DLIK=1;
|
derivatives_info.no_DLIK=1;
|
||||||
bounds = prior_bounds(bayestopt_, options_.prior_trunc);
|
%bounds = prior_bounds(bayestopt_, options_.prior_trunc);
|
||||||
[fval,info,cost_flag,DLIK,AHess,ys,trend_coeff,M_,options_,bayestopt_,oo_] = dsge_likelihood(params',dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,bounds,oo_,derivatives_info);
|
[fval,info,cost_flag,DLIK,AHess,ys,trend_coeff,M_,options_,bayestopt_,oo_] = dsge_likelihood(params',dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,bounds,oo_,derivatives_info);
|
||||||
% fval = DsgeLikelihood(xparam1,data_info,options_,M_,estim_params_,bayestopt_,oo_);
|
% fval = DsgeLikelihood(xparam1,data_info,options_,M_,estim_params_,bayestopt_,oo_);
|
||||||
options_.analytic_derivation = analytic_derivation;
|
options_.analytic_derivation = analytic_derivation;
|
||||||
AHess=-AHess;
|
AHess=-AHess;
|
||||||
if min(eig(AHess))<0,
|
if min(eig(AHess))<-1.e-10,
|
||||||
error('identification_analysis: Analytic Hessian is not positive semi-definite!')
|
error('identification_analysis: Analytic Hessian is not positive semi-definite!')
|
||||||
end
|
end
|
||||||
% chol(AHess);
|
% chol(AHess);
|
||||||
|
@ -241,7 +241,7 @@ if info(1)==0,
|
||||||
end
|
end
|
||||||
ide_strength_J(indok) = (1./(normaliz(indok)'./abs(params(indok)')));
|
ide_strength_J(indok) = (1./(normaliz(indok)'./abs(params(indok)')));
|
||||||
ide_strength_J_prior(indok) = (1./(normaliz(indok)'./normaliz1(indok)'));
|
ide_strength_J_prior(indok) = (1./(normaliz(indok)'./normaliz1(indok)'));
|
||||||
ide_strength_J(params==0)=ide_strength_J_prior(params==0);
|
ide_strength_J(params==0)=1./normaliz(params==0)';
|
||||||
deltaM_prior = deltaM.*abs(normaliz1');
|
deltaM_prior = deltaM.*abs(normaliz1');
|
||||||
deltaM = deltaM.*abs(params');
|
deltaM = deltaM.*abs(params');
|
||||||
deltaM(params==0)=deltaM_prior(params==0);
|
deltaM(params==0)=deltaM_prior(params==0);
|
||||||
|
|
|
@ -55,6 +55,29 @@ JJ1 = JJ(:,ind1);
|
||||||
condJ= cond(JJ1);
|
condJ= cond(JJ1);
|
||||||
rankJ = rank(JJ);
|
rankJ = rank(JJ);
|
||||||
rankJJ = rankJ;
|
rankJJ = rankJ;
|
||||||
|
icheck=0;
|
||||||
|
if npar>0 && (rankJ<npar),
|
||||||
|
% search for singular values associated to ONE individual parameter
|
||||||
|
ee0 = [rankJJ+1:length(ind1)];
|
||||||
|
ind11=ones(length(ind1),1);
|
||||||
|
for j=1:length(ee0),
|
||||||
|
if length(find(abs(ee1(:,ee0(j))) > 1.e-3))==1,
|
||||||
|
icheck=1;
|
||||||
|
ind11 = ind11.*(abs(ee1(:,ee0(j))) <= 1.e-3); % take non-zero columns
|
||||||
|
end
|
||||||
|
end
|
||||||
|
ind1 = ind1(find(ind11)); % take non-zero columns
|
||||||
|
end
|
||||||
|
|
||||||
|
if icheck,
|
||||||
|
JJ1 = JJ(:,ind1);
|
||||||
|
[eu,ee2,ee1] = svd( JJ1, 0 );
|
||||||
|
condJ= cond(JJ1);
|
||||||
|
rankJ = rank(JJ);
|
||||||
|
rankJJ = rankJ;
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
% if hess_flag==0,
|
% if hess_flag==0,
|
||||||
% rankJJ = rank(JJ'*JJ);
|
% rankJJ = rank(JJ'*JJ);
|
||||||
% end
|
% end
|
||||||
|
|
Loading…
Reference in New Issue