#include <graph/DevianceNode.h>
#include <distributions/Distribution.h>
using std::vector;
using std::set;
DevianceNode::DevianceNode(set<StochasticNode*> const ¶meters)
: DeterministicNode(Index(1))
{
for (set<StochasticNode*>::const_iterator p = parameters.begin();
p != parameters.end(); ++p)
{
addParent(*p);
_parameters.push_back(*p);
}
}
void DevianceNode::forwardSample()
{
double deviance = 0;
for (vector<StochasticNode const*>::const_iterator p = _parameters.begin();
p != _parameters.end(); ++p)
{
StochasticNode const *snode = *p;
deviance -= snode->distribution()->logLikelihood(snode->data,
snode->parameters());
}
deviance *= 2;
this->data.setValue(&deviance, 1);
}
syntax highlighted by Code2HTML, v. 0.9.1