From b82ce1baf1e9531b5ddcc55d56abeeefdfb3787d Mon Sep 17 00:00:00 2001
From: michel <michel@ac1d8469-bf42-47a9-8791-bf33cf982152>
Date: Fri, 16 Dec 2005 14:57:55 +0000
Subject: [PATCH] v3 metropolis: corrected bugs when not in dsge_var mode

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v3@555 ac1d8469-bf42-47a9-8791-bf33cf982152
---
 matlab/metropolis.m | 86 ++++++++++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 41 deletions(-)

diff --git a/matlab/metropolis.m b/matlab/metropolis.m
index 4c970fa268..1c412edc72 100644
--- a/matlab/metropolis.m
+++ b/matlab/metropolis.m
@@ -34,7 +34,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
   MAX_nfilt = ceil(MaxNumberOfBytes/((endo_nbr)*gend)/8);
   if options_.bayesian_irf
     MAX_nirfs_dsge = ceil(MaxNumberOfBytes/(options_.irf*length(ys_)*exo_nbr)/8);
-    if exist('dsge_prior_weight')
+    if ~isempty(dsge_prior_weight)
       MAX_nirfs_dsgevar = ceil(MaxNumberOfBytes/(options_.irf*nvobs*exo_nbr)/8)
     end
   end
@@ -2267,7 +2267,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
   %%                                    %%
   if options_.forecast
     tmp = zeros(B,1);
-    tmp_big = zeros(2*B,1);
+    tmp_big = zeros(B,1);
     fprintf('MH: Out of sample forecasts...\n');
     MeanForecast = zeros(options_.forecast,nvar);
     MedianForecast = zeros(options_.forecast,nvar);
@@ -2309,11 +2309,11 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	end
 	HPD(step,i,1) = tmp(tmp2(1));
 	HPD(step,i,2) = tmp(tmp2(2));
-	t = floor(options_.mh_conf_sig*B*2);
+	t = floor(options_.mh_conf_sig*B);
 	a = 1; 
 	b = t;
 	tmp2_big = [1;t;tmp_big(t)-tmp_big(1)];
-	while b <= 2*B
+	while b <= B
 	  tmp1_big = [a;b;tmp_big(b)-tmp_big(a)];
 	  a = a + 1;
 	  b = b + 1;
@@ -2463,7 +2463,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
     deep = MU;
     subindx = subset();
     nirfs = options_.irf;
-    if exist('dsge_prior_weight')
+    if ~isempty(dsge_prior_weight)
       files = eval(['dir(''' fname_ '_irf_dsgevar*.mat'');']);     
       if length(files)                                        
 	delete([fname_ '_irf_dsgevar*.mat']);                    
@@ -2486,7 +2486,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
     elseif nvn & B > MAX_nirfs
       stock_irf_dsge = zeros(nirfs,size(lgy_,1),exo_nbr,MAX_nirfs_dsge);
     end
-    if exist('dsge_prior_weight')
+    if ~isempty(dsge_prior_weight)
       if B <= MAX_nirfs_dsgevar
 	stock_irf_dsgevar = zeros(nirfs,nvobs,exo_nbr,B);
       else
@@ -2507,7 +2507,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
       for b = 1:B;
 	irun_irf_dsge = irun_irf_dsge+1;
 	tmp_dsge = zeros(nirfs,size(lgy_,1),exo_nbr);
-	if exist('dsge_prior_weight')
+	if ~isempty(dsge_prior_weight)
 	  irun_irf_dsgevar = irun_irf_dsgevar+1;
 	  tmp_dsgevar = zeros(nirfs,nvobs*exo_nbr);
 	end
@@ -2554,7 +2554,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	  stock_irf_dsge = zeros(nirfs,size(lgy_,1),exo_nbr,MAX_nirfs_dsge);
 	end
 	% bvar-dsge 
-	if exist('dsge_prior_weight')
+	if ~isempty(dsge_prior_weight)
 	  DsgeVarLikelihood(deep',gend);
 	  GYY = evalin('base','GYY');
 	  GXX = evalin('base','GXX');
@@ -2624,7 +2624,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	eval(['save ' instr]);
       end
       clear stock_irf_dsge;
-      if exist('dsge_prior_weight')
+      if ~isempty(dsge_prior_weight)
 	if irun_irf_dsgevar
 	  stock_irf_dsgevar = stock_irf_dsgevar(:,:,:,1:irun_irf_dsgevar);
 	  sfil_irf_dsgevar = sfil_irf_dsgevar + 1;
@@ -2636,7 +2636,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
     else
       sfil_irf_dsge = 0;
       irun_irf_dsge = 0;
-      if exist('dsge_prior_weight')
+      if ~isempty(dsge_prior_weight)
 	sfil_irf_dsgevar = 0;
 	irun_irf_dsgevar = 0;	
       end
@@ -2646,7 +2646,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
       for b = 1:B;
 	irun_irf_dsge = irun_irf_dsge+1;
 	tmp_dsge = zeros(nirfs,size(lgy_,1),exo_nbr);
-	if exist('dsge_prior_weight')
+	if ~isempty(dsge_prior_weight)
 	  irun_irf_dsgevar = irun_irf_dsgevar+1;
 	  tmp_dsgevar = zeros(nirfs,nvobs*exo_nbr);	  
 	end
@@ -2683,7 +2683,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	  stock_irf_dsge = zeros(nirfs,size(lgy_,1),exo_nbr,MAX_nirfs_dsge);
 	end
 	% bvar-dsge
-	if exist('dsge_prior_weight')
+	if ~isempty(dsge_prior_weight)
 	  DsgeVarLikelihood(deep',gend);
 	  GYY = evalin('base','GYY');
 	  GXX = evalin('base','GXX');
@@ -2752,7 +2752,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	eval(['save ' instr]);
       end
       clear stock_irf_dsge;
-      if exist('dsge_prior_weight')
+      if ~isempty(dsge_prior_weight)
 	if irun_irf_dsgevar
 	  stock_irf_dsgevar = stock_irf_dsgevar(:,:,:,1:irun_irf_dsgevar);
 	  sfil_irf_dsgevar = sfil_irf_dsgevar + 1;
@@ -2773,7 +2773,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
     StdIRF_dsge = zeros(nirfs,nvar,exo_nbr);
     DistribIRF_dsge = zeros(nirfs,nvar,exo_nbr,9);
     HPDIRF_dsge = zeros(nirfs,nvar,exo_nbr,2);
-    if exist('dsge_prior_weight')
+    if ~isempty(dsge_prior_weight)
       SelecVariables = bayestopt_.mfys;
       nvar = length(SelecVariables);
     end
@@ -2830,7 +2830,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	      deblank(lgy_(SelecVariables(j),:)) '_' deblank(tit(i,:)) ' = squeeze(HPDIRF_dsge(:,j,i,2));']);
       end
     end
-    if exist('dsge_prior_weight')% BVAR-DSGE:
+    if ~isempty(dsge_prior_weight)% BVAR-DSGE:
       tmp = zeros(B,1);
       MeanIRF_dsgevar = zeros(nirfs,nvar,exo_nbr);
       MedianIRF_dsgevar = zeros(nirfs,nvar,exo_nbr);
@@ -2906,9 +2906,9 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
     for i=1:exo_nbr
       number_of_plots_to_draw = 0;
       index = [];
-      if ~exist('dsge_prior_weight') 
+      if ~~isempty(dsge_prior_weight) 
 	for j=1:nvar
-	  if MeanIRF(1,j,i)
+	  if MeanIRF_dsge(1,j,i)
 	    number_of_plots_to_draw = number_of_plots_to_draw + 1;
 	    index = cat(1,index,j);
 	  end
@@ -2933,12 +2933,16 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	  hold on
 	  for k = 1:9
 	    plot(1:nirfs,DistribIRF_dsge(:,index(j),i,k),'-k','linewidth',0.5,'Color',[0 0 0])
-	    if exist('dsge_prior_weight')
+	    if ~isempty(dsge_prior_weight)
 	      plot(1:nirfs,DistribIRF_dsgevar(:,j,i,k),'-k','linewidth',0.5,'Color',[0.80 0.80 0.80])
 	    end
 	  end
-	  plot(1:nirfs,MeanIRF_dsge(:,index(j),i),'-k','linewidth',3,'Color',[0 0 0])
-	  plot(1:nirfs,MeanIRF_dsgevar(:,j,i),'-k','linewidth',3,'Color',[0.80 0.80 0.80])
+	  plot(1:nirfs,MeanIRF_dsge(:,index(j),i),'-k','linewidth',3,'Color',[0 ...
+		    0 0])
+	  if ~isempty(dsge_prior_weight)
+	    plot(1:nirfs,MeanIRF_dsgevar(:,j,i),'-k','linewidth',3,'Color',[0.80 ...
+		    0.80 0.80])
+	  end
 	  xlim([1 nirfs]);
 	  hold off
 	  name = deblank(lgy_(SelecVariables(index(j)),:));
@@ -2949,7 +2953,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	  end
 	  title(name,'Interpreter','none')
 	end
-	if ~exist('dsge_prior_weight')
+	if isempty(dsge_prior_weight)
 	  eval(['print -depsc2 ' fname_ '_Bayesian_IRFdsge_' deblank(tit(i,:))]);
 	  eval(['print -dpdf ' fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:))]);
 	  saveas(hh,[fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) '.fig']);
@@ -2965,7 +2969,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	    fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
 	  end    
 	  fprintf(fidTeX,'\\centering \n');
-	  if ~exist('dsge_prior_weight')
+	  if ~~isempty(dsge_prior_weight)
 	    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFdsge_%s}\n',fname_,deblank(tit(i,:)));
 	  else
 	    fprintf(fidTeX,['\\includegraphics[scale=0.5]{%s_Bayesian_IRFbvardsge_%s}\n',fname_,deblank(tit(i,:))]);
@@ -2973,13 +2977,13 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	  if options_.relative_irf
 	    fprintf(fidTeX,['\\caption{Bayesian relative IRF.}']);
 	  else
-	    if ~exist('dsge_prior_weight')
+	    if ~~isempty(dsge_prior_weight)
 	      fprintf(fidTeX,'\\caption{Bayesian IRF (DSGE model).}');
 	    else
 	      fprintf(fidTeX,'\\caption{Bayesian IRF (BVAR-DSGE model).}');
 	    end
 	  end
-	  if ~exist('dsge_prior_weight')
+	  if ~~isempty(dsge_prior_weight)
 	    fprintf(fidTeX,'\\label{Fig:BayesianIRFdsge:%s}\n',deblank(tit(i,:)));
 	  else
 	    fprintf(fidTeX,'\\label{Fig:BayesianIRFbvardsge:%s}\n',deblank(tit(i,:)));
@@ -3005,12 +3009,12 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	    hold on
 	    for k = 1:9
 	      plot(1:options_.irf,DistribIRF_dsge(:,index(jj),i,k),'-k','linewidth',0.5,'Color',[0 0 0])
-	      if exist('dsge_prior_weight')
+	      if ~isempty(dsge_prior_weight)
 		plot(1:nirfs,DistribIRF_dsgevar(:,jj,i,k),'-k','linewidth',0.5,'Color',[0.80 0.80 0.80])
 	      end
 	    end
 	    plot(1:nirfs,MeanIRF_dsge(:,index(jj),i),'-k','linewidth',3,'Color',[0 0 0])
-	    if exist('dsge_prior_weight')
+	    if ~isempty(dsge_prior_weight)
 	      plot(1:nirfs,MeanIRF_dsgevar(:,jj,i),'-k','linewidth',3,'Color',[0.80 0.80 0.80])
 	    end
 	    xlim([1 nirfs]);
@@ -3023,7 +3027,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	    end
 	    title(name,'Interpreter','none')
 	  end
-	  if ~exist('dsge_prior_weight')
+	  if ~~isempty(dsge_prior_weight)
 	    eval(['print -depsc2 ' fname_ '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(fig)]);
 	    eval(['print -dpdf ' fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(fig)]);
 	    saveas(hh,[fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(fig) '.fig']);
@@ -3039,7 +3043,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	      fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
 	    end    
 	    fprintf(fidTeX,'\\centering \n');
-	    if ~exist('dsge_prior_weight')
+	    if ~~isempty(dsge_prior_weight)
 	      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFdsge_%s%s}\n',fname_,deblank(tit(i,:)),int2str(fig));
 	    else
 	      fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFbvardsge_%s%s}\n',fname_,deblank(tit(i,:)),int2str(fig));
@@ -3047,13 +3051,13 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	    if options_.relative_irf == 1
 	      fprintf(fidTeX,['\\caption{Bayesian relative IRF.}']);
 	    else
-	      if ~exist('dsge_prior_weight')
+	      if ~~isempty(dsge_prior_weight)
 		fprintf(fidTeX,'\\caption{Bayesian IRF (DSGE model).}');
 	      else
 		fprintf(fidTeX,['\\caption{Bayesian IRF (BVAR-DSGE model).}']);
 	      end
 	    end
-	    if ~exist('dsge_prior_weight')
+	    if ~~isempty(dsge_prior_weight)
 	      fprintf(fidTeX,'\\label{Fig:BayesianIRFdsge:%s:%s}\n',deblank(tit(i,:)), int2str(fig));
 	    else
 	      fprintf(fidTeX,'\\label{Fig:BayesianIRFbvardsge:%s:%s}\n',deblank(tit(i,:)), int2str(fig));
@@ -3072,13 +3076,13 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	  hold on
 	  for k = 1:9
 	    plot(1:options_.irf,DistribIRF_dsge(:,index(jj),i,k),'-k','linewidth',0.5,'Color',[0 0 0])
-	    if exist('dsge_prior_weight')
+	    if ~isempty(dsge_prior_weight)
 	      plot(1:nirfs,DistribIRF_dsgevar(:,jj,i,k),'-k','linewidth',0.5,'Color',[0.80 0.80 0.80])
 	    end
 	  end
-	  plot(1:nirfs,MeanIRF(:,index(jj),i),'-k','linewidth',3,'Color',[0 0 0])
-	  if exist('dsge_prior_weight')
-	    plot(1:nirfs,MeanIRF(:,jj,i),'-k','linewidth',3,'Color',[0.80 0.80 0.80])
+	  plot(1:nirfs,MeanIRF_dsge(:,index(jj),i),'-k','linewidth',3,'Color',[0 0 0])
+	  if ~isempty(dsge_prior_weight)
+	    plot(1:nirfs,MeanIRF_dsgevar(:,jj,i),'-k','linewidth',3,'Color',[0.80 0.80 0.80])
 	  end  
 	  xlim([1 nirfs]);
 	  hold off
@@ -3090,7 +3094,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	  end
 	  title(name,'Interpreter','none')
 	end
-	if ~exist('dsge_prior_weight')
+	if ~~isempty(dsge_prior_weight)
 	  eval(['print -depsc2 ' fname_ '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(nbplt)]);
 	  eval(['print -dpdf ' fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(nbplt)]);
 	  saveas(hh,[fname_  '_Bayesian_IRFdsge_' deblank(tit(i,:)) int2str(nbplt) '.fig']);
@@ -3106,7 +3110,7 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 	    fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
 	  end    
 	  fprintf(fidTeX,'\\centering \n');
-	  if ~exist('dsge_prior_weight')
+	  if ~~isempty(dsge_prior_weight)
 	    fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRFdsge_%s%s}\n',fname_,deblank(tit(i,:)),int2str(nbplt));
 	    fprintf(fidTeX,'\\caption{Bayesian IRF (DSGE model).}');
 	    fprintf(fidTeX,'\\label{Fig:BayesianIRFdsge:%s:%s}\n',deblank(tit(i,:)), int2str(nbplt));
@@ -3756,11 +3760,11 @@ function metropolis(xparam1,vv,gend,data,rawdata,mh_bounds)
 		     StdDecomp(i,j),...
 		     HPDDecomp(i,j,1),...
 		     HPDDecomp(i,j,2)));
-	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Mean.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1_(j,:)) ' = MeanDecomp(i,j);']);
-	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Median.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1_(j,:)) ' = MedianDecomp(i,j);']);
-	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Std.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1_(j,:)) ' = StdDecomp(i,j);']);
-	eval(['oo_.PosteriorTheoreticalMoment.Decomp.HPDinf.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1_(j,:)) ' = HPDDecomp(i,j,1);']);
-	eval(['oo_.PosteriorTheoreticalMoment.Decomp.HPDsup.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1_(j,:)) ' = HPDDecomp(i,j,2);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Mean.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = MeanDecomp(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Median.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = MedianDecomp(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.Std.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = StdDecomp(i,j);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.HPDinf.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = HPDDecomp(i,j,1);']);
+	eval(['oo_.PosteriorTheoreticalMoment.Decomp.HPDsup.' deblank(lgy_(ivar(i),:)) '_' deblank(lgx1(j,:)) ' = HPDDecomp(i,j,2);']);
       end       
     end
     if TeX
-- 
GitLab