172 lines
5.8 KiB
Matlab
172 lines
5.8 KiB
Matlab
|
function compdist(xparam1, x2, pltopt, figurename)
|
||
|
global bayestopt_ estim_params_ M_ options_
|
||
|
|
||
|
% NOTE: If pltopt ~= 'All' compdist.m just draws prior densities.
|
||
|
|
||
|
%% Set density estimation parameters:
|
||
|
number_of_grid_points = 2^9; % 2^9 = 512 !... Must be a power of two.
|
||
|
bandwidth = 0; % Rule of thumb optimal bandwidth parameter.
|
||
|
kernel_function = 'gaussian'; % You can switch to: 'epanechnikov', 'quartic', 'triangle',
|
||
|
% 'triweight', 'uniform' or 'cosinus' kernels (iff bandwidth=0, see posterior_density_estimate.m).
|
||
|
truncprior = 10^(-3);
|
||
|
|
||
|
|
||
|
npar=length(xparam1);
|
||
|
nruns=length(x2);
|
||
|
icol=ceil(sqrt(npar));
|
||
|
iraw=icol;
|
||
|
if (icol-1)*(icol-2)>=npar
|
||
|
iraw = icol-2;
|
||
|
icol=icol-1;
|
||
|
elseif (icol)*(icol-2)>=npar
|
||
|
iraw = icol-2;
|
||
|
elseif icol*(icol-1)>=npar
|
||
|
iraw=icol-1;
|
||
|
end
|
||
|
|
||
|
pmean=bayestopt_.pmean;
|
||
|
pshape=bayestopt_.pshape;
|
||
|
p1 = bayestopt_.p1;
|
||
|
p2 = bayestopt_.p2;
|
||
|
p3 = bayestopt_.p3;
|
||
|
p4 = bayestopt_.p4;
|
||
|
|
||
|
figure('Name',figurename)
|
||
|
for i=1:npar;
|
||
|
if i<=estim_params_.nvx
|
||
|
vname = deblank(M_.exo_name(estim_params_.var_exo(i,1),:));
|
||
|
nam=['SE_{',vname,'}'];
|
||
|
elseif i<=(estim_params_.nvx+estim_params_.nvn)
|
||
|
deblank(options_.varobs(estim_params_.var_endo(i-estim_params_.nvx,1),:));
|
||
|
nam=['SE_{EOBS_',vname,'}'];
|
||
|
elseif i<=(estim_params_.nvx+estim_params_.nvn+estim_params_.ncx)
|
||
|
j = i - (estim_params_.nvx+estim_params_.nvn);
|
||
|
k1 = estim_params_.corrx(j,1);
|
||
|
k2 = estim_params_.corrx(j,2);
|
||
|
vname = [deblank(M_.exo_name(k1,:)) ',' deblank(M_.exo_name(k2,:))];
|
||
|
nam=['CC_{',vname,'}'];
|
||
|
elseif i<=(estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
|
||
|
estim_params_.ncn)
|
||
|
j = i - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx);
|
||
|
k1 = estim_params_.corrn(j,1);
|
||
|
k2 = estim_params_.corrn(j,2);
|
||
|
vname = [deblank(M_.exo_name(k1,:)) ',' deblank(M_.exo_name(k2,:))];
|
||
|
nam=['CC_{EOBS_',vname,'}'];
|
||
|
else
|
||
|
j = i - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
|
||
|
estim_params_.ncn);
|
||
|
nam = deblank(estim_params_.param_names(j,:));
|
||
|
end
|
||
|
subplot(iraw, icol, i);
|
||
|
if strcmpi(pltopt,'all'); % Estimation of the density...
|
||
|
[abscissa,ff,h] = posterior_density_estimate(x2(round(options_.mh_drop*nruns):end,i),...
|
||
|
number_of_grid_points,bandwidth,kernel_function);
|
||
|
plot(abscissa,ff,'-k','linewidth',2);
|
||
|
end;
|
||
|
a = 0;
|
||
|
b = 0;
|
||
|
if pshape(i) == 1; %/* BETA Prior */
|
||
|
density = inline('((1-x).^(b-1)).*x.^(a-1)./beta(a,b)','x','a','b');
|
||
|
mu = (p1(i)-p3(i))/(p4(i)-p3(i));
|
||
|
stdd = p2(i)/(p4(i)-p3(i));
|
||
|
a = (1-mu)*mu^2/stdd^2 - mu;
|
||
|
b = a*(1/mu - 1);
|
||
|
infbound = qbeta(truncprior,a,b);
|
||
|
supbound = qbeta(1-truncprior,a,b);
|
||
|
stepsize = (supbound-infbound)/200;
|
||
|
abscissa = infbound:stepsize:supbound;
|
||
|
f = density(abscissa,a,b);
|
||
|
abscissa = abscissa*(p4(i)-p3(i))+p3(i);
|
||
|
if strcmp(pltopt,'all');
|
||
|
top = max([max(ff);max(f)]);
|
||
|
end;
|
||
|
elseif pshape(i) == 2; %/* GAMMA PRIOR */
|
||
|
% density =
|
||
|
% inline('((x/b).^(a-1)).*exp(-x/b)*inv(b*gamma(a))','x','a','b');
|
||
|
mu = p1(i)-p3(i);
|
||
|
b = p2(i)^2/mu;
|
||
|
a = mu/b;
|
||
|
infbound = mj_qgamma(truncprior,a)*b;
|
||
|
supbound = mj_qgamma(1-truncprior,a)*b;
|
||
|
stepsize = (supbound-infbound)/200;
|
||
|
abscissa = infbound:stepsize:supbound;
|
||
|
f = exp(lpdfgam(abscissa,a,b));
|
||
|
abscissa = abscissa + p3(i);
|
||
|
if strcmp(pltopt,'all');
|
||
|
top = max([max(ff);max(f)]);
|
||
|
end;
|
||
|
elseif pshape(i) == 3; %/* GAUSSIAN PRIOR */
|
||
|
density = inline('inv(sqrt(2*pi)*b)*exp(-0.5*((x-a)/b).^2)','x','a','b');
|
||
|
a = p1(i);
|
||
|
b = p2(i);
|
||
|
infbound = qnorm(truncprior,a,b);
|
||
|
supbound = qnorm(1-truncprior,a,b);
|
||
|
stepsize = (supbound-infbound)/200;
|
||
|
abscissa = infbound:stepsize:supbound;
|
||
|
f = density(abscissa,a,b);
|
||
|
if strcmp(pltopt,'all');
|
||
|
top = max([max(ff);max(f)]);
|
||
|
end;
|
||
|
elseif pshape(i) == 4; %/* INVGAMMA PRIOR type 1 */
|
||
|
density = inline('2*inv(gamma(nu/2))*(x.^(-nu-1))*((s/2)^(nu/2)).*exp(-s./(2*x.^2))','x','s','nu');
|
||
|
nu = p2(i);
|
||
|
s = p1(i);
|
||
|
a = nu/2;
|
||
|
b = 2/s;
|
||
|
infbound = 1/sqrt(mj_qgamma(1-10*truncprior,a)*b);
|
||
|
supbound = 1/sqrt(mj_qgamma(10*truncprior,a)*b);
|
||
|
stepsize = (supbound-infbound)/200;
|
||
|
abscissa = infbound:stepsize:supbound;
|
||
|
f = density(abscissa,s,nu);
|
||
|
if strcmp(pltopt,'all');
|
||
|
top = max([max(ff);max(f)]);
|
||
|
end;
|
||
|
elseif pshape(i) == 5; %/* UNIFORM PRIOR */
|
||
|
density = inline('(x.^0)/(b-a)','x','a','b');
|
||
|
a = p1(i);
|
||
|
b = p2(i);
|
||
|
infbound = a;
|
||
|
supbound = b;
|
||
|
stepsize = (supbound-infbound)/200;
|
||
|
abscissa = infbound:stepsize:supbound;
|
||
|
f = density(abscissa,a,b);
|
||
|
if strcmp(pltopt,'all');
|
||
|
top = max([max(ff);max(f)]);
|
||
|
end;
|
||
|
elseif pshape(i) == 6; %/* INVGAMMA PRIOR type 2 */
|
||
|
density = inline('inv(gamma(nu/2))*(x.^(-.5(nu+2)))*((s/2)^(nu/2)).*exp(-s./(2*x))','x','s','nu');
|
||
|
nu = p2(i);
|
||
|
s = p1(i);
|
||
|
a = nu/2;
|
||
|
b = 2/s;
|
||
|
infbound = 1/(qgamma(1-truncprior,a)*b);
|
||
|
supbound = 1/(qgamma(truncprior,a)*b);
|
||
|
stepsize = (supbound-infbound)/200;
|
||
|
abscissa = infbound:stepsize:supbound;
|
||
|
f = density(abscissa,s,nu);
|
||
|
if strcmp(pltopt,'all');
|
||
|
top = max([max(ff);max(f)]);
|
||
|
end;
|
||
|
end;
|
||
|
hold on;
|
||
|
k = [1:length(f)];
|
||
|
if pshape(i) ~= 5
|
||
|
[junk,k1] = max(f);
|
||
|
if k1 == 1 | k1 == length(f)
|
||
|
k = find(f < 10);
|
||
|
end
|
||
|
end
|
||
|
hh = plot(abscissa(k),f(k),'-k','linewidth',2);
|
||
|
set(hh,'color',[0.7 0.7 0.7]);
|
||
|
%hold on; %% ?!
|
||
|
if strcmp(pltopt,'all');
|
||
|
plot( [xparam1(i) xparam1(i)], [0,top], '--g', 'linewidth', 2);
|
||
|
end;
|
||
|
title(nam,'Interpreter','none');
|
||
|
hold off;
|
||
|
end;
|
||
|
drawnow
|
||
|
|
||
|
% 12/01/03 MJ adapted from M. Ratto's version
|
||
|
|