GClasses
|
This is the base class for nodes in a belief network that are sampled using the Metropolis algorithm.
#include <GBayesianNetwork.h>
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 |
GClasses::GBNMetropolisNode::GBNMetropolisNode | ( | ) |
General-purpose constructor.
|
inlinevirtual |
|
virtual |
Returns the most recent value sampled from this node.
Implements GClasses::GBNVariable.
|
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.
|
pure virtual |
This should return true iff this node supports only discrete values.
Implemented in GClasses::GBNInverseGamma, GClasses::GBNGamma, GClasses::GBNBeta, GClasses::GBNExponential, GClasses::GBNPoisson, GClasses::GBNUniformContinuous, GClasses::GBNUniformDiscrete, GClasses::GBNPareto, GClasses::GBNLogNormal, and GClasses::GBNNormal.
|
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.
|
protected |
Sample the network in a manner that can be proven to converge to a true joint distribution for the network.
|
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.
|
protected |
|
protected |
|
protected |