Add LaTeX output to Geweke convergence diagnostics
Also allows for custom header part in dyn_latex_table.mtime-shift
parent
837916f45b
commit
482f2bdd2c
|
@ -90,22 +90,26 @@ if nblck == 1 % Brooks and Gelman tests need more than one block
|
|||
last_obs_begin_sample = first_obs_begin_sample+round(options_.convergence.geweke.geweke_interval(1)*NumberOfDraws*(1-options_.mh_drop));
|
||||
first_obs_end_sample = first_obs_begin_sample+round(options_.convergence.geweke.geweke_interval(2)*NumberOfDraws*(1-options_.mh_drop));
|
||||
param_name=[];
|
||||
for jj=1:npar
|
||||
param_name = strvcat(param_name,get_the_name(jj,options_.TeX,M_,estim_params_,options_));
|
||||
if options_.TeX
|
||||
param_name_tex=[];
|
||||
end
|
||||
for jj=1:npar
|
||||
if options_.TeX
|
||||
[param_name_temp, param_name_tex_temp]= get_the_name(jj,options_.TeX,M_,estim_params_,options_);
|
||||
param_name_tex = strvcat(param_name_tex,strrep(param_name_tex_temp,'$',''));
|
||||
param_name = strvcat(param_name,param_name_temp);
|
||||
else
|
||||
param_name_temp = get_the_name(jj,options_.TeX,M_,estim_params_,options_);
|
||||
param_name = strvcat(param_name,param_name_temp);
|
||||
end
|
||||
end
|
||||
fprintf('\nGeweke (1992) Convergence Tests, based on means of draws %d to %d vs %d to %d.\n',first_obs_begin_sample,last_obs_begin_sample,first_obs_end_sample,NumberOfDraws);
|
||||
fprintf('p-values are for Chi2-test for equality of means.\n');
|
||||
Geweke_header={'Parameter', 'Post. Mean', 'Post. Std', 'p-val No Taper'};
|
||||
print_string=['%',num2str(size(param_name,2)+3),'s \t %12.3f \t %12.3f \t %12.3f'];
|
||||
print_string_header=['%',num2str(size(param_name,2)+3),'s \t %12s \t %12s \t %12s'];
|
||||
Geweke_header=char('Parameter', 'Post. Mean', 'Post. Std', 'p-val No Taper');
|
||||
for ii=1:length(options_.convergence.geweke.taper_steps)
|
||||
Geweke_header=[Geweke_header, ['p-val ' num2str(options_.convergence.geweke.taper_steps(ii)),'% Taper']];
|
||||
print_string=[print_string,'\t %12.3f'];
|
||||
print_string_header=[print_string_header,'\t %12s'];
|
||||
Geweke_header=char(Geweke_header,['p-val ' num2str(options_.convergence.geweke.taper_steps(ii)),'% Taper']);
|
||||
end
|
||||
print_string=[print_string,'\n'];
|
||||
print_string_header=[print_string_header,'\n'];
|
||||
fprintf(print_string_header,Geweke_header{1,:});
|
||||
datamat=NaN(npar,3+length(options_.convergence.geweke.taper_steps));
|
||||
for jj=1:npar
|
||||
startline=0;
|
||||
for n = 1:NumberOfMcFilesPerBlock
|
||||
|
@ -124,7 +128,21 @@ if nblck == 1 % Brooks and Gelman tests need more than one block
|
|||
|
||||
results_struct = geweke_chi2_test(results_vec1,results_vec2,results_struct,options_);
|
||||
eval(['oo_.convergence.geweke.',param_name(jj,:),'=results_struct;'])
|
||||
fprintf(print_string,param_name(jj,:),results_struct.posteriormean,results_struct.posteriorstd,results_struct.prob_chi2_test)
|
||||
datamat(jj,:)=[results_struct.posteriormean,results_struct.posteriorstd,results_struct.prob_chi2_test];
|
||||
end
|
||||
lh = size(param_name,2)+2;
|
||||
dyntable('',Geweke_header,param_name,datamat,lh,12,3);
|
||||
if options_.TeX
|
||||
Geweke_tex_header=char('Parameter', 'Mean', 'Std', 'No\ Taper');
|
||||
additional_header={[' & \multicolumn{2}{c}{Posterior} & \multicolumn{',num2str(1+length(options_.convergence.geweke.taper_steps)),'}{c}{p-values} \\'],
|
||||
['\cmidrule(r{.75em}){2-3} \cmidrule(r{.75em}){4-',num2str(4+length(options_.convergence.geweke.taper_steps)),'}']};
|
||||
for ii=1:length(options_.convergence.geweke.taper_steps)
|
||||
Geweke_tex_header=char(Geweke_tex_header,[num2str(options_.convergence.geweke.taper_steps(ii)),'\%%\ Taper']);
|
||||
end
|
||||
headers = char(Geweke_tex_header);
|
||||
lh = size(param_name_tex,2)+2;
|
||||
my_title=sprintf('Geweke (1992) Convergence Tests, based on means of draws %d to %d vs %d to %d. p-values are for $\\\\chi^2$-test for equality of means.',first_obs_begin_sample,last_obs_begin_sample,first_obs_end_sample,NumberOfDraws);
|
||||
dyn_latex_table(M_,my_title,'geweke',headers,param_name_tex,datamat,lh,12,4,additional_header);
|
||||
end
|
||||
skipline(2);
|
||||
return;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
function dyn_latex_table(M_,title,LaTeXtitle,headers,labels,values,label_width,val_width,val_precis)
|
||||
function dyn_latex_table(M_,title,LaTeXtitle,headers,labels,values,label_width,val_width,val_precis,optional_header)
|
||||
|
||||
OutputDirectoryName = CheckPath('Output',M_.dname);
|
||||
|
||||
%% get width of label column
|
||||
if ~isempty(label_width)
|
||||
if ~isempty(label_width)
|
||||
label_width = max(size(deblank(char(headers(1,:),labels)),2)+2, ...
|
||||
label_width);
|
||||
label_width);
|
||||
else %use default length
|
||||
label_width = max(size(deblank(char(headers(1,:),labels)),2))+2;
|
||||
end
|
||||
|
@ -21,7 +21,7 @@ if any(values) < 0 %add one character for minus sign
|
|||
values_length = values_length+1;
|
||||
end
|
||||
|
||||
%% get width of header strings
|
||||
%% get width of header strings
|
||||
headers_length = max(size(deblank(headers(2:end,:)),2));
|
||||
if ~isempty(val_width)
|
||||
val_width = max(max(headers_length,values_length)+4,val_width);
|
||||
|
@ -34,7 +34,7 @@ header_string_format = sprintf('$%%%ds$',val_width);
|
|||
%Create and print header string
|
||||
if length(headers) > 0
|
||||
header_string = sprintf(label_format_leftbound ,deblank(headers(1,:)));
|
||||
header_code_string='l|';
|
||||
header_code_string='l';
|
||||
for i=2:size(headers,1)
|
||||
header_string = [header_string '\t & \t ' sprintf(header_string_format,strrep(deblank(headers(i,:)),'\','\\'))];
|
||||
header_code_string= [header_code_string 'c'];
|
||||
|
@ -49,25 +49,35 @@ fprintf(fidTeX,' \n');
|
|||
fprintf(fidTeX,' \n');
|
||||
fprintf(fidTeX,'\\begin{center}\n');
|
||||
fprintf(fidTeX,['\\begin{longtable}{%s} \n'],header_code_string);
|
||||
|
||||
fprintf(fidTeX,['\\caption{',title,'}\\\\\n ']);
|
||||
|
||||
fprintf(fidTeX,['\\label{Table:',LaTeXtitle,'}\\\\\n']);
|
||||
fprintf(fidTeX,'\\hline\\hline \\\\ \n');
|
||||
fprintf(fidTeX,'\\toprule \n');
|
||||
if nargin==10
|
||||
for ii=1:size(optional_header,1)
|
||||
fprintf(fidTeX,'%s\n',optional_header{ii});
|
||||
end
|
||||
end
|
||||
fprintf(fidTeX,header_string);
|
||||
fprintf(fidTeX,'\\hline \\endfirsthead \n');
|
||||
fprintf(fidTeX,'\\midrule \\endfirsthead \n');
|
||||
fprintf(fidTeX,'\\caption{(continued)}\\\\\n ');
|
||||
fprintf(fidTeX,'\\hline\\hline \\\\ \n');
|
||||
fprintf(fidTeX,'\\toprule \\\\ \n');
|
||||
if nargin==10
|
||||
for ii=1:size(optional_header,1)
|
||||
fprintf(fidTeX,'%s\n',optional_header{ii});
|
||||
end
|
||||
end
|
||||
fprintf(fidTeX,header_string);
|
||||
fprintf(fidTeX,'\\hline \\endhead \n');
|
||||
fprintf(fidTeX,['\\hline \\multicolumn{',num2str(size(headers,1)),'}{r}{(Continued on next page)} \\\\ \\hline \\endfoot \n']);
|
||||
fprintf(fidTeX,'\\hline \\hline \\endlastfoot \n');
|
||||
fprintf(fidTeX,'\\midrule \\endhead \n');
|
||||
fprintf(fidTeX,['\\bottomrule \\multicolumn{',num2str(size(headers,1)),'}{r}{(Continued on next page)} \\\\ \\hline \\endfoot \n']);
|
||||
fprintf(fidTeX,'\\bottomrule \\endlastfoot \n');
|
||||
for i=1:size(values,1)
|
||||
fprintf(fidTeX,label_format_leftbound,deblank(labels(i,:)));
|
||||
fprintf(fidTeX,['\t & \t' value_format],values(i,:));
|
||||
fprintf(fidTeX,' \\\\ \n');
|
||||
end
|
||||
|
||||
fprintf(fidTeX,'\\end{longtable}\n ');
|
||||
fprintf(fidTeX,'\\end{longtable}\n ');
|
||||
fprintf(fidTeX,'\\end{center}\n');
|
||||
fprintf(fidTeX,'%% End of TeX file.\n');
|
||||
fclose(fidTeX);
|
Loading…
Reference in New Issue