MCMC.h File Reference

Definitions of classes for MCMC evaluation of Bayesian models. More...

#include <boost/any.hpp>
#include <boost/format.hpp>
#include <boost/progress.hpp>
#include "mcmc++/DataTable.h"
#include "mcmc++/lot.h"
#include "mcmc++/util.h"
#include "mcmc++/statistics.h"

Include dependency graph for MCMC.h:

Go to the source code of this file.

Namespaces

namespace  MCMC

Classes

class  ParameterBase
 Pure virtual class provide interface for Parameter. More...
class  ParameterT< T >
 Base class for model parameters. More...
class  StepBase
 Base class for steps associated with different parameter types. More...
class  Step< T >
 Base class for all steps associated with one parameter type. More...
class  MetroStepT< T >
 Implements Metropolis-Hastings step for a parameter. More...
class  AdaptMetroStepT< T >
 Implements Metropolis-Hastings step for a parameter. More...
class  SliceStep
 Implements a slice sampler. More...
class  FunctionStepT< T >
 Implements a deterministic node. More...
class  Model
 Implements the statistical model. More...

Defines

#define __MCMC_H

Typedefs

typedef std::vector< StepBase * > ModelSteps
 pointer to each Step in the Model
typedef std::vector< boost::any > SampleVector
 parameters at one iteration
typedef SampleVector::const_iterator SampleIter
 paramter iterator
typedef std::vector< SampleVectorResults
 SampleVectors for all iterations.
typedef Results::const_iterator ResultsIter
 iterator over iterations
typedef ParameterT< double > Parameter
typedef FunctionStepT< double > FunctionStep
typedef MetroStepT< double > MetroStep

Functions

lotGetRNG ()
double safeFreq (double p, double zero=MCMC_ZERO_FREQ)
double invSafeFreq (double x, double zero=MCMC_ZERO_FREQ)
std::vector< double > safeFreq (const std::vector< double > &p, const double zero)
std::vector< double > invSafeFreq (const std::vector< double > &x, const double zero=MCMC_ZERO_FREQ)
double proposeBeta (double mean, double denom, double tolerance)
double logQBeta (double newMean, double oldMean, double denom, double tolerance)
std::vector< double > proposeDirch (const std::vector< double > &mean, double denom, double tolerance)
double logQDirch (const std::vector< double > &newMean, const std::vector< double > &oldMean, double denom, double tolerance)
double proposeNorm (double mean, double variance)
double logQNorm (double newMean, double oldMean, double variance)
double safeBetaPar (double x)
void safeDirchPar (std::vector< double > &x)

Variables

const double MCMC_ZERO_FREQ
const double MCMC::MinBetaPar = 1.0e-1
 minimum value allowed for beta parameter
const double MCMC::MaxBetaPar = 1.0e4
 maximum value allowed for beta parameter
const double MCMC::MinDirchPar = 1.0e-1
 minimum value allowed for Dirichlet parameter
const double MCMC::MaxDirchPar = 1.0e4
 maximum value allowed for Dirichlet parameter


Detailed Description

Definitions of classes for MCMC evaluation of Bayesian models.

The ParameterT, StepT, and Model classes defined here are the core classes that do all of the work. To implement a Bayesian model using these classes each parameter in the model should be derived from Paramater and should override llike(), at a minimum. lprior() should be overridden for anything other than a flat prior. (Notice that the prior will be improper unless overriden when the parameter has an unbounded domain.) The model is derived from Model, and each parameter is pushed onto a stack (step_), with a specified Step type (MetroStep, SliceStep, or FunctionStep).

Author:
Kent Holsinger
Date:
2004-07-03

Definition in file MCMC.h.


Typedef Documentation

typedef FunctionStepT<double> FunctionStep

typedef for convenienc access to double paramters

Definition at line 671 of file MCMC.h.

typedef MetroStepT<double> MetroStep

typedef for convenienc access to double paramters

Definition at line 674 of file MCMC.h.

typedef ParameterT<double> Parameter

typedef for convenienc access to double paramters

Definition at line 668 of file MCMC.h.


Function Documentation

lot& GetRNG ( void   ) 

Returns a reference to the internal random number generator

Definition at line 104 of file MCMC.cpp.

std::vector<double> invSafeFreq ( const std::vector< double > &  x,
const double  zero 
)

Inverts a safeFreq()ed vector

Parameters:
x The vector to invert
zero The original guard (not checked)

Definition at line 153 of file MCMC.cpp.

double invSafeFreq ( const double  x,
const double  zero 
)

Converts a safeFreq()ed x back

Parameters:
x Frequency to convert back
zero Value used in original guard (not verified)

Definition at line 124 of file MCMC.cpp.

Referenced by logQBeta(), and logQDirch().

double logQBeta ( const double  newMean,
const double  oldMean,
const double  denom,
const double  tolerance 
)

lQ for a beta proposal

Parameters:
newMean New value proposed
oldMean Old value from which proposed
denom Effective sample size
tolerance Minimum value allowed in original proposal

Definition at line 196 of file MCMC.cpp.

References Density::dbeta(), invSafeFreq(), safeBetaPar(), and Util::safeLog().

double logQDirch ( const std::vector< double > &  newMean,
const std::vector< double > &  oldMean,
const double  denom,
const double  tolerance 
)

lQ for a Dirichlet proposal

Parameters:
newMean New value proposed
oldMean Old value from which proposed
denom Effective sample size
tolerance Minimum value allowed in original proposal

Definition at line 242 of file MCMC.cpp.

References Density::ddirch(), invSafeFreq(), and Util::safeLog().

double logQNorm ( const double  newMean,
const double  oldMean,
const double  variance 
)

lQ for a normal proposal

Parameters:
newMean New value proposed
oldMean Old value from which proposed
variance Variance of the proposal distribution

Definition at line 271 of file MCMC.cpp.

References Density::dnorm(), and Util::safeLog().

double proposeBeta ( const double  mean,
const double  denom,
const double  tolerance 
)

Propose a new beta variate for an M-H step

Parameters:
mean Mean for beta distribution
denom Effective sample size
tolerance Minimum value allowed (to avoid exact 0s and 1s)
The parameters of the beta distribution are given by

\[\alpha = denom \times mean\]

\[\beta = denom \times (1-mean)\]

where alpha and beta are guarded by safeBetaPar()

Definition at line 178 of file MCMC.cpp.

References lot::beta(), safeBetaPar(), and safeFreq().

std::vector<double> proposeDirch ( const std::vector< double > &  q,
const double  denom,
const double  tolerance 
)

Propose a new Dirichlet vector for an M-H step

Parameters:
q Mean of the proposal distribution
denom Effective sample size
tolerance Minimum value allowed (to avoid exact 0s and 1s)
The parameters of the beta distribution are given by

\[\alpha = denom \times mean\]

\[\beta = denom \times (1-mean)\]

where alpha and beta are guarded by safeBetaPar()

Definition at line 220 of file MCMC.cpp.

References lot::dirichlet(), safeDirchPar(), and safeFreq().

double proposeNorm ( const double  mean,
const double  variance 
)

Propose a new normal variate for an M-H step

Parameters:
mean Mean of the proposal distribution
variance Variance of the proposal distribution

Definition at line 261 of file MCMC.cpp.

References lot::norm().

double safeBetaPar ( const double  x  ) 

Ensures MinBetaPar <= x <= MaxBetaPar

Parameters:
x Frequency to guard

Definition at line 282 of file MCMC.cpp.

References MCMC::MaxBetaPar, and MCMC::MinBetaPar.

Referenced by logQBeta(), and proposeBeta().

void safeDirchPar ( std::vector< double > &  x  ) 

Ensures MinBetaPar <= x <= MaxBetaPar for all elements of a Dirichlet parameter vector

Parameters:
x Frequency to guard

Definition at line 293 of file MCMC.cpp.

References MCMC::MaxDirchPar, and MCMC::MinDirchPar.

Referenced by proposeDirch().

std::vector<double> safeFreq ( const std::vector< double > &  p,
const double  zero 
)

Ensures that all values in vector are greater than zero and less than 1.0 - n*zero, where n is p.size()

Parameters:
p Frequency vector to guard
zero Value used for guard (MCMC_ZERO_FREQ default)
Assumes all elements of p are in [0, 1]

Definition at line 138 of file MCMC.cpp.

double safeFreq ( const double  p,
const double  zero 
)

Ensures zero < p < 1-zero

Parameters:
p Frequency to guard
zero Minimum value of p allowed
Assumes all elements of p are in [0, 1]

Definition at line 115 of file MCMC.cpp.

Referenced by proposeBeta(), and proposeDirch().


Variable Documentation

const double MCMC_ZERO_FREQ

default "zero" value for safeFreq()

Definition at line 100 of file MCMC.cpp.


Generated on Tue Mar 27 16:03:45 2007 for mcmc by  doxygen 1.5.1