GClasses
GClasses::GBNMetropolisNode Class Referenceabstract

Detailed Description

This is the base class for nodes in a belief network that are sampled using the Metropolis algorithm.

#include <GBayesianNetwork.h>

Inheritance diagram for GClasses::GBNMetropolisNode:
GClasses::GBNVariable GClasses::GBNNode GClasses::GBNBeta GClasses::GBNExponential GClasses::GBNGamma GClasses::GBNInverseGamma GClasses::GBNLogNormal GClasses::GBNNormal GClasses::GBNPareto GClasses::GBNPoisson GClasses::GBNUniformContinuous GClasses::GBNUniformDiscrete

Public Member Functions

 GBNMetropolisNode ()
 General-purpose constructor. More...
 
virtual ~GBNMetropolisNode ()
 
virtual double currentValue ()
 Returns the most recent value sampled from this node. More...
 
virtual double initMean ()=0
 This should return a value suitable to initialize the mean of the sampling distribution. It need only return any value with non-negligible probability. More...
 
virtual bool isDiscrete ()=0
 This should return true iff this node supports only discrete values. More...
 
void sample (GRand *pRand)
 Draws a new Gibbs sample for this node given the current values of all other nodes it its Markov blanket. Uses the Metropolis algorithm to do so. More...
 
- Public Member Functions inherited from GClasses::GBNVariable
 GBNVariable ()
 
virtual ~GBNVariable ()
 
virtual void addCatParent (GBNCategorical *pNode, GBNNode *pDefaultVal)=0
 Adds a categorical node as a parent of this node. Calling this method will cause This node to resize its table of distribution parameters, so a default value is required to fill in new elements. Typically, you will set these new elements to something more meaningful after you call this method. More...
 
size_t catCount ()
 Returns the total number of combinations of categorical values supported by the categorical parents of this node. This node is expected to specify a distribution for each of these categorical combinations. More...
 
const std::vector< GBNVariable * > & children ()
 Returns all nodes that are known to depend on this one. More...
 
size_t currentCatIndex ()
 Queries the categorical parent nodes to determine their current values, and combines them to produce a single index value that is unique for this combination of categorical values. The value this returns will be from 0 to catCount()-1. The values are organized in little-endian manner. That is, it cycles through all values supported by the first categorical parent before moving on to the next value of the next parent. More...
 
virtual double likelihood (double x)=0
 Compute the likelihood of drawing the value "x" from the distribution represented in this node given the current values in all of the parent nodes. If "x" is not a supported value, then this should return 0.0;. More...
 
virtual void onNewChild (GBNVariable *pChild)
 This method links back to the child node that just added this node as a parent. More...
 
void setObserved (double value)
 Set this node to an observed value. After calling this, subsequent calls to sample will not change its value. More...
 
void setUnobserved ()
 Set this node to an unobserved value. After calling this, subsequent calls to sample will draw new values for this node. More...
 
- Public Member Functions inherited from GClasses::GBNNode
 GBNNode ()
 
virtual ~GBNNode ()
 

Protected Member Functions

double markovBlanket (double x)
 Computes the log-probability of x (as a value for this node) given the current values for the entire rest of the network (aka the complete conditional), which is equal to the log-probability of x given the Markov-Blanket of this node, which we can compute efficiently. More...
 
void metropolis (GRand *pRand)
 Sample the network in a manner that can be proven to converge to a true joint distribution for the network. More...
 

Protected Attributes

double m_currentMean
 
double m_sumOfSquaredValues
 
double m_sumOfValues
 
- Protected Attributes inherited from GClasses::GBNVariable
std::vector< GBNCategorical * > m_catParents
 
std::vector< GBNVariable * > m_children
 
- Protected Attributes inherited from GClasses::GBNNode
bool m_observed
 
double m_observedValue
 

Constructor & Destructor Documentation

GClasses::GBNMetropolisNode::GBNMetropolisNode ( )

General-purpose constructor.

virtual GClasses::GBNMetropolisNode::~GBNMetropolisNode ( )
inlinevirtual

Member Function Documentation

virtual double GClasses::GBNMetropolisNode::currentValue ( )
virtual

Returns the most recent value sampled from this node.

Implements GClasses::GBNVariable.

virtual double GClasses::GBNMetropolisNode::initMean ( )
pure virtual

This should return a value suitable to initialize the mean of the sampling distribution. It need only return any value with non-negligible probability.

Implemented in GClasses::GBNInverseGamma, GClasses::GBNGamma, GClasses::GBNBeta, GClasses::GBNExponential, GClasses::GBNPoisson, GClasses::GBNUniformContinuous, GClasses::GBNUniformDiscrete, GClasses::GBNPareto, GClasses::GBNLogNormal, and GClasses::GBNNormal.

virtual bool GClasses::GBNMetropolisNode::isDiscrete ( )
pure virtual
double GClasses::GBNMetropolisNode::markovBlanket ( double  x)
protected

Computes the log-probability of x (as a value for this node) given the current values for the entire rest of the network (aka the complete conditional), which is equal to the log-probability of x given the Markov-Blanket of this node, which we can compute efficiently.

void GClasses::GBNMetropolisNode::metropolis ( GRand pRand)
protected

Sample the network in a manner that can be proven to converge to a true joint distribution for the network.

void GClasses::GBNMetropolisNode::sample ( GRand pRand)
virtual

Draws a new Gibbs sample for this node given the current values of all other nodes it its Markov blanket. Uses the Metropolis algorithm to do so.

Implements GClasses::GBNVariable.

Member Data Documentation

double GClasses::GBNMetropolisNode::m_currentMean
protected
double GClasses::GBNMetropolisNode::m_sumOfSquaredValues
protected
double GClasses::GBNMetropolisNode::m_sumOfValues
protected