0001 function [xparam1,estim_params_,bayestopt_,lb,ub]=set_prior(estim_params_)
0002 global M_ options_
0003
0004 nvx = size(estim_params_.var_exo,1);
0005 nvn = size(estim_params_.var_endo,1);
0006 ncx = size(estim_params_.corrx,1);
0007 ncn = size(estim_params_.corrn,1);
0008 np = size(estim_params_.param_vals,1);
0009
0010 estim_params_.nvx = nvx;
0011 estim_params_.nvn = nvn;
0012 estim_params_.ncx = ncx;
0013 estim_params_.ncn = ncn;
0014 estim_params_.np = np;
0015
0016 xparam1 = [];
0017 ub = [];
0018 lb = [];
0019 bayestopt_.pshape = [];
0020 bayestopt_.pmean = [];
0021 bayestopt_.pstdev = [];
0022 bayestopt_.p1 = [];
0023 bayestopt_.p2 = [];
0024 bayestopt_.p3 = [];
0025 bayestopt_.p4 = [];
0026 bayestopt_.jscale = [];
0027 bayestopt_.name = [];
0028 if nvx
0029 xparam1 = estim_params_.var_exo(:,2);
0030 ub = estim_params_.var_exo(:,4);
0031 lb = estim_params_.var_exo(:,3);
0032 bayestopt_.pshape = estim_params_.var_exo(:,5);
0033 bayestopt_.pmean = estim_params_.var_exo(:,6);
0034 bayestopt_.pstdev = estim_params_.var_exo(:,7);
0035 bayestopt_.p3 = estim_params_.var_exo(:,8);
0036 bayestopt_.p4 = estim_params_.var_exo(:,9);
0037 bayestopt_.jscale = estim_params_.var_exo(:,10);
0038 bayestopt_.name = cellstr(M_.exo_names(estim_params_.var_exo(:,1),:));
0039 end
0040 if nvn
0041 for i=1:nvn
0042 estim_params_.var_endo(i,1) = strmatch(deblank(M_.endo_names(estim_params_.var_endo(i,1),:)),deblank(options_.varobs),'exact');
0043 end
0044 xparam1 = [xparam1; estim_params_.var_endo(:,2)];
0045 ub = [ub; estim_params_.var_endo(:,4)];
0046 lb = [lb; estim_params_.var_endo(:,3)];
0047 bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.var_endo(:,5)];
0048 bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.var_endo(:,6)];
0049 bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.var_endo(:,7)];
0050 bayestopt_.p3 = [ bayestopt_.p3; estim_params_.var_endo(:,8)];
0051 bayestopt_.p4 = [ bayestopt_.p4; estim_params_.var_endo(:,9)];
0052 bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.var_endo(:,10)];
0053 bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),...
0054 M_.endo_names(estim_params_.var_endo(:,1),:)));
0055 end
0056 if ncx
0057 xparam1 = [xparam1; estim_params_.corrx(:,3)];
0058 ub = [ub; max(min(estim_params_.corrx(:,5),1),-1)];
0059 lb = [lb; max(min(estim_params_.corrx(:,4),1),-1)];
0060 bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.corrx(:,6)];
0061 bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.corrx(:,7)];
0062 bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.corrx(:,8)];
0063 bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrx(:,9)];
0064 bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrx(:,10)];
0065 bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrx(:,11)];
0066 bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),...
0067 char(strcat(cellstr(M_.exo_names(estim_params_.corrx(:,1),:)),...
0068 ',',...
0069 cellstr(M_.exo_names(estim_params_.corrx(:,2),:))))));
0070 end
0071 if ncn
0072 xparam1 = [xparam1; estim_params_.corrn(:,3)];
0073 ub = [ub; max(min(estim_params_.corrn(:,5),1),-1)];
0074 lb = [lb; max(min(estim_params_.corrn(:,4),1),-1)];
0075 bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.corrn(:,6)];
0076 bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.corrn(:,7)];
0077 bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.corrn(:,8)];
0078 bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrn(:,9)];
0079 bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrn(:,10)];
0080 bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrn(:,11)];
0081 bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),...
0082 char(strcat(cellstr(M_.endo_names(estim_params_.corrn(:,1),:)),...
0083 ',',...
0084 cellstr(M_.endo_names(estim_params_.corrn(:,2),:))))));
0085 end
0086 if np
0087 xparam1 = [xparam1; estim_params_.param_vals(:,2)];
0088 ub = [ub; estim_params_.param_vals(:,4)];
0089 lb = [lb; estim_params_.param_vals(:,3)];
0090 bayestopt_.pshape = [ bayestopt_.pshape; estim_params_.param_vals(:,5)];
0091 bayestopt_.pmean = [ bayestopt_.pmean; estim_params_.param_vals(:,6)];
0092 bayestopt_.pstdev = [ bayestopt_.pstdev; estim_params_.param_vals(:,7)];
0093 bayestopt_.p3 = [ bayestopt_.p3; estim_params_.param_vals(:,8)];
0094 bayestopt_.p4 = [ bayestopt_.p4; estim_params_.param_vals(:,9)];
0095 bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.param_vals(:, ...
0096 10)];
0097 bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),M_.param_names(estim_params_.param_vals(:,1),:)));
0098 end
0099
0100 bayestopt_.ub = ub;
0101 bayestopt_.lb = lb;
0102
0103 bayestopt_.p1 = bayestopt_.pmean;
0104 bayestopt_.p2 = bayestopt_.pstdev;
0105
0106
0107 k = find(bayestopt_.pshape == 1);
0108 k1 = find(isnan(bayestopt_.p3(k)));
0109 bayestopt_.p3(k(k1)) = zeros(length(k1),1);
0110 k1 = find(isnan(bayestopt_.p4(k)));
0111 bayestopt_.p4(k(k1)) = ones(length(k1),1);
0112
0113
0114 k = find(bayestopt_.pshape == 2);
0115 k1 = find(isnan(bayestopt_.p3(k)));
0116 bayestopt_.p3(k(k1)) = zeros(length(k1),1);
0117
0118
0119 k = find(bayestopt_.pshape == 3);
0120 k1 = find(isnan(bayestopt_.p3(k)));
0121 bayestopt_.p3(k(k1)) = -Inf*ones(length(k1),1);
0122 k1 = find(isnan(bayestopt_.p4(k)));
0123 bayestopt_.p4(k(k1)) = Inf*ones(length(k1),1);
0124
0125 k = find(bayestopt_.pshape == 4);
0126 for i=1:length(k)
0127 [bayestopt_.p1(k(i)),bayestopt_.p2(k(i))] = ...
0128 inverse_gamma_specification(bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),1);
0129 end
0130
0131 k = find(bayestopt_.pshape == 5);
0132 for i=1:length(k)
0133 [bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),bayestopt_.p1(k(i)),bayestopt_.p2(k(i))] = ...
0134 uniform_specification(bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),bayestopt_.p3(k(i)),bayestopt_.p4(k(i)));
0135 end
0136
0137 k = find(bayestopt_.pshape == 6);
0138 for i=1:length(k)
0139 [bayestopt_.p1(k(i)),bayestopt_.p2(k(i))] = ...
0140 inverse_gamma_specification(bayestopt_.pmean(k(i)),bayestopt_.pstdev(k(i)),2);
0141 end
0142
0143 k = find(isnan(xparam1));
0144 xparam1(k) = bayestopt_.pmean(k);