Redesigned function following:
-) new options; -) new utilities identification_analysis, plot_itentification and identification_checks; -) fixes related to load_ident_files;time-shift
parent
c51066d76d
commit
9791d3adda
|
@ -64,7 +64,9 @@ else
|
||||||
prior_exist=1;
|
prior_exist=1;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
% options_ident.load_ident_files=1;
|
||||||
iload = options_ident.load_ident_files;
|
iload = options_ident.load_ident_files;
|
||||||
|
%options_ident.advanced=1;
|
||||||
advanced = options_ident.advanced;
|
advanced = options_ident.advanced;
|
||||||
nlags = options_ident.ar;
|
nlags = options_ident.ar;
|
||||||
periods = options_ident.periods;
|
periods = options_ident.periods;
|
||||||
|
@ -138,8 +140,8 @@ else
|
||||||
name_tex = [cellstr(M_.exo_names_tex); cellstr(M_.param_names_tex)];
|
name_tex = [cellstr(M_.exo_names_tex); cellstr(M_.param_names_tex)];
|
||||||
end
|
end
|
||||||
|
|
||||||
options_ident = set_default_option(options_ident,'max_ord_bruteforce',min([2,nparam-1]));
|
options_ident = set_default_option(options_ident,'max_dim_cova_group',min([2,nparam-1]));
|
||||||
max_ord_bruteforce = options_ident.max_ord_bruteforce;
|
max_dim_cova_group = options_ident.max_dim_cova_group;
|
||||||
|
|
||||||
|
|
||||||
MaxNumberOfBytes=options_.MaxNumberOfBytes;
|
MaxNumberOfBytes=options_.MaxNumberOfBytes;
|
||||||
|
@ -150,192 +152,306 @@ disp(' ')
|
||||||
|
|
||||||
if iload <=0,
|
if iload <=0,
|
||||||
|
|
||||||
iteration = 0;
|
[I,J]=find(M_.lead_lag_incidence');
|
||||||
loop_indx = 0;
|
if prior_exist,
|
||||||
file_index = 0;
|
if exist([fname_,'_mean.mat'],'file'),
|
||||||
run_index = 0;
|
% disp('Testing posterior mean')
|
||||||
|
load([fname_,'_mean'],'xparam1')
|
||||||
|
pmean = xparam1';
|
||||||
|
clear xparam1
|
||||||
|
end
|
||||||
|
if exist([fname_,'_mode.mat'],'file'),
|
||||||
|
% disp('Testing posterior mode')
|
||||||
|
load([fname_,'_mode'],'xparam1')
|
||||||
|
pmode = xparam1';
|
||||||
|
clear xparam1
|
||||||
|
end
|
||||||
|
disp('Testing prior mean')
|
||||||
|
params = set_prior(estim_params_,M_,options_)';
|
||||||
|
else
|
||||||
|
params = [sqrt(diag(M_.Sigma_e))', M_.params'];
|
||||||
|
end
|
||||||
|
[idehess_prior, idemoments_prior, idemodel_prior, idelre_prior, derivatives_info_prior] = ...
|
||||||
|
identification_analysis(params,indx,indexo,options_ident,data_info, prior_exist, name_tex,1);
|
||||||
|
idehess_prior.params=params;
|
||||||
|
% siH = idemodel_prior.siH;
|
||||||
|
% siJ = idemoments_prior.siJ;
|
||||||
|
% siLRE = idelre_prior.siLRE;
|
||||||
|
% normH = max(abs(siH)')';
|
||||||
|
% normJ = max(abs(siJ)')';
|
||||||
|
% normLRE = max(abs(siLRE)')';
|
||||||
|
save([IdentifDirectoryName '/' M_.fname '_identif.mat'], 'idehess_prior', 'idemoments_prior','idemodel_prior', 'idelre_prior')
|
||||||
|
disp_identification(params, idemodel_prior, idemoments_prior, name);
|
||||||
|
plot_identification(params,idemoments_prior,idehess_prior,idemodel_prior,idelre_prior,advanced,'Prior mean - ',name);
|
||||||
|
|
||||||
|
|
||||||
|
if exist('pmode','var'),
|
||||||
|
disp('Testing posterior mode')
|
||||||
|
[idehess_mode, idemoments_mode, idemodel_mode, idelre_mode, derivatives_info_mode] = ...
|
||||||
|
identification_analysis(pmode,indx,indexo,options_ident,data_info, prior_exist, name_tex,0);
|
||||||
|
idehess_mode.params=pmode;
|
||||||
|
save([IdentifDirectoryName '/' M_.fname '_identif.mat'], 'idehess_mode', 'idemoments_mode','idemodel_mode', 'idelre_mode','-append')
|
||||||
|
disp_identification(params, idemodel_mode, idemoments_mode, name);
|
||||||
|
plot_identification(params,idemoments_mode,idehess_mode,idemodel_mode,idelre_mode,advanced,'Posterior mode - ',name);
|
||||||
|
end
|
||||||
|
if exist('pmean','var'),
|
||||||
|
disp('Testing posterior mean')
|
||||||
|
[idehess_mean, idemoments_mean, idemodel_mean, idelre_mean, derivatives_info_mean] = ...
|
||||||
|
identification_analysis(pmean,indx,indexo,options_ident,data_info, prior_exist, name_tex,0);
|
||||||
|
idehess_mean.params=pmean;
|
||||||
|
save([IdentifDirectoryName '/' M_.fname '_identif.mat'], 'idehess_mean', 'idemoments_mean','idemodel_mean', 'idelre_mean','-append')
|
||||||
|
disp_identification(params, idemodel_mean, idemoments_mean, name);
|
||||||
|
plot_identification(params,idemoments_mean,idehess_mean,idemodel_mean,idelre_mean,advanced,'Posterior mean - ',name);
|
||||||
|
end
|
||||||
|
|
||||||
if SampleSize > 1,
|
if SampleSize > 1,
|
||||||
|
disp(' ')
|
||||||
|
disp('Monte Carlo Testing')
|
||||||
h = waitbar(0,'Monte Carlo identification checks ...');
|
h = waitbar(0,'Monte Carlo identification checks ...');
|
||||||
|
iteration = 0;
|
||||||
|
loop_indx = 0;
|
||||||
|
file_index = 0;
|
||||||
|
run_index = 0;
|
||||||
|
options_MC=options_ident;
|
||||||
|
options_MC.advanced=0;
|
||||||
|
else
|
||||||
|
iteration = 1;
|
||||||
|
pdraws = [];
|
||||||
end
|
end
|
||||||
[I,J]=find(M_.lead_lag_incidence');
|
|
||||||
|
|
||||||
while iteration < SampleSize,
|
while iteration < SampleSize,
|
||||||
loop_indx = loop_indx+1;
|
loop_indx = loop_indx+1;
|
||||||
if prior_exist,
|
if nargin==2,
|
||||||
if SampleSize==1,
|
params = pdraws0(iteration+1,:);
|
||||||
if exist([fname_,'_mean.mat'],'file'),
|
|
||||||
disp('Testing posterior mean')
|
|
||||||
load([fname_,'_mean'],'xparam1')
|
|
||||||
params = xparam1';
|
|
||||||
clear xparam1
|
|
||||||
elseif exist([fname_,'_mode.mat'],'file'),
|
|
||||||
disp('Testing posterior mode')
|
|
||||||
load([fname_,'_mode'],'xparam1')
|
|
||||||
params = xparam1';
|
|
||||||
clear xparam1
|
|
||||||
else
|
|
||||||
disp('Testing prior mean')
|
|
||||||
params = set_prior(estim_params_,M_,options_)';
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if nargin==2,
|
|
||||||
params = pdraws0(iteration+1,:);
|
|
||||||
else
|
|
||||||
params = prior_draw();
|
|
||||||
end
|
|
||||||
end
|
|
||||||
set_all_parameters(params);
|
|
||||||
else
|
else
|
||||||
params = [sqrt(diag(M_.Sigma_e))', M_.params'];
|
params = prior_draw();
|
||||||
|
end
|
||||||
|
[~, ideJ, ideH, ideGP, ~ , info] = ...
|
||||||
|
identification_analysis(params,indx,indexo,options_MC,data_info, prior_exist, name_tex,0);
|
||||||
|
if iteration==0,
|
||||||
|
MAX_tau = min(SampleSize,ceil(MaxNumberOfBytes/(size(ideH.siH,1)*nparam)/8));
|
||||||
|
stoH = zeros([size(ideH.siH,1),nparam,MAX_tau]);
|
||||||
|
stoJJ = zeros([size(ideJ.siJ,1),nparam,MAX_tau]);
|
||||||
|
stoLRE = zeros([size(ideGP.siLRE,1),np,MAX_tau]);
|
||||||
|
TAU = zeros(size(ideH.siH,1),SampleSize);
|
||||||
|
GAM = zeros(size(ideJ.siJ,1),SampleSize);
|
||||||
|
LRE = zeros(size(ideGP.siLRE,1),SampleSize);
|
||||||
|
pdraws = zeros(SampleSize,nparam);
|
||||||
|
idemoments.indJJ = ideJ.indJJ;
|
||||||
|
idemodel.indH = ideH.indH;
|
||||||
|
idelre.indLRE = ideGP.indLRE;
|
||||||
|
idemoments.ind0 = zeros(SampleSize,nparam);
|
||||||
|
idemodel.ind0 = zeros(SampleSize,nparam);
|
||||||
|
idelre.ind0 = zeros(SampleSize,np);
|
||||||
|
idemoments.jweak = zeros(SampleSize,nparam);
|
||||||
|
idemodel.jweak = zeros(SampleSize,nparam);
|
||||||
|
idelre.jweak = zeros(SampleSize,np);
|
||||||
|
idemoments.jweak_pair = zeros(SampleSize,nparam*(nparam+1)/2);
|
||||||
|
idemodel.jweak_pair = zeros(SampleSize,nparam*(nparam+1)/2);
|
||||||
|
idelre.jweak_pair = zeros(SampleSize,np*(np+1)/2);
|
||||||
|
idemoments.cond = zeros(SampleSize,1);
|
||||||
|
idemodel.cond = zeros(SampleSize,1);
|
||||||
|
idelre.cond = zeros(SampleSize,1);
|
||||||
|
idemoments.Mco = zeros(SampleSize,nparam);
|
||||||
|
idemodel.Mco = zeros(SampleSize,nparam);
|
||||||
|
idelre.Mco = zeros(SampleSize,np);
|
||||||
|
delete([IdentifDirectoryName '/' M_.fname '_identif_*.mat'])
|
||||||
end
|
end
|
||||||
[A,B,ys,info]=dynare_resolve;
|
|
||||||
|
|
||||||
|
|
||||||
if info(1)==0,
|
if info(1)==0,
|
||||||
oo0=oo_;
|
|
||||||
tau=[oo_.dr.ys(oo_.dr.order_var); vec(A); dyn_vech(B*M_.Sigma_e*B')];
|
|
||||||
yy0=oo_.dr.ys(I);
|
|
||||||
[residual, g1 ] = feval([M_.fname,'_dynamic'],yy0, ...
|
|
||||||
oo_.exo_steady_state', M_.params, ...
|
|
||||||
oo_.dr.ys, 1);
|
|
||||||
|
|
||||||
iteration = iteration + 1;
|
iteration = iteration + 1;
|
||||||
run_index = run_index + 1;
|
run_index = run_index + 1;
|
||||||
|
TAU(:,iteration)=ideH.TAU;
|
||||||
if iteration,
|
LRE(:,iteration)=ideGP.LRE;
|
||||||
[JJ, H, gam, gp, dA, dOm, dYss] = getJJ(A, B, M_,oo0,options_,0,indx,indexo,bayestopt_.mf2,nlags,useautocorr);
|
GAM(:,iteration)=ideJ.GAM;
|
||||||
derivatives_info.DT=dA;
|
idemoments.cond(iteration,1)=ideJ.cond;
|
||||||
derivatives_info.DOm=dOm;
|
idemodel.cond(iteration,1)=ideH.cond;
|
||||||
derivatives_info.DYss=dYss;
|
idelre.cond(iteration,1)=ideGP.cond;
|
||||||
if iteration==1,
|
idemoments.ino(iteration,1)=ideJ.ino;
|
||||||
indJJ = (find(max(abs(JJ'))>1.e-8));
|
idemodel.ino(iteration,1)=ideH.ino;
|
||||||
indH = (find(max(abs(H'))>1.e-8));
|
idelre.ino(iteration,1)=ideGP.ino;
|
||||||
indLRE = (find(max(abs(gp'))>1.e-8));
|
idemoments.ind0(iteration,:)=ideJ.ind0;
|
||||||
TAU = zeros(length(indH),SampleSize);
|
idemodel.ind0(iteration,:)=ideH.ind0;
|
||||||
GAM = zeros(length(indJJ),SampleSize);
|
idelre.ind0(iteration,:)=ideGP.ind0;
|
||||||
LRE = zeros(length(indLRE),SampleSize);
|
idemoments.jweak(iteration,:)=ideJ.jweak;
|
||||||
MAX_tau = min(SampleSize,ceil(MaxNumberOfBytes/(length(indH)*nparam)/8));
|
idemodel.jweak(iteration,:)=ideH.jweak;
|
||||||
MAX_gam = min(SampleSize,ceil(MaxNumberOfBytes/(length(indJJ)*nparam)/8));
|
idelre.jweak(iteration,:)=ideGP.jweak;
|
||||||
stoH = zeros([length(indH),nparam,MAX_tau]);
|
idemoments.jweak_pair(iteration,:)=ideJ.jweak_pair;
|
||||||
stoJJ = zeros([length(indJJ),nparam,MAX_tau]);
|
idemodel.jweak_pair(iteration,:)=ideH.jweak_pair;
|
||||||
delete([IdentifDirectoryName '/' M_.fname '_identif_*.mat'])
|
idelre.jweak_pair(iteration,:)=ideGP.jweak_pair;
|
||||||
|
idemoments.Mco(iteration,:)=ideJ.Mco;
|
||||||
|
idemodel.Mco(iteration,:)=ideH.Mco;
|
||||||
|
idelre.Mco(iteration,:)=ideGP.Mco;
|
||||||
|
stoLRE(:,:,run_index) = ideGP.siLRE;
|
||||||
|
stoH(:,:,run_index) = ideH.siH;
|
||||||
|
stoJJ(:,:,run_index) = ideJ.siJ;
|
||||||
|
pdraws(iteration,:) = params;
|
||||||
|
if run_index==MAX_tau || iteration==SampleSize,
|
||||||
|
file_index = file_index + 1;
|
||||||
|
if run_index<MAX_tau,
|
||||||
|
stoH = stoH(:,:,1:run_index);
|
||||||
|
stoJJ = stoJJ(:,:,1:run_index);
|
||||||
|
stoLRE = stoLRE(:,:,1:run_index);
|
||||||
end
|
end
|
||||||
TAU(:,iteration)=tau(indH);
|
save([IdentifDirectoryName '/' M_.fname '_identif_' int2str(file_index) '.mat'], 'stoH', 'stoJJ', 'stoLRE')
|
||||||
vg1 = [oo_.dr.ys(oo_.dr.order_var); vec(g1)];
|
run_index = 0;
|
||||||
LRE(:,iteration)=vg1(indLRE);
|
stoH = zeros(size(stoH));
|
||||||
GAM(:,iteration)=gam(indJJ);
|
stoJJ = zeros(size(stoJJ));
|
||||||
stoLRE(:,:,run_index) = gp(indLRE,:);
|
stoLRE = zeros(size(stoLRE));
|
||||||
stoH(:,:,run_index) = H(indH,:);
|
|
||||||
stoJJ(:,:,run_index) = JJ(indJJ,:);
|
|
||||||
% use prior uncertainty
|
|
||||||
siJ = (JJ(indJJ,:));
|
|
||||||
siH = (H(indH,:));
|
|
||||||
|
|
||||||
siLRE = (gp(indLRE,:));
|
end
|
||||||
pdraws(iteration,:) = params;
|
|
||||||
normH = max(abs(stoH(:,:,run_index))')';
|
|
||||||
normJ = max(abs(stoJJ(:,:,run_index))')';
|
|
||||||
normLRE = max(abs(stoLRE(:,:,run_index))')';
|
|
||||||
[idemodel.Mco(:,iteration), idemoments.Mco(:,iteration), idelre.Mco(:,iteration), ...
|
|
||||||
idemodel.Pco(:,:,iteration), idemoments.Pco(:,:,iteration), idelre.Pco(:,:,iteration), ...
|
|
||||||
idemodel.cond(iteration), idemoments.cond(iteration), idelre.cond(iteration), ...
|
|
||||||
idemodel.ee(:,:,iteration), idemoments.ee(:,:,iteration), idelre.ee(:,:,iteration), ...
|
|
||||||
idemodel.ind(:,iteration), idemoments.ind(:,iteration), ...
|
|
||||||
idemodel.indno{iteration}, idemoments.indno{iteration}, ...
|
|
||||||
idemodel.ino(iteration), idemoments.ino(iteration)] = ...
|
|
||||||
identification_checks(H(indH,:)./normH(:,ones(nparam,1)),JJ(indJJ,:)./normJ(:,ones(nparam,1)), gp(indLRE,:)./normLRE(:,ones(size(gp,2),1)));
|
|
||||||
% identification_checks(H(indH,:),JJ(indJJ,:), gp(indLRE,:), bayestopt_);
|
|
||||||
indok = find(max(idemoments.indno{iteration},[],1)==0);
|
|
||||||
if iteration ==1,
|
|
||||||
ide_strength_J=NaN(1,nparam);
|
|
||||||
ide_strength_J_prior=NaN(1,nparam);
|
|
||||||
end
|
|
||||||
if iteration ==1 && advanced,
|
|
||||||
[pars, cosnJ] = ident_bruteforce(JJ(indJJ,:)./normJ(:,ones(nparam,1)),max_ord_bruteforce,options_.TeX,name_tex);
|
|
||||||
end
|
|
||||||
if iteration ==1 && ~isempty(indok),
|
|
||||||
normaliz = abs(params);
|
|
||||||
if prior_exist,
|
|
||||||
if ~isempty(estim_params_.var_exo),
|
|
||||||
normaliz1 = estim_params_.var_exo(:,7); % normalize with prior standard deviation
|
|
||||||
else
|
|
||||||
normaliz1=[];
|
|
||||||
end
|
|
||||||
if ~isempty(estim_params_.param_vals),
|
|
||||||
normaliz1 = [normaliz1; estim_params_.param_vals(:,7)]'; % normalize with prior standard deviation
|
|
||||||
end
|
|
||||||
% normaliz = max([normaliz; normaliz1]);
|
|
||||||
normaliz1(isinf(normaliz1)) = 1;
|
|
||||||
|
|
||||||
else
|
if SampleSize > 1,
|
||||||
normaliz1 = ones(1,nparam);
|
waitbar(iteration/SampleSize,h,['MC identification checks ',int2str(iteration),'/',int2str(SampleSize)])
|
||||||
end
|
|
||||||
replic = max([replic, length(indJJ)*3]);
|
|
||||||
try,
|
|
||||||
options_.irf = 0;
|
|
||||||
options_.noprint = 1;
|
|
||||||
options_.order = 1;
|
|
||||||
options_.periods = data_info.gend+100;
|
|
||||||
info = stoch_simul(options_.varobs);
|
|
||||||
datax=oo_.endo_simul(options_.varobs_id,100+1:end);
|
|
||||||
% datax=data;
|
|
||||||
derivatives_info.no_DLIK=1;
|
|
||||||
[fval,cost_flag,ys,trend_coeff,info,DLIK,AHess] = DsgeLikelihood(params',data_info.gend,datax,data_info.data_index,data_info.number_of_observations,data_info.no_more_missing_observations,derivatives_info);
|
|
||||||
cparam = inv(-AHess);
|
|
||||||
normaliz(indok) = sqrt(diag(cparam))';
|
|
||||||
cmm = siJ*((-AHess)\siJ');
|
|
||||||
flag_score=1;
|
|
||||||
catch,
|
|
||||||
cmm = simulated_moment_uncertainty(indJJ, periods, replic);
|
|
||||||
% Jinv=(siJ(:,indok)'*siJ(:,indok))\siJ(:,indok)';
|
|
||||||
% MIM=inv(Jinv*cmm*Jinv');
|
|
||||||
MIM=siJ(:,indok)'*(cmm\siJ(:,indok));
|
|
||||||
deltaM = sqrt(diag(MIM));
|
|
||||||
tildaM = MIM./((deltaM)*(deltaM'));
|
|
||||||
rhoM=sqrt(1-1./diag(inv(tildaM)));
|
|
||||||
deltaM = deltaM.*normaliz(indok)';
|
|
||||||
normaliz(indok) = sqrt(diag(inv(MIM)))';
|
|
||||||
flag_score=0;
|
|
||||||
end
|
|
||||||
ide_strength_J(indok) = (1./(normaliz(indok)'./abs(params(indok)')));
|
|
||||||
ide_strength_J_prior(indok) = (1./(normaliz(indok)'./normaliz1(indok)'));
|
|
||||||
ide_strength_J(params==0)=ide_strength_J_prior(params==0);
|
|
||||||
quant = siJ./repmat(sqrt(diag(cmm)),1,nparam);
|
|
||||||
siJnorm(iteration,:) = vnorm(quant).*normaliz;
|
|
||||||
% siJnorm(iteration,:) = vnorm(siJ(inok,:)).*normaliz;
|
|
||||||
quant=[];
|
|
||||||
inok = find((abs(TAU(:,iteration))<1.e-8));
|
|
||||||
isok = find((abs(TAU(:,iteration))));
|
|
||||||
quant(isok,:) = siH(isok,:)./repmat(TAU(isok,iteration),1,nparam);
|
|
||||||
quant(inok,:) = siH(inok,:)./repmat(mean(abs(TAU(:,iteration))),length(inok),nparam);
|
|
||||||
siHnorm(iteration,:) = vnorm(quant).*normaliz;
|
|
||||||
% siHnorm(iteration,:) = vnorm(siH./repmat(TAU(:,iteration),1,nparam)).*normaliz;
|
|
||||||
quant=[];
|
|
||||||
inok = find((abs(LRE(:,iteration))<1.e-8));
|
|
||||||
isok = find((abs(LRE(:,iteration))));
|
|
||||||
quant(isok,:) = siLRE(isok,:)./repmat(LRE(isok,iteration),1,np);
|
|
||||||
quant(inok,:) = siLRE(inok,:)./repmat(mean(abs(LRE(:,iteration))),length(inok),np);
|
|
||||||
siLREnorm(iteration,:) = vnorm(quant).*normaliz(offset+1:end);
|
|
||||||
% siLREnorm(iteration,:) = vnorm(siLRE./repmat(LRE(:,iteration),1,nparam-offset)).*normaliz(offset+1:end);
|
|
||||||
end,
|
|
||||||
if run_index==MAX_tau || iteration==SampleSize,
|
|
||||||
file_index = file_index + 1;
|
|
||||||
if run_index<MAX_tau,
|
|
||||||
stoH = stoH(:,:,1:run_index);
|
|
||||||
stoJJ = stoJJ(:,:,1:run_index);
|
|
||||||
stoLRE = stoLRE(:,:,1:run_index);
|
|
||||||
end
|
|
||||||
save([IdentifDirectoryName '/' M_.fname '_identif_' int2str(file_index) '.mat'], 'stoH', 'stoJJ', 'stoLRE')
|
|
||||||
run_index = 0;
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
if SampleSize > 1,
|
|
||||||
waitbar(iteration/SampleSize,h,['MC Identification checks ',int2str(iteration),'/',int2str(SampleSize)])
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
% set_all_parameters(params);
|
||||||
|
% [A,B,ys,info]=dynare_resolve;
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% if info(1)==0,
|
||||||
|
% oo0=oo_;
|
||||||
|
% tau=[oo_.dr.ys(oo_.dr.order_var); vec(A); dyn_vech(B*M_.Sigma_e*B')];
|
||||||
|
% yy0=oo_.dr.ys(I);
|
||||||
|
% [residual, g1 ] = feval([M_.fname,'_dynamic'],yy0, ...
|
||||||
|
% oo_.exo_steady_state', M_.params, ...
|
||||||
|
% oo_.dr.ys, 1);
|
||||||
|
%
|
||||||
|
% iteration = iteration + 1;
|
||||||
|
% run_index = run_index + 1;
|
||||||
|
%
|
||||||
|
% if iteration,
|
||||||
|
% [JJ, H, gam, gp, dA, dOm, dYss] = getJJ(A, B, M_,oo0,options_,0,indx,indexo,bayestopt_.mf2,nlags,useautocorr);
|
||||||
|
% derivatives_info.DT=dA;
|
||||||
|
% derivatives_info.DOm=dOm;
|
||||||
|
% derivatives_info.DYss=dYss;
|
||||||
|
% if iteration==1,
|
||||||
|
% indJJ = (find(max(abs(JJ'))>1.e-8));
|
||||||
|
% indH = (find(max(abs(H'))>1.e-8));
|
||||||
|
% indLRE = (find(max(abs(gp'))>1.e-8));
|
||||||
|
% TAU = zeros(length(indH),SampleSize);
|
||||||
|
% GAM = zeros(length(indJJ),SampleSize);
|
||||||
|
% LRE = zeros(length(indLRE),SampleSize);
|
||||||
|
% MAX_tau = min(SampleSize,ceil(MaxNumberOfBytes/(length(indH)*nparam)/8));
|
||||||
|
% MAX_gam = min(SampleSize,ceil(MaxNumberOfBytes/(length(indJJ)*nparam)/8));
|
||||||
|
% stoH = zeros([length(indH),nparam,MAX_tau]);
|
||||||
|
% stoJJ = zeros([length(indJJ),nparam,MAX_tau]);
|
||||||
|
% delete([IdentifDirectoryName '/' M_.fname '_identif_*.mat'])
|
||||||
|
% end
|
||||||
|
% TAU(:,iteration)=tau(indH);
|
||||||
|
% vg1 = [oo_.dr.ys(oo_.dr.order_var); vec(g1)];
|
||||||
|
% LRE(:,iteration)=vg1(indLRE);
|
||||||
|
% GAM(:,iteration)=gam(indJJ);
|
||||||
|
% stoLRE(:,:,run_index) = gp(indLRE,:);
|
||||||
|
% stoH(:,:,run_index) = H(indH,:);
|
||||||
|
% stoJJ(:,:,run_index) = JJ(indJJ,:);
|
||||||
|
% % use prior uncertainty
|
||||||
|
% siJ = (JJ(indJJ,:));
|
||||||
|
% siH = (H(indH,:));
|
||||||
|
%
|
||||||
|
% siLRE = (gp(indLRE,:));
|
||||||
|
% pdraws(iteration,:) = params;
|
||||||
|
% normH = max(abs(stoH(:,:,run_index))')';
|
||||||
|
% normJ = max(abs(stoJJ(:,:,run_index))')';
|
||||||
|
% normLRE = max(abs(stoLRE(:,:,run_index))')';
|
||||||
|
% [idemodel.Mco(:,iteration), idemoments.Mco(:,iteration), idelre.Mco(:,iteration), ...
|
||||||
|
% idemodel.Pco(:,:,iteration), idemoments.Pco(:,:,iteration), idelre.Pco(:,:,iteration), ...
|
||||||
|
% idemodel.cond(iteration), idemoments.cond(iteration), idelre.cond(iteration), ...
|
||||||
|
% idemodel.ee(:,:,iteration), idemoments.ee(:,:,iteration), idelre.ee(:,:,iteration), ...
|
||||||
|
% idemodel.ind(:,iteration), idemoments.ind(:,iteration), ...
|
||||||
|
% idemodel.indno{iteration}, idemoments.indno{iteration}, ...
|
||||||
|
% idemodel.ino(iteration), idemoments.ino(iteration)] = ...
|
||||||
|
% identification_checks(H(indH,:)./normH(:,ones(nparam,1)),JJ(indJJ,:)./normJ(:,ones(nparam,1)), gp(indLRE,:)./normLRE(:,ones(size(gp,2),1)));
|
||||||
|
% % identification_checks(H(indH,:),JJ(indJJ,:), gp(indLRE,:), bayestopt_);
|
||||||
|
% indok = find(max(idemoments.indno{iteration},[],1)==0);
|
||||||
|
% if iteration ==1,
|
||||||
|
% ide_strength_J=NaN(1,nparam);
|
||||||
|
% ide_strength_J_prior=NaN(1,nparam);
|
||||||
|
% end
|
||||||
|
% if iteration ==1 && advanced,
|
||||||
|
% [pars, cosnJ] = ident_bruteforce(JJ(indJJ,:)./normJ(:,ones(nparam,1)),max_dim_cova_group,options_.TeX,name_tex);
|
||||||
|
% end
|
||||||
|
% if iteration ==1 && ~isempty(indok),
|
||||||
|
% normaliz = abs(params);
|
||||||
|
% if prior_exist,
|
||||||
|
% if ~isempty(estim_params_.var_exo),
|
||||||
|
% normaliz1 = estim_params_.var_exo(:,7); % normalize with prior standard deviation
|
||||||
|
% else
|
||||||
|
% normaliz1=[];
|
||||||
|
% end
|
||||||
|
% if ~isempty(estim_params_.param_vals),
|
||||||
|
% normaliz1 = [normaliz1; estim_params_.param_vals(:,7)]'; % normalize with prior standard deviation
|
||||||
|
% end
|
||||||
|
% % normaliz = max([normaliz; normaliz1]);
|
||||||
|
% normaliz1(isinf(normaliz1)) = 1;
|
||||||
|
%
|
||||||
|
% else
|
||||||
|
% normaliz1 = ones(1,nparam);
|
||||||
|
% end
|
||||||
|
% replic = max([replic, length(indJJ)*3]);
|
||||||
|
% try,
|
||||||
|
% options_.irf = 0;
|
||||||
|
% options_.noprint = 1;
|
||||||
|
% options_.order = 1;
|
||||||
|
% options_.periods = data_info.gend+100;
|
||||||
|
% info = stoch_simul(options_.varobs);
|
||||||
|
% datax=oo_.endo_simul(options_.varobs_id,100+1:end);
|
||||||
|
% % datax=data;
|
||||||
|
% derivatives_info.no_DLIK=1;
|
||||||
|
% [fval,cost_flag,ys,trend_coeff,info,DLIK,AHess] = DsgeLikelihood(params',data_info.gend,datax,data_info.data_index,data_info.number_of_observations,data_info.no_more_missing_observations,derivatives_info);
|
||||||
|
% cparam = inv(-AHess);
|
||||||
|
% normaliz(indok) = sqrt(diag(cparam))';
|
||||||
|
% cmm = siJ*((-AHess)\siJ');
|
||||||
|
% flag_score=1;
|
||||||
|
% catch,
|
||||||
|
% cmm = simulated_moment_uncertainty(indJJ, periods, replic);
|
||||||
|
% % Jinv=(siJ(:,indok)'*siJ(:,indok))\siJ(:,indok)';
|
||||||
|
% % MIM=inv(Jinv*cmm*Jinv');
|
||||||
|
% MIM=siJ(:,indok)'*(cmm\siJ(:,indok));
|
||||||
|
% deltaM = sqrt(diag(MIM));
|
||||||
|
% tildaM = MIM./((deltaM)*(deltaM'));
|
||||||
|
% rhoM=sqrt(1-1./diag(inv(tildaM)));
|
||||||
|
% deltaM = deltaM.*normaliz(indok)';
|
||||||
|
% normaliz(indok) = sqrt(diag(inv(MIM)))';
|
||||||
|
% flag_score=0;
|
||||||
|
% end
|
||||||
|
% ide_strength_J(indok) = (1./(normaliz(indok)'./abs(params(indok)')));
|
||||||
|
% ide_strength_J_prior(indok) = (1./(normaliz(indok)'./normaliz1(indok)'));
|
||||||
|
% ide_strength_J(params==0)=ide_strength_J_prior(params==0);
|
||||||
|
% quant = siJ./repmat(sqrt(diag(cmm)),1,nparam);
|
||||||
|
% siJnorm(iteration,:) = vnorm(quant).*normaliz;
|
||||||
|
% % siJnorm(iteration,:) = vnorm(siJ(inok,:)).*normaliz;
|
||||||
|
% quant=[];
|
||||||
|
% inok = find((abs(TAU(:,iteration))<1.e-8));
|
||||||
|
% isok = find((abs(TAU(:,iteration))));
|
||||||
|
% quant(isok,:) = siH(isok,:)./repmat(TAU(isok,iteration),1,nparam);
|
||||||
|
% quant(inok,:) = siH(inok,:)./repmat(mean(abs(TAU(:,iteration))),length(inok),nparam);
|
||||||
|
% siHnorm(iteration,:) = vnorm(quant).*normaliz;
|
||||||
|
% % siHnorm(iteration,:) = vnorm(siH./repmat(TAU(:,iteration),1,nparam)).*normaliz;
|
||||||
|
% quant=[];
|
||||||
|
% inok = find((abs(LRE(:,iteration))<1.e-8));
|
||||||
|
% isok = find((abs(LRE(:,iteration))));
|
||||||
|
% quant(isok,:) = siLRE(isok,:)./repmat(LRE(isok,iteration),1,np);
|
||||||
|
% quant(inok,:) = siLRE(inok,:)./repmat(mean(abs(LRE(:,iteration))),length(inok),np);
|
||||||
|
% siLREnorm(iteration,:) = vnorm(quant).*normaliz(offset+1:end);
|
||||||
|
% % siLREnorm(iteration,:) = vnorm(siLRE./repmat(LRE(:,iteration),1,nparam-offset)).*normaliz(offset+1:end);
|
||||||
|
% end,
|
||||||
|
% if run_index==MAX_tau || iteration==SampleSize,
|
||||||
|
% file_index = file_index + 1;
|
||||||
|
% if run_index<MAX_tau,
|
||||||
|
% stoH = stoH(:,:,1:run_index);
|
||||||
|
% stoJJ = stoJJ(:,:,1:run_index);
|
||||||
|
% stoLRE = stoLRE(:,:,1:run_index);
|
||||||
|
% end
|
||||||
|
% save([IdentifDirectoryName '/' M_.fname '_identif_' int2str(file_index) '.mat'], 'stoH', 'stoJJ', 'stoLRE')
|
||||||
|
% run_index = 0;
|
||||||
|
%
|
||||||
|
% end
|
||||||
|
%
|
||||||
|
% if SampleSize > 1,
|
||||||
|
% waitbar(iteration/SampleSize,h,['MC Identification checks ',int2str(iteration),'/',int2str(SampleSize)])
|
||||||
|
% end
|
||||||
|
% end
|
||||||
|
% end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -356,13 +472,19 @@ if iload <=0,
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
idemoments.siJnorm = siJnorm;
|
||||||
|
idemodel.siHnorm = siHnorm;
|
||||||
|
idelre.siLREnorm = siLREnorm;
|
||||||
|
save([IdentifDirectoryName '/' M_.fname '_identif.mat'], 'pdraws', 'idemodel', 'idemoments', 'idelre', ... %'indJJ', 'indH', 'indLRE', ...
|
||||||
|
'TAU', 'GAM', 'LRE','-append')
|
||||||
|
else
|
||||||
|
siJnorm = idemoments_prior.siJnorm;
|
||||||
|
siHnorm = idemodel_prior.siHnorm;
|
||||||
|
siLREnorm = idelre_prior.siLREnorm;
|
||||||
end
|
end
|
||||||
|
|
||||||
save([IdentifDirectoryName '/' M_.fname '_identif.mat'], 'pdraws', 'idemodel', 'idemoments', 'idelre', 'indJJ', 'indH', 'indLRE', ...
|
|
||||||
'siJnorm', 'siHnorm', 'siLREnorm', 'TAU', 'GAM', 'LRE')
|
|
||||||
else
|
else
|
||||||
load([IdentifDirectoryName '/' M_.fname '_identif'], 'pdraws', 'idemodel', 'idemoments', 'idelre', 'indJJ', 'indH', 'indLRE', ...
|
load([IdentifDirectoryName '/' M_.fname '_identif'])
|
||||||
'siJnorm', 'siHnorm', 'siLREnorm', 'TAU', 'GAM', 'LRE')
|
|
||||||
identFiles = dir([IdentifDirectoryName '/' M_.fname '_identif_*']);
|
identFiles = dir([IdentifDirectoryName '/' M_.fname '_identif_*']);
|
||||||
options_ident.prior_mc=size(pdraws,1);
|
options_ident.prior_mc=size(pdraws,1);
|
||||||
SampleSize = options_ident.prior_mc;
|
SampleSize = options_ident.prior_mc;
|
||||||
|
@ -383,200 +505,241 @@ if nargout>3 && iload,
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
disp_identification(pdraws, idemodel, idemoments, name, advanced)
|
if iload,
|
||||||
|
disp('Testing prior mean')
|
||||||
figure('Name','Identification in the moments'),
|
disp_identification(idehess_prior.params, idemodel_prior, idemoments_prior, name);
|
||||||
subplot(211)
|
if advanced, disp('Press ENTER to display advanced diagnostics'), pause, end
|
||||||
mmm = (ide_strength_J);
|
plot_identification(idehess_prior.params,idemoments_prior,idehess_prior,idemodel_prior,idelre_prior,advanced,'Prior mean - ',name);
|
||||||
[ss, is] = sort(mmm);
|
|
||||||
bar(log([ide_strength_J(:,is)' ide_strength_J_prior(:,is)']))
|
|
||||||
set(gca,'xlim',[0 nparam+1])
|
|
||||||
set(gca,'xticklabel','')
|
|
||||||
dy = get(gca,'ylim');
|
|
||||||
for ip=1:nparam,
|
|
||||||
text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
|
||||||
end
|
end
|
||||||
legend('relative to param value','relative to prior std','Location','Best')
|
|
||||||
if flag_score,
|
|
||||||
title('Identification strength using asymptotic Information matrix (log-scale)')
|
|
||||||
else
|
|
||||||
title('Identification strength in the moments (log-scale)')
|
|
||||||
end
|
|
||||||
subplot(212)
|
|
||||||
|
|
||||||
if SampleSize > 1,
|
if SampleSize > 1,
|
||||||
mmm = mean(siJnorm);
|
fprintf('\n\n')
|
||||||
else
|
disp('Testing MC sample')
|
||||||
mmm = (siJnorm);
|
disp_identification(pdraws, idemodel, idemoments, name);
|
||||||
end
|
plot_identification(pdraws,idemoments,idehess_prior,idemodel,idelre,advanced,'MC sample - ',name, IdentifDirectoryName, 1);
|
||||||
bar(mmm(is))
|
if advanced,
|
||||||
set(gca,'xlim',[0 nparam+1])
|
jcrit=find(idemoments.ino);
|
||||||
set(gca,'xticklabel','')
|
for j=1:length(jcrit),
|
||||||
dy = get(gca,'ylim');
|
if ~iload,
|
||||||
for ip=1:nparam,
|
[idehess_(j), idemoments_(j), idemodel_(j), idelre_(j), derivatives_info_(j)] = ...
|
||||||
text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
identification_analysis(pdraws(jcrit(j),:),indx,indexo,options_ident,data_info, prior_exist, name_tex,1);
|
||||||
end
|
|
||||||
title('Sensitivity in the moments')
|
|
||||||
|
|
||||||
if advanced,
|
|
||||||
figure('Name','Identification in the model'),
|
|
||||||
subplot(211)
|
|
||||||
if SampleSize > 1,
|
|
||||||
mmm = mean(siLREnorm);
|
|
||||||
else
|
|
||||||
mmm = (siLREnorm);
|
|
||||||
end
|
|
||||||
mmm = [NaN(1, offset), mmm];
|
|
||||||
bar(mmm(is))
|
|
||||||
set(gca,'xticklabel','')
|
|
||||||
for ip=1:nparam,
|
|
||||||
text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
|
||||||
end
|
|
||||||
title('Sensitivity in the LRE model')
|
|
||||||
|
|
||||||
subplot(212)
|
|
||||||
if SampleSize>1,
|
|
||||||
mmm = mean(siHnorm);
|
|
||||||
else
|
|
||||||
mmm = (siHnorm);
|
|
||||||
end
|
|
||||||
bar(mmm(is))
|
|
||||||
set(gca,'xticklabel','')
|
|
||||||
dy = get(gca,'ylim');
|
|
||||||
for ip=1:nparam,
|
|
||||||
text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
|
||||||
end
|
|
||||||
title('Sensitivity in the model')
|
|
||||||
|
|
||||||
if options_.nograph, close(gcf); end
|
|
||||||
|
|
||||||
% identificaton patterns
|
|
||||||
for j=1:size(cosnJ,2),
|
|
||||||
pax=NaN(nparam,nparam);
|
|
||||||
fprintf('\n\n')
|
|
||||||
disp(['Collinearity patterns with ', int2str(j) ,' parameter(s)'])
|
|
||||||
fprintf('%-15s [%-*s] %10s\n','Parameter',(15+1)*j,' Expl. params ','cosn')
|
|
||||||
for i=1:nparam,
|
|
||||||
namx='';
|
|
||||||
for in=1:j,
|
|
||||||
namx=[namx ' ' sprintf('%-15s',name{pars{i,j}(in)})];
|
|
||||||
end
|
end
|
||||||
fprintf('%-15s [%s] %10.3f\n',name{i},namx,cosnJ(i,j))
|
tittxt = ['Critical draw n. ',int2str(j),' - '];
|
||||||
pax(i,pars{i,j})=cosnJ(i,j);
|
fprintf('\n\n')
|
||||||
|
disp(['Testing ',tittxt, 'Press ENTER']), pause,
|
||||||
|
plot_identification(pdraws(jcrit(j),:),idemoments_(j),idehess_(j),idemodel_(j),idelre_(j),1,tittxt,name);
|
||||||
|
% disp_identification(pdraws(jcrit(j),:), idemodel_(j), idemoments_(j), name, advanced);
|
||||||
end
|
end
|
||||||
figure('name',['Collinearity patterns with ', int2str(j) ,' parameter(s)']),
|
if ~iload,
|
||||||
imagesc(pax,[0 1]);
|
save([IdentifDirectoryName '/' M_.fname '_identif.mat'], 'idehess_', 'idemoments_','idemodel_', 'idelre_', 'jcrit', '-append');
|
||||||
set(gca,'xticklabel','')
|
|
||||||
set(gca,'yticklabel','')
|
|
||||||
for ip=1:nparam,
|
|
||||||
text(ip,(0.5),name{ip},'rotation',90,'HorizontalAlignment','left','interpreter','none')
|
|
||||||
text(0.5,ip,name{ip},'rotation',0,'HorizontalAlignment','right','interpreter','none')
|
|
||||||
end
|
|
||||||
colorbar;
|
|
||||||
ax=colormap;
|
|
||||||
ax(1,:)=[0.9 0.9 0.9];
|
|
||||||
colormap(ax);
|
|
||||||
if nparam>10,
|
|
||||||
set(gca,'xtick',(5:5:nparam))
|
|
||||||
set(gca,'ytick',(5:5:nparam))
|
|
||||||
end
|
|
||||||
set(gca,'xgrid','on')
|
|
||||||
set(gca,'ygrid','on')
|
|
||||||
saveas(gcf,[IdentifDirectoryName,'/',M_.fname,'_ident_collinearity_', int2str(j)])
|
|
||||||
eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_collinearity_', int2str(j)]);
|
|
||||||
eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_collinearity_', int2str(j)]);
|
|
||||||
if options_.nograph, close(gcf); end
|
|
||||||
end
|
|
||||||
disp('')
|
|
||||||
if flag_score,
|
|
||||||
[U,S,V]=svd(AHess,0);
|
|
||||||
if nparam<5,
|
|
||||||
f1 = figure('name','Identification patterns (Information matrix)');
|
|
||||||
else
|
|
||||||
f1 = figure('name','Identification patterns (Information matrix): SMALLEST SV');
|
|
||||||
f2 = figure('name','Identification patterns (Information matrix): HIGHEST SV');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
[U,S,V]=svd(siJ./normJ(:,ones(nparam,1)),0);
|
|
||||||
if nparam<5,
|
|
||||||
f1 = figure('name','Identification patterns (moments)');
|
|
||||||
else
|
|
||||||
f1 = figure('name','Identification patterns (moments): SMALLEST SV');
|
|
||||||
f2 = figure('name','Identification patterns (moments): HIGHEST SV');
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
for j=1:min(nparam,8),
|
|
||||||
if j<5,
|
|
||||||
figure(f1),
|
|
||||||
jj=j;
|
|
||||||
else
|
|
||||||
figure(f2),
|
|
||||||
jj=j-4;
|
|
||||||
end
|
|
||||||
subplot(4,1,jj),
|
|
||||||
if j<5
|
|
||||||
bar(abs(V(:,end-j+1))),
|
|
||||||
Stit = S(end-j+1,end-j+1);
|
|
||||||
else
|
|
||||||
bar(abs(V(:,jj))),
|
|
||||||
Stit = S(jj,jj);
|
|
||||||
end
|
|
||||||
set(gca,'xticklabel','')
|
|
||||||
if j==4 || j==nparam || j==8,
|
|
||||||
for ip=1:nparam,
|
|
||||||
text(ip,-0.02,name{ip},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
title(['Singular value ',num2str(Stit)])
|
|
||||||
end
|
|
||||||
figure(f1);
|
|
||||||
saveas(f1,[IdentifDirectoryName,'/',M_.fname,'_ident_pattern_1'])
|
|
||||||
eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_pattern_1']);
|
|
||||||
eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_pattern_1']);
|
|
||||||
if nparam>4,
|
|
||||||
figure(f2),
|
|
||||||
saveas(f2,[IdentifDirectoryName,'/',M_.fname,'_ident_pattern_2'])
|
|
||||||
eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_pattern_2']);
|
|
||||||
eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_pattern_2']);
|
|
||||||
end
|
|
||||||
|
|
||||||
if SampleSize>1,
|
|
||||||
options_.nograph=1;
|
|
||||||
figure('Name','Condition Number'),
|
|
||||||
subplot(221)
|
|
||||||
hist(log10(idemodel.cond))
|
|
||||||
title('log10 of Condition number in the model')
|
|
||||||
subplot(222)
|
|
||||||
hist(log10(idemoments.cond))
|
|
||||||
title('log10 of Condition number in the moments')
|
|
||||||
subplot(223)
|
|
||||||
hist(log10(idelre.cond))
|
|
||||||
title('log10 of Condition number in the LRE model')
|
|
||||||
saveas(gcf,[IdentifDirectoryName,'/',M_.fname,'_ident_COND'])
|
|
||||||
eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_COND']);
|
|
||||||
eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_COND']);
|
|
||||||
if options_.nograph, close(gcf); end
|
|
||||||
ncut=floor(SampleSize/10*9);
|
|
||||||
[~,is]=sort(idelre.cond);
|
|
||||||
[proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), 'HighestCondNumberLRE', 1, [], IdentifDirectoryName);
|
|
||||||
[~,is]=sort(idemodel.cond);
|
|
||||||
[proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), 'HighestCondNumberModel', 1, [], IdentifDirectoryName);
|
|
||||||
[~,is]=sort(idemoments.cond);
|
|
||||||
[proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), 'HighestCondNumberMoments', 1, [], IdentifDirectoryName);
|
|
||||||
% [proba, dproba] = stab_map_1(idemoments.Mco', is(1:ncut), is(ncut+1:end), 'HighestCondNumberMoments_vs_Mco', 1, [], IdentifDirectoryName);
|
|
||||||
for j=1:nparam,
|
|
||||||
% ibeh=find(idemoments.Mco(j,:)<0.9);
|
|
||||||
% inonbeh=find(idemoments.Mco(j,:)>=0.9);
|
|
||||||
% if ~isempty(ibeh) && ~isempty(inonbeh)
|
|
||||||
% [proba, dproba] = stab_map_1(pdraws, ibeh, inonbeh, ['HighestMultiCollinearity_',name{j}], 1, [], IdentifDirectoryName);
|
|
||||||
% end
|
|
||||||
[~,is]=sort(idemoments.Mco(j,:));
|
|
||||||
[proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), ['HighestMultiCollinearity_',name{j}], 1, [], IdentifDirectoryName);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
% if prior_exist,
|
||||||
|
% tittxt = 'Prior mean - ';
|
||||||
|
% else
|
||||||
|
% tittxt = '';
|
||||||
|
% end
|
||||||
|
% figure('Name',[tittxt, 'Identification using info from observables']),
|
||||||
|
% subplot(211)
|
||||||
|
% mmm = (idehess_prior.ide_strength_J);
|
||||||
|
% [ss, is] = sort(mmm);
|
||||||
|
% bar(log([idehess_prior.ide_strength_J(:,is)' idehess_prior.ide_strength_J_prior(:,is)']))
|
||||||
|
% set(gca,'xlim',[0 nparam+1])
|
||||||
|
% set(gca,'xticklabel','')
|
||||||
|
% dy = get(gca,'ylim');
|
||||||
|
% for ip=1:nparam,
|
||||||
|
% text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
||||||
|
% end
|
||||||
|
% legend('relative to param value','relative to prior std','Location','Best')
|
||||||
|
% if idehess_prior.flag_score,
|
||||||
|
% title('Identification strength in the asymptotic Information matrix (log-scale)')
|
||||||
|
% else
|
||||||
|
% title('Identification strength in the moments (log-scale)')
|
||||||
|
% end
|
||||||
|
% subplot(212)
|
||||||
|
%
|
||||||
|
% if SampleSize > 1,
|
||||||
|
% mmm = mean(siJnorm)';
|
||||||
|
% mmm = [idemoments_prior.siJnorm'./max(idemoments_prior.siJnorm') mmm./max(mmm)];
|
||||||
|
% else
|
||||||
|
% mmm = (siJnorm)'./max(siJnorm);
|
||||||
|
% end
|
||||||
|
% bar(mmm(is,:))
|
||||||
|
% set(gca,'xlim',[0 nparam+1])
|
||||||
|
% set(gca,'xticklabel','')
|
||||||
|
% dy = get(gca,'ylim');
|
||||||
|
% for ip=1:nparam,
|
||||||
|
% text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
||||||
|
% end
|
||||||
|
% if SampleSize > 1,
|
||||||
|
% legend('Prior mean','MC average','Location','Best')
|
||||||
|
% end
|
||||||
|
% title('Sensitivity in the moments')
|
||||||
|
%
|
||||||
|
% if advanced,
|
||||||
|
% figure('Name','Identification in the model'),
|
||||||
|
% subplot(211)
|
||||||
|
% if SampleSize > 1,
|
||||||
|
% mmm = mean(siLREnorm);
|
||||||
|
% else
|
||||||
|
% mmm = (siLREnorm);
|
||||||
|
% end
|
||||||
|
% mmm = [NaN(1, offset), mmm];
|
||||||
|
% bar(mmm(is))
|
||||||
|
% set(gca,'xticklabel','')
|
||||||
|
% for ip=1:nparam,
|
||||||
|
% text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
||||||
|
% end
|
||||||
|
% title('Sensitivity in the LRE model')
|
||||||
|
%
|
||||||
|
% subplot(212)
|
||||||
|
% if SampleSize>1,
|
||||||
|
% mmm = mean(siHnorm);
|
||||||
|
% else
|
||||||
|
% mmm = (siHnorm);
|
||||||
|
% end
|
||||||
|
% bar(mmm(is))
|
||||||
|
% set(gca,'xticklabel','')
|
||||||
|
% dy = get(gca,'ylim');
|
||||||
|
% for ip=1:nparam,
|
||||||
|
% text(ip,dy(1),name{is(ip)},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
||||||
|
% end
|
||||||
|
% title('Sensitivity in the model')
|
||||||
|
%
|
||||||
|
% if options_.nograph, close(gcf); end
|
||||||
|
%
|
||||||
|
% % identificaton patterns
|
||||||
|
% for j=1:size(idemoments_prior.cosnJ,2),
|
||||||
|
% pax=NaN(nparam,nparam);
|
||||||
|
% fprintf('\n\n')
|
||||||
|
% disp(['Collinearity patterns with ', int2str(j) ,' parameter(s)'])
|
||||||
|
% fprintf('%-15s [%-*s] %10s\n','Parameter',(15+1)*j,' Expl. params ','cosn')
|
||||||
|
% for i=1:nparam,
|
||||||
|
% namx='';
|
||||||
|
% for in=1:j,
|
||||||
|
% dumpindx = idemoments_prior.pars{i,j}(in);
|
||||||
|
% if isnan(dumpindx),
|
||||||
|
% namx=[namx ' ' sprintf('%-15s','--')];
|
||||||
|
% else
|
||||||
|
% namx=[namx ' ' sprintf('%-15s',name{dumpindx})];
|
||||||
|
% pax(i,dumpindx)=idemoments_prior.cosnJ(i,j);
|
||||||
|
% end
|
||||||
|
% end
|
||||||
|
% fprintf('%-15s [%s] %10.3f\n',name{i},namx,idemoments_prior.cosnJ(i,j))
|
||||||
|
% end
|
||||||
|
% figure('name',['Collinearity patterns with ', int2str(j) ,' parameter(s)']),
|
||||||
|
% imagesc(pax,[0 1]);
|
||||||
|
% set(gca,'xticklabel','')
|
||||||
|
% set(gca,'yticklabel','')
|
||||||
|
% for ip=1:nparam,
|
||||||
|
% text(ip,(0.5),name{ip},'rotation',90,'HorizontalAlignment','left','interpreter','none')
|
||||||
|
% text(0.5,ip,name{ip},'rotation',0,'HorizontalAlignment','right','interpreter','none')
|
||||||
|
% end
|
||||||
|
% colorbar;
|
||||||
|
% ax=colormap;
|
||||||
|
% ax(1,:)=[0.9 0.9 0.9];
|
||||||
|
% colormap(ax);
|
||||||
|
% if nparam>10,
|
||||||
|
% set(gca,'xtick',(5:5:nparam))
|
||||||
|
% set(gca,'ytick',(5:5:nparam))
|
||||||
|
% end
|
||||||
|
% set(gca,'xgrid','on')
|
||||||
|
% set(gca,'ygrid','on')
|
||||||
|
% saveas(gcf,[IdentifDirectoryName,'/',M_.fname,'_ident_collinearity_', int2str(j)])
|
||||||
|
% eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_collinearity_', int2str(j)]);
|
||||||
|
% eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_collinearity_', int2str(j)]);
|
||||||
|
% if options_.nograph, close(gcf); end
|
||||||
|
% end
|
||||||
|
% disp('')
|
||||||
|
% if idehess_prior.flag_score,
|
||||||
|
% [U,S,V]=svd(idehess_prior.AHess,0);
|
||||||
|
% if nparam<5,
|
||||||
|
% f1 = figure('name','Identification patterns (Information matrix)');
|
||||||
|
% else
|
||||||
|
% f1 = figure('name','Identification patterns (Information matrix): SMALLEST SV');
|
||||||
|
% f2 = figure('name','Identification patterns (Information matrix): HIGHEST SV');
|
||||||
|
% end
|
||||||
|
% else
|
||||||
|
% [U,S,V]=svd(siJ./normJ(:,ones(nparam,1)),0);
|
||||||
|
% if nparam<5,
|
||||||
|
% f1 = figure('name','Identification patterns (moments)');
|
||||||
|
% else
|
||||||
|
% f1 = figure('name','Identification patterns (moments): SMALLEST SV');
|
||||||
|
% f2 = figure('name','Identification patterns (moments): HIGHEST SV');
|
||||||
|
% end
|
||||||
|
% end
|
||||||
|
% for j=1:min(nparam,8),
|
||||||
|
% if j<5,
|
||||||
|
% figure(f1),
|
||||||
|
% jj=j;
|
||||||
|
% else
|
||||||
|
% figure(f2),
|
||||||
|
% jj=j-4;
|
||||||
|
% end
|
||||||
|
% subplot(4,1,jj),
|
||||||
|
% if j<5
|
||||||
|
% bar(abs(V(:,end-j+1))),
|
||||||
|
% Stit = S(end-j+1,end-j+1);
|
||||||
|
% else
|
||||||
|
% bar(abs(V(:,jj))),
|
||||||
|
% Stit = S(jj,jj);
|
||||||
|
% end
|
||||||
|
% set(gca,'xticklabel','')
|
||||||
|
% if j==4 || j==nparam || j==8,
|
||||||
|
% for ip=1:nparam,
|
||||||
|
% text(ip,-0.02,name{ip},'rotation',90,'HorizontalAlignment','right','interpreter','none')
|
||||||
|
% end
|
||||||
|
% end
|
||||||
|
% title(['Singular value ',num2str(Stit)])
|
||||||
|
% end
|
||||||
|
% figure(f1);
|
||||||
|
% saveas(f1,[IdentifDirectoryName,'/',M_.fname,'_ident_pattern_1'])
|
||||||
|
% eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_pattern_1']);
|
||||||
|
% eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_pattern_1']);
|
||||||
|
% if nparam>4,
|
||||||
|
% figure(f2),
|
||||||
|
% saveas(f2,[IdentifDirectoryName,'/',M_.fname,'_ident_pattern_2'])
|
||||||
|
% eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_pattern_2']);
|
||||||
|
% eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_pattern_2']);
|
||||||
|
% end
|
||||||
|
%
|
||||||
|
% if SampleSize>1,
|
||||||
|
% options_.nograph=1;
|
||||||
|
% figure('Name','Condition Number'),
|
||||||
|
% subplot(221)
|
||||||
|
% hist(log10(idemodel.cond))
|
||||||
|
% title('log10 of Condition number in the model')
|
||||||
|
% subplot(222)
|
||||||
|
% hist(log10(idemoments.cond))
|
||||||
|
% title('log10 of Condition number in the moments')
|
||||||
|
% subplot(223)
|
||||||
|
% hist(log10(idelre.cond))
|
||||||
|
% title('log10 of Condition number in the LRE model')
|
||||||
|
% saveas(gcf,[IdentifDirectoryName,'/',M_.fname,'_ident_COND'])
|
||||||
|
% eval(['print -depsc2 ' IdentifDirectoryName '/' M_.fname '_ident_COND']);
|
||||||
|
% eval(['print -dpdf ' IdentifDirectoryName '/' M_.fname '_ident_COND']);
|
||||||
|
% if options_.nograph, close(gcf); end
|
||||||
|
% ncut=floor(SampleSize/10*9);
|
||||||
|
% [~,is]=sort(idelre.cond);
|
||||||
|
% [proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), 'HighestCondNumberLRE', 1, [], IdentifDirectoryName);
|
||||||
|
% [~,is]=sort(idemodel.cond);
|
||||||
|
% [proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), 'HighestCondNumberModel', 1, [], IdentifDirectoryName);
|
||||||
|
% [~,is]=sort(idemoments.cond);
|
||||||
|
% [proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), 'HighestCondNumberMoments', 1, [], IdentifDirectoryName);
|
||||||
|
% % [proba, dproba] = stab_map_1(idemoments.Mco', is(1:ncut), is(ncut+1:end), 'HighestCondNumberMoments_vs_Mco', 1, [], IdentifDirectoryName);
|
||||||
|
% for j=1:nparam,
|
||||||
|
% % ibeh=find(idemoments.Mco(j,:)<0.9);
|
||||||
|
% % inonbeh=find(idemoments.Mco(j,:)>=0.9);
|
||||||
|
% % if ~isempty(ibeh) && ~isempty(inonbeh)
|
||||||
|
% % [proba, dproba] = stab_map_1(pdraws, ibeh, inonbeh, ['HighestMultiCollinearity_',name{j}], 1, [], IdentifDirectoryName);
|
||||||
|
% % end
|
||||||
|
% [~,is]=sort(idemoments.Mco(:,j));
|
||||||
|
% [proba, dproba] = stab_map_1(pdraws, is(1:ncut), is(ncut+1:end), ['HighestMultiCollinearity_',name{j}], 1, [], IdentifDirectoryName);
|
||||||
|
% end
|
||||||
|
% end
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% end
|
||||||
|
|
||||||
|
|
||||||
if exist('OCTAVE_VERSION')
|
if exist('OCTAVE_VERSION')
|
||||||
|
|
Loading…
Reference in New Issue