A generic MCMC simulation class writing data to a o2scl::table_units object. More...
#include <mcmc_para.h>
Public Member Functions | |
virtual void | write_files () |
Write MCMC tables to files. | |
virtual void | mcmc_cleanup () |
Desc. | |
virtual void | ac_coeffs (size_t ncols, ubmatrix &ac_coeffs) |
Desc. | |
virtual void | ac_lengths (size_t ncols, ubmatrix &ac_coeffs_cols, ubvector &ac_lengths) |
Desc. | |
virtual void | reorder_table () |
Reorder the table by thread and walker index. | |
void | reblock (size_t n_blocks) |
Reaverage the data into blocks of a fixed size in order to avoid autocorrelations. More... | |
Basic usage | |
virtual void | set_names_units (std::vector< std::string > names, std::vector< std::string > units) |
Set the table names and units. | |
virtual int | mcmc (size_t nparams, vec_t &low, vec_t &high, std::vector< func_t > &func, std::vector< fill_t > &fill) |
Perform an MCMC simulation. More... | |
std::shared_ptr< o2scl::table_units<> > | get_table () |
Get the output table. | |
void | set_table (std::shared_ptr< o2scl::table_units<> > &t) |
Set the output table. | |
void | get_chain_sizes (std::vector< size_t > &csizes) |
Determine the chain sizes. | |
virtual int | add_line (const vec_t &pars, double log_weight, size_t walker_ix, bool new_meas, data_t &dat, size_t i_thread, fill_t &fill) |
A measurement function which adds the point to the table. | |
![]() | |
virtual int | mcmc (size_t nparams, vec_t &low, vec_t &high, std::vector< func_t > &func, std::vector< std::function< int(const vec_t &, double, size_t, bool, data_t &)> > &meas) |
Perform an MCMC simulation. More... | |
virtual void | set_proposal (o2scl::prob_cond_mdim< vec_t > &p) |
Set the proposal distribution. | |
virtual void | unset_proposal () |
Go back to random-walk Metropolis with a uniform distribution. | |
Public Attributes | |
bool | allow_estimates |
If true, allow estimates of the weight (default false) | |
![]() | |
size_t | max_iters |
If non-zero, the maximum number of MCMC iterations (default 0) | |
std::string | prefix |
Prefix for output filenames. | |
size_t | n_threads |
Number of OpenMP threads. | |
std::vector< ubvector > | initial_points |
Initial points in parameter space. More... | |
std::vector< size_t > | n_accept |
The number of Metropolis steps which were accepted in each thread (summed over all walkers) | |
std::vector< size_t > | n_reject |
The number of Metropolis steps which were rejected in each thread (summed over all walkers) | |
bool | aff_inv |
If true, use affine-invariant Monte Carlo. | |
double | step_fac |
Stepsize factor (default 10.0) | |
size_t | n_warm_up |
Number of warm up steps (successful steps not iterations) (default 0) More... | |
int | user_seed |
If non-zero, use as the seed for the random number generator (default 0) | |
int | verbose |
Output control (default 0) | |
size_t | max_bad_steps |
Maximum number of failed steps when generating initial points with affine-invariant sampling (default 1000) | |
size_t | n_walk |
Number of walkers for affine-invariant MC or 1 otherwise (default 1) | |
bool | err_nonconv |
If true, call the error handler if msolve() or msolve_de() does not converge (default true) | |
bool | always_accept |
If true, accept all steps. | |
double | ai_initial_step |
Initial step fraction for affine-invariance sampling walkers (default 0.1) | |
Protected Types | |
typedef std::function< int(const vec_t &, double, size_t, bool, data_t &)> | internal_measure_t |
Measurement functor type for the parent. | |
typedef mcmc_para_base< func_t, internal_measure_t, data_t, vec_t > | parent_t |
Type of parent class. | |
Protected Member Functions | |
virtual int | mcmc_init () |
MCMC initialization function. More... | |
virtual int | fill_line (const vec_t &pars, double log_weight, std::vector< double > &line, data_t &dat, size_t i_walker, fill_t &fill) |
Fill line with data for insertion into the table. | |
![]() | |
virtual void | best_point (vec_t &best, double w_best, data_t &dat) |
Function to run for the best point. | |
Protected Attributes | |
std::vector< std::string > | col_names |
Column names. | |
std::vector< std::string > | col_units |
Column units. | |
std::shared_ptr< o2scl::table_units<> > | table |
Main data table for Markov chain. | |
bool | first_write |
std::vector< int > | walker_rows |
Record the last row in the table which corresponds to each walker. | |
interpm_idw< double * > | esti |
Likelihood estimator. | |
![]() | |
double | max_time |
Time in seconds (default is 0) | |
std::ofstream | scr_out |
The screen output file. | |
std::vector< rng_gsl > | rg |
Random number generators. | |
o2scl::prob_cond_mdim< vec_t > * | prop_dist |
Proposal distribution. | |
bool | pd_mode |
If true, then use the user-specified proposal distribution. | |
bool | warm_up |
If true, we are in the warm up phase. | |
std::vector< vec_t > | current |
Current points in parameter space for each walker and each OpenMP thread. More... | |
std::vector< data_t > | data_arr |
Data array. More... | |
std::vector< bool > | switch_arr |
Data switch array for each walker and each OpenMP thread. More... | |
std::vector< std::vector< size_t > > | ret_value_counts |
Return value counters, one vector for each OpenMP thread. | |
std::vector< size_t > | curr_walker |
Index of the current walker. More... | |
int | mpi_rank |
The MPI processor rank. | |
int | mpi_nprocs |
The MPI number of processors. | |
double | mpi_start_time |
The MPI starting time. | |
Additional Inherited Members | |
![]() | |
static const int | mcmc_done |
Integer to indicate completion. | |
static const int | mcmc_skip |
Integer to indicate rejection. | |
This class performs a MCMC simulation and stores the results in a o2scl::table_units object. The user must specify the column names and units in set_names_units() before mcmc() is called.
The function add_line is the measurement function of type measure_t
in the parent. The overloaded function mcmc() in this class works a bit differently in that it takes a function object (type fill_t
) of the form
which should store any auxillary values stored in the data object to line
, in order to be added to the table.
The output table will contain the parameters, the logarithm of the function (called "log_wgt") and a multiplying factor called "mult". This "fill" function is called only when a step is accepted and the multiplier for that row is set to 1. If a future step is rejected, then the multiplier is increased by one, rather than adding the same row to the table again.
This class forms the basis of the MCMC used in the Bayesian analysis of neutron star mass and radius in http://github.com/awsteiner/bamr .
Definition at line 1137 of file mcmc_para.h.
|
inlinevirtual |
Perform an MCMC simulation over nparams
parameters starting at initial point init
, limiting the parameters to be between low
and high
, using func
as the objective function and calling the measurement function meas
at each MC point.
Definition at line 1325 of file mcmc_para.h.
|
inlineprotectedvirtual |
This function sets the column names and units.
Reimplemented from o2scl::mcmc_para_base< func_t, std::function< int(const vec_t &, double, size_t, bool, data_t &)>, data_t, vec_t >.
Definition at line 1165 of file mcmc_para.h.
|
inline |
n_blocks
must be larger than the current table size. This function expects to find a column named "mult" which contains the multiplicity of each column, as is the case after a call to mcmc_para_base::mcmc().This function is useful to remove autocorrelations to the table so long as the autocorrelation length is shorter than the block size. This function does not compute the autocorrelation length to check that this is the case.
Definition at line 1602 of file mcmc_para.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).