MaCh3  2.6.1
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 1932 of file PredictiveThrower.cpp.

1933  {
1934 // ****************
1935  // Compute the mean log-likelihood and the squared mean
1936  mean_llh /= Ntoys;
1937  mean_llh_squared /= Ntoys;
1938  sum_exp_llh /= Ntoys;
1939  sum_exp_llh = std::log(sum_exp_llh);
1940 
1941  // Log pointwise predictive density based on Eq. 4 in Gelman2014
1942  lppd += sum_exp_llh;
1943 
1944  // Compute the effective number of parameters for WAIC
1945  p_WAIC += mean_llh_squared - (mean_llh * mean_llh);
1946 }

◆ AccumulateWAICToy()

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

Definition at line 1917 of file PredictiveThrower.cpp.

1920  {
1921 // ****************
1922  // Negate the negative log-likelihood to get the actual log-likelihood
1923  double LLH_temp = -neg_LLH_temp;
1924 
1925  mean_llh += LLH_temp;
1926  mean_llh_squared += LLH_temp * LLH_temp;
1927  sum_exp_llh += std::exp(LLH_temp);
1928 }

◆ CheckBounds()

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

Definition at line 460 of file PredictiveThrower.cpp.

461  {
462 // *************************
463  for (size_t i = 0; i < BoundValuePointer.size(); ++i) {
464  const double val = *(BoundValuePointer[i]);
465  const double minVal = ParamBounds[i].first;
466  const double maxVal = ParamBounds[i].second;
467 
468  if (val < minVal || val > maxVal)
469  return false; // out of bounds
470  }
471  return true; // all values are within bounds
472 }