MaCh3  2.5.0
Reference Guide
Functions
PredictiveThrower.cpp File Reference
#include "PredictiveThrower.h"
#include "Parameters/ParameterHandlerGeneric.h"
#include "TH3.h"
Include dependency graph for PredictiveThrower.cpp:

Go to the source code of this file.

Functions

bool CheckBounds (const std::vector< const M3::float_t * > &BoundValuePointer, const std::vector< std::pair< double, double >> &ParamBounds)
 
void AccumulateWAICToy (const double neg_LLH_temp, double &mean_llh, double &mean_llh_squared, double &sum_exp_llh)
 
void AccumulateWAICBin (double &mean_llh, double &mean_llh_squared, double &sum_exp_llh, const unsigned int Ntoys, double &lppd, double &p_WAIC)
 

Function Documentation

◆ AccumulateWAICBin()

void AccumulateWAICBin ( double &  mean_llh,
double &  mean_llh_squared,
double &  sum_exp_llh,
const unsigned int  Ntoys,
double &  lppd,
double &  p_WAIC 
)

Definition at line 1673 of file PredictiveThrower.cpp.

1674  {
1675 // ****************
1676  // Compute the mean log-likelihood and the squared mean
1677  mean_llh /= Ntoys;
1678  mean_llh_squared /= Ntoys;
1679  sum_exp_llh /= Ntoys;
1680  sum_exp_llh = std::log(sum_exp_llh);
1681 
1682  // Log pointwise predictive density based on Eq. 4 in Gelman2014
1683  lppd += sum_exp_llh;
1684 
1685  // Compute the effective number of parameters for WAIC
1686  p_WAIC += mean_llh_squared - (mean_llh * mean_llh);
1687 }
int Ntoys

◆ AccumulateWAICToy()

void AccumulateWAICToy ( const double  neg_LLH_temp,
double &  mean_llh,
double &  mean_llh_squared,
double &  sum_exp_llh 
)

Definition at line 1658 of file PredictiveThrower.cpp.

1661  {
1662 // ****************
1663  // Negate the negative log-likelihood to get the actual log-likelihood
1664  double LLH_temp = -neg_LLH_temp;
1665 
1666  mean_llh += LLH_temp;
1667  mean_llh_squared += LLH_temp * LLH_temp;
1668  sum_exp_llh += std::exp(LLH_temp);
1669 }

◆ CheckBounds()

bool CheckBounds ( const std::vector< const M3::float_t * > &  BoundValuePointer,
const std::vector< std::pair< double, double >> &  ParamBounds 
)

Definition at line 423 of file PredictiveThrower.cpp.

424  {
425 // *************************
426  for (size_t i = 0; i < BoundValuePointer.size(); ++i) {
427  const double val = *(BoundValuePointer[i]);
428  const double minVal = ParamBounds[i].first;
429  const double maxVal = ParamBounds[i].second;
430 
431  if (val < minVal || val > maxVal)
432  return false; // out of bounds
433  }
434  return true; // all values are within bounds
435 }