Commented options for slice sampler, including default values and associated restrictions/default for main options_ fields
parent
9c62021d3c
commit
35a1c7ac17
|
@ -54,6 +54,13 @@ end
|
||||||
|
|
||||||
% check specific options for slice sampler
|
% check specific options for slice sampler
|
||||||
if strcmp(options_.posterior_sampling_method,'slice')
|
if strcmp(options_.posterior_sampling_method,'slice')
|
||||||
|
% by default, slice sampler should trigger
|
||||||
|
% mode_compute=0 and
|
||||||
|
% mh_replic=100 (much smaller than the default mh_replic=20000 of RWMH)
|
||||||
|
% moreover slice must be associated to:
|
||||||
|
% options_.mh_posterior_mode_estimation = 0;
|
||||||
|
% this is done below, but perhaps preprocessing should do this?
|
||||||
|
|
||||||
posterior_sampler_options.parallel_bar_refresh_rate=1;
|
posterior_sampler_options.parallel_bar_refresh_rate=1;
|
||||||
posterior_sampler_options.serial_bar_refresh_rate=1;
|
posterior_sampler_options.serial_bar_refresh_rate=1;
|
||||||
posterior_sampler_options.parallel_bar_title='SLICE';
|
posterior_sampler_options.parallel_bar_title='SLICE';
|
||||||
|
@ -76,17 +83,62 @@ if strcmp(options_.posterior_sampling_method,'slice')
|
||||||
for i=1:rows(options_list)
|
for i=1:rows(options_list)
|
||||||
switch options_list{i,1}
|
switch options_list{i,1}
|
||||||
case 'rotated'
|
case 'rotated'
|
||||||
|
% triggers rotated slice iterations using a covariance
|
||||||
|
% matrix from initial burn-in iterations
|
||||||
|
% must be associated with:
|
||||||
|
% <use_mh_covariance_matrix> or <slice_initialize_with_mode>
|
||||||
|
% default = 0
|
||||||
posterior_sampler_options.rotated = options_list{i,2};
|
posterior_sampler_options.rotated = options_list{i,2};
|
||||||
|
|
||||||
case 'mode'
|
case 'mode'
|
||||||
posterior_sampler_options.mode = options_list{i,2};
|
% for multimodal posteriors, provide the list of modes as a
|
||||||
|
% matrix, ordered by column, i.e. [x1 x2 x3] for three
|
||||||
|
% modes x1 x2 x3
|
||||||
|
% MR note: not sure this is possible with the
|
||||||
|
% read_key_value_string ???
|
||||||
|
% if this is not possible <mode_files> does to job in any case
|
||||||
|
% This will automatically trigger <rotated>
|
||||||
|
% default = []
|
||||||
|
tmp_mode = options_list{i,2};
|
||||||
|
for j=1:size(tmp_mode,2),
|
||||||
|
posterior_sampler_options.mode(j).m = tmp_mode(:,j);
|
||||||
|
end
|
||||||
|
|
||||||
case 'mode_files'
|
case 'mode_files'
|
||||||
|
% for multimodal posteriors provide a list of mode files,
|
||||||
|
% one per mode. With this info, the code will automatically
|
||||||
|
% set the <mode> option. The mode files need only to
|
||||||
|
% contain the xparam1 variable.
|
||||||
|
% This will automatically trigger <rotated>
|
||||||
|
% default = []
|
||||||
posterior_sampler_options.mode_files = options_list{i,2};
|
posterior_sampler_options.mode_files = options_list{i,2};
|
||||||
|
|
||||||
case 'slice_initialize_with_mode'
|
case 'slice_initialize_with_mode'
|
||||||
|
% the default for slice is to set mode_compute = 0 in the
|
||||||
|
% preprocessor and start the chain(s) from a random location in the prior.
|
||||||
|
% This option first runs the optimizer and then starts the
|
||||||
|
% chain from the mode. Associated with optios <rotated>, it will
|
||||||
|
% use invhess from the mode to perform rotated slice
|
||||||
|
% iterations.
|
||||||
|
% default = 0
|
||||||
posterior_sampler_options.slice_initialize_with_mode = options_list{i,2};
|
posterior_sampler_options.slice_initialize_with_mode = options_list{i,2};
|
||||||
|
|
||||||
case 'initial_step_size'
|
case 'initial_step_size'
|
||||||
|
% sets the initial size of the interval in the STEPPING-OUT PROCEDURE
|
||||||
|
% the initial_step_size must be a real number in [0, 1],
|
||||||
|
% and it sets the size as a proportion of the prior bounds,
|
||||||
|
% i.e. the size will be initial_step_size*(UB-LB)
|
||||||
|
% slice sampler requires prior_truncation > 0!
|
||||||
|
% default = 0.8
|
||||||
posterior_sampler_options.W1 = options_list{i,2}*(bounds.ub-bounds.lb);
|
posterior_sampler_options.W1 = options_list{i,2}*(bounds.ub-bounds.lb);
|
||||||
|
|
||||||
case 'use_mh_covariance_matrix'
|
case 'use_mh_covariance_matrix'
|
||||||
|
% in association with <rotated> indicates to use the
|
||||||
|
% covariance matrix from previous iterations to define the
|
||||||
|
% rotated slice
|
||||||
|
% default = 0
|
||||||
posterior_sampler_options.use_mh_covariance_matrix = options_list{i,2};
|
posterior_sampler_options.use_mh_covariance_matrix = options_list{i,2};
|
||||||
|
|
||||||
otherwise
|
otherwise
|
||||||
warning(['slice_sampler: Unknown option (' options_list{i,1} ')!'])
|
warning(['slice_sampler: Unknown option (' options_list{i,1} ')!'])
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue