MaCh3  2.6.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 1906 of file PredictiveThrower.cpp.

1907  {
1908 // ****************
1909  // Compute the mean log-likelihood and the squared mean
1910  mean_llh /= Ntoys;
1911  mean_llh_squared /= Ntoys;
1912  sum_exp_llh /= Ntoys;
1913  sum_exp_llh = std::log(sum_exp_llh);
1914 
1915  // Log pointwise predictive density based on Eq. 4 in Gelman2014
1916  lppd += sum_exp_llh;
1917 
1918  // Compute the effective number of parameters for WAIC
1919  p_WAIC += mean_llh_squared - (mean_llh * mean_llh);
1920 }
int Ntoys

◆ AccumulateWAICToy()

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

Definition at line 1891 of file PredictiveThrower.cpp.

1894  {
1895 // ****************
1896  // Negate the negative log-likelihood to get the actual log-likelihood
1897  double LLH_temp = -neg_LLH_temp;
1898 
1899  mean_llh += LLH_temp;
1900  mean_llh_squared += LLH_temp * LLH_temp;
1901  sum_exp_llh += std::exp(LLH_temp);
1902 }

◆ CheckBounds()

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

Definition at line 451 of file PredictiveThrower.cpp.

452  {
453 // *************************
454  for (size_t i = 0; i < BoundValuePointer.size(); ++i) {
455  const double val = *(BoundValuePointer[i]);
456  const double minVal = ParamBounds[i].first;
457  const double maxVal = ParamBounds[i].second;
458 
459  if (val < minVal || val > maxVal)
460  return false; // out of bounds
461  }
462  return true; // all values are within bounds
463 }