diff --git a/matlab/gsa/filt_mc_.m b/matlab/gsa/filt_mc_.m index fbc25214f..472480135 100644 --- a/matlab/gsa/filt_mc_.m +++ b/matlab/gsa/filt_mc_.m @@ -242,18 +242,39 @@ end if ~options_.opt_gsa.ppost && options_.opt_gsa.lik_only if options_.opt_gsa.pprior anam='rmse_prior_post'; + atitle='RMSE prior: Log Posterior Kernel'; else anam='rmse_mc_post'; + atitle='RMSE MC: Log Posterior Kernel'; end - stab_map_1(x, ipost(1:nfilt), ipost(nfilt+1:end), anam, 1,[],OutDir); - stab_map_2(x(ipost(1:nfilt),:),alpha2,pvalue,anam, OutDir); + + options_mcf.pvalue_ks = alpha; + options_mcf.pvalue_corr = pvalue; + options_mcf.alpha2 = alpha2; + options_mcf.param_names = char(bayestopt_.name); + options_mcf.fname_ = fname_; + options_mcf.OutputDirectoryName = OutDir; + options_mcf.amcf_name = anam; + options_mcf.amcf_title = atitle; + options_mcf.title = atitle; + options_mcf.beha_title = 'better posterior kernel'; + options_mcf.nobeha_title = 'worse posterior kernel'; + mcf_analysis(x, ipost(1:nfilt), ipost(nfilt+1:end), options_mcf, options_); + if options_.opt_gsa.pprior - anam='rmse_prior_lik'; + anam = 'rmse_prior_lik'; + atitle = 'RMSE prior: Log Likelihood Kernel'; else anam='rmse_mc_lik'; + atitle = 'RMSE MC: Log Likelihood Kernel'; end - stab_map_1(x, ilik(1:nfilt), ilik(nfilt+1:end), anam, 1,[],OutDir); - stab_map_2(x(ilik(1:nfilt),:),alpha2,pvalue,anam, OutDir); + options_mcf.amcf_name = anam; + options_mcf.amcf_title = atitle; + options_mcf.title = atitle; + options_mcf.beha_title = 'better likelihood'; + options_mcf.nobeha_title = 'worse likelihood'; + mcf_analysis(x, ilik(1:nfilt), ilik(nfilt+1:end), options_mcf, options_); + else if options_.opt_gsa.ppost, rmse_txt=rmse_pmean; @@ -588,7 +609,7 @@ else options_mcf.beha_title = ['better fit of ' deblank(vvarvecm(iy,:))]; options_mcf.nobeha_title = ['worse fit of ' deblank(vvarvecm(iy,:))]; options_mcf.title = ['the fit of ' deblank(vvarvecm(iy,:))]; - mcf_analysis(x, ixx(1:nfilt0(iy),iy), ixx(nfilt0(iy)+1:end,iy), options_mcf, options_) + mcf_analysis(x, ixx(1:nfilt0(iy),iy), ixx(nfilt0(iy)+1:end,iy), options_mcf, options_); end for iy=1:size(vvarvecm,1), ipar = find(any(squeeze(PPV(iy,:,:)). +if nargin==4, + % inverse transformation + yy = (exp(y0)-lam)*isig; + return +end + if nargin==1, xdir0=''; end @@ -67,5 +73,6 @@ else lam = -min(y0)+abs(median(y0)); %abs(100*(1+min(y0))); end end + lam = max(lam,0); yy = log(y0+lam); end diff --git a/matlab/gsa/mcf_analysis.m b/matlab/gsa/mcf_analysis.m index 82d7bfb7f..cb7e92a10 100644 --- a/matlab/gsa/mcf_analysis.m +++ b/matlab/gsa/mcf_analysis.m @@ -1,4 +1,4 @@ -function mcf_analysis(lpmat, ibeha, inobeha, options_mcf, DynareOptions) +function indmcf = mcf_analysis(lpmat, ibeha, inobeha, options_mcf, DynareOptions) % % Written by Marco Ratto % Joint Research Centre, The European Commission, diff --git a/matlab/gsa/redform_map.m b/matlab/gsa/redform_map.m index 7421e1c92..448b1a634 100644 --- a/matlab/gsa/redform_map.m +++ b/matlab/gsa/redform_map.m @@ -53,21 +53,31 @@ alpha2 = options_gsa_.alpha2_redform; alpha2=0; pvalue_ks = options_gsa_.ksstat_redform; pvalue_corr = options_gsa_.alpha2_redform; +pnames = M_.param_names(estim_params_.param_vals(:,1),:); +fname_ = M_.fname; bounds = prior_bounds(bayestopt_,options_); -pnames = M_.param_names(estim_params_.param_vals(:,1),:); if nargin==0, dirname=''; end if pprior load([dirname,filesep,M_.fname,'_prior'],'lpmat', 'lpmat0', 'istable','T'); - adir=[dirname filesep 'redform_stab']; + adir=[dirname filesep 'redform_prior']; + type = 'prior'; else load([dirname,filesep,M_.fname,'_mc'],'lpmat', 'lpmat0', 'istable','T'); adir=[dirname filesep 'redform_mc']; + type = 'mc'; end +options_mcf.pvalue_ks = options_gsa_.ksstat_redform; +options_mcf.pvalue_corr = options_gsa_.alpha2_redform; +options_mcf.alpha2 = options_gsa_.alpha2_redform; +options_mcf.param_names = pnames; +options_mcf.fname_ = M_.fname; +options_mcf.OutputDirectoryName = adir; + if ~exist('T') stab_map_(dirname,options_gsa_); if pprior @@ -106,6 +116,15 @@ else pd = [bayestopt_.p6(offset+1:end) bayestopt_.p7(offset+1:end) bayestopt_.p3(offset+1:end) bayestopt_.p4(offset+1:end)]; end +options_map.param_names = pnames; +options_map.fname_ = M_.fname; +options_map.OutputDirectoryName = adir; +options_map.iload = iload; +options_map.log_trans = ilog; +options_map.prior_range = options_gsa_.prior_range; +options_map.pshape = pshape; +options_map.pd = pd; + nsok = length(find(M_.lead_lag_incidence(M_.maximum_lag,:))); lpmat=[]; lpmat0=[]; @@ -119,7 +138,7 @@ for j=1:size(anamendo,1) namexo=deblank(anamexo(jx,:)); iexo=strmatch(namexo,M_.exo_names,'exact'); skipline() - disp(['[', namendo,' vs. ',namexo,']']) + disp(['[', namendo,' vs ',namexo,']']) if ~isempty(iexo), @@ -128,7 +147,7 @@ for j=1:size(anamendo,1) if (max(y0)-min(y0))>1.e-10, if mod(iplo,9)==0 && isempty(threshold) && ~options_.nograph, ifig=ifig+1; - hfig = dyn_figure(options_,'name',['Reduced Form Mapping: ', namendo,' vs. shocks ',int2str(ifig)]); + hfig = dyn_figure(options_,'name',['Reduced Form Mapping: ', namendo,' vs shocks ',int2str(ifig)]); iplo=0; end iplo=iplo+1; @@ -139,7 +158,15 @@ for j=1:size(anamendo,1) if isempty(dir(xdir0)) mkdir(xdir0) end - si(:,js) = redform_private(x0, y0, pshape, pd, iload, pnames, namendo, namexo, xdir0, options_gsa_); + atitle0=['Reduced Form Mapping (ANOVA) for ',namendo,' vs ', namexo]; + aname=[type '_' namendo '_vs_' namexo]; + atitle=[type ' Reduced Form Mapping (ANOVA): Parameter(s) driving ',namendo,' vs ',namexo]; + options_map.amap_name = aname; + options_map.amap_title = atitle; + options_map.figtitle = atitle0; + options_map.title = [namendo,' vs ', namexo]; + options_map.OutputDirectoryName = xdir0; + si(:,js) = redform_private(x0, y0, options_map, options_); else iy=find( (y0>threshold(1)) & (y0=threshold(2))); @@ -148,41 +175,65 @@ for j=1:size(anamendo,1) mkdir(xdir) end if ~options_.nograph, - hf=dyn_figure(options_,'name',['Reduced Form Mapping: ',namendo,' vs. ', namexo]); hist(y0,30), title([namendo,' vs. ', namexo],'interpreter','none') - dyn_saveas(hf,[xdir,filesep, namendo,'_vs_', namexo],options_); + hf=dyn_figure(options_,'name',['Reduced Form Mapping (Monte Carlo Filtering): ',namendo,' vs ', namexo]); + hc = cumplot(y0); + a=axis; delete(hc); + % hist(mat_moment{ij}), + x1val=max(threshold(1),a(1)); + x2val=min(threshold(2),a(2)); + hp = patch([x1val x2val x2val x1val],a([3 3 4 4]),'b'); + set(hp,'FaceColor', [0.7 0.8 1]) + hold all, + hc = cumplot(y0); + set(hc,'color','k','linewidth',2) + hold off, + title([namendo,' vs ', namexo ' - threshold [' num2str(threshold(1)) ' ' num2str(threshold(2)) ']'],'interpreter','none') + dyn_saveas(hf,[xdir,filesep, fname_ '_' type '_' namendo,'_vs_', namexo],options_); end - % if ~isempty(iy), - % si(:,js) = redform_private(x0(iy,:), y0(iy), pshape, pd, iload, pnames, namendo, namexo, xdir, options_gsa_); - % else si(:,js) = NaN(np,1); - % end - if length(iy)>size(x0,2) && length(iyc)>size(x0,2) - delete([xdir, '/*threshold*.*']) - [proba, dproba] = stab_map_1(x0, iy, iyc, 'threshold',0); - % indsmirnov = find(dproba>ksstat); - indsmirnov = find(proba1.e-10, if mod(iplo,9)==0 && isempty(threshold) && ~options_.nograph, ifig=ifig+1; - hfig = dyn_figure(options_,'name',['Reduced Form Mapping: ' namendo,' vs. lags ',int2str(ifig)]); + hfig = dyn_figure(options_,'name',['Reduced Form Mapping: ' namendo,' vs lags ',int2str(ifig)]); iplo=0; end iplo=iplo+1; @@ -240,7 +291,15 @@ for j=1:size(anamendo,1) if isempty(dir(xdir0)) mkdir(xdir0) end - si(:,js) = redform_private(x0, y0, pshape, pd, iload, pnames, namendo, namlagendo, xdir0, options_gsa_); + atitle0=['Reduced Form Mapping (ANOVA) for ',namendo,' vs ', namlagendo]; + aname=[type '_' namendo '_vs_' namlagendo]; + atitle=[type ' Reduced Form Mapping (ANOVA): Parameter(s) driving ',namendo,' vs ',namlagendo]; + options_map.amap_name = aname; + options_map.amap_title = atitle; + options_map.figtitle = atitle0; + options_map.title = [namendo,' vs ', namlagendo]; + options_map.OutputDirectoryName = xdir0; + si(:,js) = redform_private(x0, y0, options_map, options_); else iy=find( (y0>threshold(1)) & (y0=threshold(2))); @@ -248,41 +307,67 @@ for j=1:size(anamendo,1) if isempty(dir(xdir)) mkdir(xdir) end - % if ~isempty(iy) - % si(:,js) = redform_private(x0(iy,:), y0(iy), pshape, pd, iload, pnames, namendo, namlagendo, xdir, options_gsa_); - % end if ~options_.nograph, - hf=dyn_figure(options_,'name',['Reduced Form Mapping: ',namendo,' vs. lagged ', namlagendo]); hist(y0,30), title([namendo,' vs. lagged ', namlagendo],'interpreter','none') - dyn_saveas(hf,[xdir,filesep, namendo,'_vs_', namlagendo],options_); + hf=dyn_figure(options_,'name',['Reduced Form Mapping (Monte Carlo Filtering): ',namendo,' vs lagged ', namlagendo]); + hc = cumplot(y0); + a=axis; delete(hc); + % hist(mat_moment{ij}), + x1val=max(threshold(1),a(1)); + x2val=min(threshold(2),a(2)); + hp = patch([x1val x2val x2val x1val],a([3 3 4 4]),'b'); + set(hp,'FaceColor', [0.7 0.8 1]) + hold all, + hc = cumplot(y0); + set(hc,'color','k','linewidth',2) + hold off, + title([namendo,' vs lagged ', namlagendo ' - threshold [' num2str(threshold(1)) ' ' num2str(threshold(2)) ']'],'interpreter','none') + dyn_saveas(hf,[xdir,filesep, fname_ '_' type '_' namendo,'_vs_', namlagendo],options_); end - if length(iy)>size(x0,2) && length(iyc)>size(x0,2), - delete([xdir, '/*threshold*.*']) - [proba, dproba] = stab_map_1(x0, iy, iyc, 'threshold',0); - % indsmirnov = find(dproba>ksstat); - indsmirnov = find(probanest, - gsa_ = gsa_sdp(y0(1:nfit), x0(1:nfit,:), -2, gsa_.nvr*nest^3/nfit^3,[-1 -1 -1 -1 -1 0],[],0,fname, pnames); +% gsa_ = gsa_sdp(y0(1:nest), x0(1:nest,:), 2, [],[-1 -1 -1 -1 -1 0],[],0,[fname,'_est'], pnames); + [ys,is] = sort(y0); + istep = ceil(nrun/nest); + iest = is(floor(istep/2):istep:end); + nest = length(iest); + irest = is(setdiff([1:nrun],[floor(istep/2):istep:nrun])); + istep = ceil(length(irest)/(nfit-nest)); + ifit = union(iest, irest(1:istep:end)); + if ~ismember(irest(end),ifit), + ifit = union(ifit, irest(end)); + end + nfit=length(ifit); +% ifit = union(iest, irest(randperm(nrun-nest,nfit-nest))); +% ifit = iest; +% nfit=nest; + ipred = setdiff([1:nrun],ifit); + + if ilog, + [y1, tmp, isig, lam] = log_trans_(y0(iest)); + y1 = log(y0*isig+lam); end - save([fname,'.mat'],'gsa_') - [sidum, iii]=sort(-gsa_.si); - gsa_.x0=x00(1:nfit,:); if ~options_.nograph, - hfig=gsa_sdp_plot(gsa_,fname,pnames,iii(1:min(12,np))); - if options_.nodisplay - close(hfig); + hfig=dyn_figure(options_,'name',options_map.figtitle); + subplot(221) + if ilog, + hist(y1,30), + else + hist(y0,30), end + title(options_map.title,'interpreter','none') + subplot(222) + if ilog, + hc = cumplot(y1); + else + hc = cumplot(y0); + end + set(hc,'color','k','linewidth',2) + title([options_map.title ' CDF'],'interpreter','none') end - gsa_.x0=x0(1:nfit,:); + + gsa0 = ss_anova(y0(iest), x0(iest,:), 1); + if ilog, + [gsa22, gsa1, gsax] = ss_anova_log(y1(iest), x0(iest,:), isig, lam, gsa0); + end +% if (gsa1.out.bic-gsa0.out.bic) < 10, +% y00=y0; +% gsa00=gsa0; +% gsa0=gsa1; +% y0=y1; +% ilog=1; +% end +if nfit>nest, + % gsa_ = gsa_sdp(y0(1:nfit), x0(1:nfit,:), -2, gsa_.nvr*nest^3/nfit^3,[-1 -1 -1 -1 -1 0],[],0,fname, pnames); + nvr = gsa0.nvr*nest^3/nfit^3; + nvr(gsa0.stat<2) = gsa0.nvr(gsa0.stat<2)*nest^5/nfit^5; + gsa_ = ss_anova(y0(ifit), x0(ifit,:), 1, 0, 2, nvr); + if ilog + gsa0 = gsa_; + nvr1 = gsa1.nvr*nest^3/nfit^3; + nvr1(gsa1.stat<2) = gsa1.nvr(gsa1.stat<2)*nest^5/nfit^5; + nvrx = gsax.nvr*nest^3/nfit^3; + nvrx(gsax.stat<2) = gsax.nvr(gsax.stat<2)*nest^5/nfit^5; + [gsa22, gsa1, gsax] = ss_anova_log(y1(ifit), x0(ifit,:), isig, lam, gsa0, [nvr1' nvrx']); +% gsa1 = ss_anova(y1(ifit), x0(ifit,:), 1, 0, 2, nvr); +% gsa2=gsa1; +% gsa2.y = gsa0.y; +% gsa2.fit = (exp(gsa1.fit)-lam)*isig; +% gsa2.f0 = mean(gsa2.fit); +% gsa2.out.SSE = sum((gsa2.fit-gsa2.y).^2); +% gsa2.out.bic = gsa2.out.bic-nest*log(gsa1.out.SSE)+nest*log(gsa2.out.SSE); +% gsa2.r2 = 1-cov(gsa2.fit-gsa2.y)/cov(gsa2.y); +% for j=1:np, +% gsa2.fs(:,j) = exp(gsa1.fs(:,j)).*mean(exp(gsa1.fit-gsa1.f(:,j)))*isig-lam*isig-gsa2.f0; +% gsa2.f(:,j) = exp(gsa1.f(:,j)).*mean(exp(gsa1.fit-gsa1.f(:,j)))*isig-lam*isig-gsa2.f0; +% gsa2.si(j) = var(gsa2.f(:,j))/var(gsa2.y); +% end +% nvr = gsax.nvr*nest^3/nfit^3; +% nvr(gsax.stat<2) = gsax.nvr(gsax.stat<2)*nest^5/nfit^5; +% gsax = ss_anova([gsa2.y-gsa2.fit], x0(ifit,:), 1, 0, 2, nvr); +% gsa22=gsa2; +% gsa22.fit = gsa2.fit+gsax.fit; +% gsa22.f0 = mean(gsa22.fit); +% gsa22.out.SSE = sum((gsa22.fit-gsa22.y).^2); +% gsa22.out.bic = nest*log(gsa22.out.SSE/nest) + (gsax.out.df+gsa2.out.df-1)*log(nest); +% gsa22.r2 = 1-sum((gsa22.fit-gsa22.y).^2)/sum((gsa22.y-mean(gsa22.y)).^2); +% for j=1:np, +% gsa22.fs(:,j) = gsa2.fs(:,j)+gsax.fs(:,j); +% gsa22.f(:,j) = gsa2.f(:,j)+gsax.f(:,j); +% gsa22.si(j) = var(gsa22.f(:,j))/var(gsa22.y); +% end + gsa_ = gsa22; + end +else + if ilog + gsa_ = gsa22; + else + gsa_ = gsa0; + end +end + save([fname,'_map.mat'],'gsa_') + [sidum, iii]=sort(-gsa_.si); + gsa_.x0=x00(ifit,:); + if ~options_.nograph, + hmap=gsa_sdp_plot(gsa_,[fname '_map'],pnames,iii(1:min(12,np))); + set(hmap,'name',options_map.amap_title); + end + gsa_.x0=x0(ifit,:); % copyfile([fname,'_est.mat'],[fname,'.mat']) if ~options_.nograph, - hfig=dyn_figure(options_,'name',['Reduced Form Mapping: ' namy,'_vs_', namx,'_fit']); - plot(y0(1:nfit),[gsa_.fit y0(1:nfit)],'.'), - title([namy,' vs. ', namx,' fit'],'interpreter','none') - dyn_saveas(hfig,[xdir,filesep, namy,'_vs_', namx,'_fit'],options_); + figure(hfig); + subplot(223), + plot(y0(ifit),[gsa_.fit y0(ifit)],'.'), + r2 = gsa_.r2; +% if ilog, +% plot(y00(ifit),[log_trans_(gsa_.fit,'',isig,lam) y00(ifit)],'.'), +% r2 = 1 - cov(log_trans_(gsa_.fit,'',isig,lam)-y00(ifit))/cov(y00(ifit)); +% else +% plot(y0(ifit),[gsa_.fit y0(ifit)],'.'), +% r2 = gsa_.r2; +% end + title(['Learning sample fit - R2=' num2str(r2,2)],'interpreter','none') if nfit=5 && ~isempty(gsa0), + for j=1:np, + nvr2(j) = var(diff(gsa2.fs(:,j),2)); + nvr0(j) = var(diff(gsa0.fs(:,j),2)); + end + inda = find((gsa0.stat<2)&(gsa1.stat>2)); + inda = inda(log10(nvr0(inda)./nvr2(inda))/2<0); + gsa1.nvr(inda)=gsa1.nvr(inda).*10.^(log10(nvr0(inda)./nvr2(inda))); + gsa1 = ss_anova(y, x, 1, 0, 2, gsa1.nvr); + gsa2 = log2level_map(gsa1, isig, lam); +end +if nargin==6, + gsax = ss_anova(gsa2.y-gsa2.fit, x, 1, 0, 2, nvrs(:,2)); +else + gsax = ss_anova(gsa2.y-gsa2.fit, x, 1); +end +gsa22=gsa2; +gsa22.fit = gsa2.fit+gsax.fit; +gsa22.f0 = mean(gsa22.fit); +gsa22.out.SSE = sum((gsa22.fit-gsa22.y).^2); +gsa22.out.bic = nest*log(gsa22.out.SSE/nest) + (gsax.out.df+gsa2.out.df-1)*log(nest); +gsa22.r2 = 1-sum((gsa22.fit-gsa22.y).^2)/sum((gsa22.y-mean(gsa22.y)).^2); +for j=1:np, + gsa22.fs(:,j) = gsa2.fs(:,j)+gsax.fs(:,j); + gsa22.fses(:,j) = gsax.fses(:,j); + gsa22.f(:,j) = gsa2.f(:,j)+gsax.f(:,j); + gsa22.si(j) = var(gsa22.f(:,j))/var(gsa22.y); +end + +return + +function indmcf = redform_mcf(y0, x0, options_mcf, options_) + +hfig=dyn_figure(options_,'name',options_mcf.amcf_title); + +[post_mean, post_median, post_var, hpd_interval, post_deciles, ... + density] = posterior_moments(y0,1,0.9); +post_deciles = [-inf; post_deciles; inf]; + +for jt=1:10, + indy{jt}=find( (y0>post_deciles(jt)) & (y0<=post_deciles(jt+1))); + leg{jt}=[int2str(jt) '-dec']; +end +[proba, dproba] = stab_map_1(x0, indy{1}, indy{end}, [],0); +indmcf=find(probanbr_par, + ncol=nrow-1; +end + +cmap = colormap(jet(10)); +for jx=1:nbr_par, + subplot(nrow,ncol,jx) + hold off + for jt=1:10, + h=cumplot(x0(indy{jt},indmcf(jx))); + set(h,'color', cmap(jt,:), 'linewidth', 2) + hold all, + end + title(options_mcf.param_names(indmcf(jx),:),'interpreter','none') +end +hleg = legend(leg); +aa=get(hleg,'Position'); +aa(1)=1-aa(3)-0.02; +aa(2)=0.02; +set(hleg,'Position',aa); +if ~isoctave + annotation('textbox', [0.25,0.01,0.5,0.05], ... + 'String', options_mcf.title, ... + 'Color','black',... + 'FontWeight','bold',... + 'interpreter','none',... + 'horizontalalignment','center'); +end + +dyn_saveas(hfig,[options_mcf.OutputDirectoryName filesep options_mcf.fname_,'_',options_mcf.amcf_name],options_); + +return diff --git a/matlab/gsa/stab_map_.m b/matlab/gsa/stab_map_.m index b813aa367..876a75e8a 100644 --- a/matlab/gsa/stab_map_.m +++ b/matlab/gsa/stab_map_.m @@ -561,7 +561,7 @@ if length(iunstable)>0 || length(iwrong)>0, options_mcf.beha_title = 'unique Stable Saddle-Path'; options_mcf.nobeha_title = 'NO unique Stable Saddle-Path'; options_mcf.title = 'unique solution'; - mcf_analysis(lpmat, istable, itmp, options_mcf, options_) + mcf_analysis(lpmat, istable, itmp, options_mcf, options_); if ~isempty(iindeterm), itmp = itot(find(~ismember(itot,iindeterm))); @@ -570,7 +570,7 @@ if length(iunstable)>0 || length(iwrong)>0, options_mcf.beha_title = 'NO indeterminacy'; options_mcf.nobeha_title = 'indeterminacy'; options_mcf.title = 'indeterminacy'; - mcf_analysis(lpmat, itmp, iindeterm, options_mcf, options_) + mcf_analysis(lpmat, itmp, iindeterm, options_mcf, options_); end if ~isempty(ixun), @@ -580,7 +580,7 @@ if length(iunstable)>0 || length(iwrong)>0, options_mcf.beha_title = 'NO explosive solution'; options_mcf.nobeha_title = 'explosive solution'; options_mcf.title = 'instability'; - mcf_analysis(lpmat, itmp, ixun, options_mcf, options_) + mcf_analysis(lpmat, itmp, ixun, options_mcf, options_); end inorestriction = istable(find(~ismember(istable,irestriction))); % what went wrong beyong prior restrictions @@ -592,7 +592,7 @@ if length(iunstable)>0 || length(iwrong)>0, options_mcf.beha_title = 'NO inability to find a solution'; options_mcf.nobeha_title = 'inability to find a solution'; options_mcf.title = 'inability to find a solution'; - mcf_analysis(lpmat, itmp, iwrong, options_mcf, options_) + mcf_analysis(lpmat, itmp, iwrong, options_mcf, options_); end if ~isempty(irestriction), @@ -602,7 +602,7 @@ if length(iunstable)>0 || length(iwrong)>0, options_mcf.beha_title = 'prior IRF/moment calibration'; options_mcf.nobeha_title = 'NO prior IRF/moment calibration'; options_mcf.title = 'prior restrictions'; - mcf_analysis([lpmat0 lpmat], irestriction, inorestriction, options_mcf, options_) + mcf_analysis([lpmat0 lpmat], irestriction, inorestriction, options_mcf, options_); iok = irestriction(1); x0 = [lpmat0(iok,:)'; lpmat(iok,:)']; else diff --git a/matlab/plot_identification.m b/matlab/plot_identification.m index 4f9fcf98a..549224ef0 100644 --- a/matlab/plot_identification.m +++ b/matlab/plot_identification.m @@ -247,13 +247,30 @@ else hist(log10(idelre.cond)) title('log10 of Condition number in the LRE model') dyn_saveas(hh,[IdentifDirectoryName '/' M_.fname '_ident_COND' ],options_); + options_mcf.pvalue_ks = 0.1; + options_mcf.pvalue_corr = 0.001; + options_mcf.alpha2 = 0; + options_mcf.param_names = name; + options_mcf.fname_ = M_.fname; + options_mcf.OutputDirectoryName = IdentifDirectoryName; + options_mcf.beha_title = 'LOW condition nbr'; + options_mcf.nobeha_title = 'HIGH condition nbr'; + options_mcf.amcf_name = 'MC_HighestCondNumberLRE'; + options_mcf.amcf_title = 'MC Highest Condition Number LRE Model'; + options_mcf.title = 'MC Highest Condition Number LRE Model'; ncut=floor(SampleSize/10*9); [dum,is]=sort(idelre.cond); - [proba, dproba] = stab_map_1(params, is(1:ncut), is(ncut+1:end), 'MC_HighestCondNumberLRE', 1, [], IdentifDirectoryName, 0.1,'MC Highest Condition Number LRE Model'); + mcf_analysis(params, is(1:ncut), is(ncut+1:end), options_mcf, options_); + options_mcf.amcf_name = 'MC_HighestCondNumberModel'; + options_mcf.amcf_title = 'MC Highest Condition Number Model Solution'; + options_mcf.title = 'MC Highest Condition Number Model Solution'; [dum,is]=sort(idemodel.cond); - [proba, dproba] = stab_map_1(params, is(1:ncut), is(ncut+1:end), 'MC_HighestCondNumberModel', 1, [], IdentifDirectoryName, 0.1,'MC Highest Condition Number Model Solution'); + mcf_analysis(params, is(1:ncut), is(ncut+1:end), options_mcf, options_); + options_mcf.amcf_name = 'MC_HighestCondNumberMoments'; + options_mcf.amcf_title = 'MC Highest Condition Number Model Moments'; + options_mcf.title = 'MC Highest Condition Number Model Moments'; [dum,is]=sort(idemoments.cond); - [proba, dproba] = stab_map_1(params, is(1:ncut), is(ncut+1:end), 'MC_HighestCondNumberMoments', 1, [], IdentifDirectoryName, 0.1,'MC Highest Condition Number Model Moments'); + mcf_analysis(params, is(1:ncut), is(ncut+1:end), options_mcf, options_); % [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);