Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
SplitGaussianMarginal Class Referencefinal

Piecewise Gaussian marginal with asymmetric widths. More...

#include <SplitGaussianMarginal.h>

Inheritance diagram for SplitGaussianMarginal:
Collaboration diagram for SplitGaussianMarginal:

Public Member Functions

 SplitGaussianMarginal (double mu, double sigma_p, double sigma_m, unsigned int seed=std::random_device{}())
 Constructs an asymmetric split-Gaussian marginal.
 
std::vector< double > rvs (std::size_t n) override
 Draws random samples from the marginal distribution.
 
double logpdf (double x) override
 Evaluates the logarithm of the probability density at x.
 
PDFDiff f_df_ddf (double x) override
 
double cdf (double x) override
 Evaluates the cumulative distribution function at x.
 
double ppf (double p) override
 Evaluates the quantile function (inverse CDF).
 
double mean () override
 Returns the mean of the distribution.
 
double std () override
 Returns the standard deviation of the distribution.
 
- Public Member Functions inherited from IMarginalDistribution
virtual ~IMarginalDistribution ()=default
 
virtual Vector sample (std::size_t n)=0
 
virtual ~IMarginalDistribution ()=default
 Virtual destructor for safe polymorphic deletion.
 

Detailed Description

Piecewise Gaussian marginal with asymmetric widths.

This class represents a split normal / two-piece Gaussian distribution:

  • for x <= mu, the width is sigma_m,
  • for x > mu, the width is sigma_p.

The distribution is normalized through:

  • N : normalization constant,
  • w : left/right probability split used in the CDF/PPF.

Sampling is currently implemented by inverse transform: a uniform random number is drawn and passed through ppf.

Definition at line 54 of file SplitGaussianMarginal.h.

Constructor & Destructor Documentation

◆ SplitGaussianMarginal()

SplitGaussianMarginal::SplitGaussianMarginal ( double  mu,
double  sigma_p,
double  sigma_m,
unsigned int  seed = std::random_device{}() 
)
explicit

Constructs an asymmetric split-Gaussian marginal.

Parameters
muCentral value / mode.
sigma_pRight-side width.
sigma_mLeft-side width.
seedSeed for the internal RNG.

Definition at line 3 of file SplitGaussianMarginal.cpp.

Member Function Documentation

◆ cdf()

double SplitGaussianMarginal::cdf ( double  x)
overridevirtual

Evaluates the cumulative distribution function at x.

Parameters
xPoint at which the CDF is evaluated.
Returns
$P(X \le x)$.

Implements IMarginalDistribution.

Definition at line 35 of file SplitGaussianMarginal.cpp.

◆ f_df_ddf()

PDFDiff SplitGaussianMarginal::f_df_ddf ( double  x)
overridevirtual

Implements IMarginalDistribution.

Definition at line 25 of file SplitGaussianMarginal.cpp.

◆ logpdf()

double SplitGaussianMarginal::logpdf ( double  x)
overridevirtual

Evaluates the logarithm of the probability density at x.

For continuous distributions, this is usually $\log f(x)$. For discrete or sampler-only distributions, the exact semantics depend on the implementation.

Parameters
xPoint at which the log-density is evaluated.
Returns
Natural logarithm of the density (or implementation-defined proxy).

Implements IMarginalDistribution.

Definition at line 19 of file SplitGaussianMarginal.cpp.

◆ mean()

double SplitGaussianMarginal::mean ( )
overridevirtual

Returns the mean of the distribution.

Returns
Distribution mean.

Implements IMarginalDistribution.

Definition at line 55 of file SplitGaussianMarginal.cpp.

◆ ppf()

double SplitGaussianMarginal::ppf ( double  p)
overridevirtual

Evaluates the quantile function (inverse CDF).

Parameters
xProbability in the unit interval.
Returns
Quantile associated with x.

Implements IMarginalDistribution.

Definition at line 43 of file SplitGaussianMarginal.cpp.

◆ rvs()

std::vector< double > SplitGaussianMarginal::rvs ( std::size_t  n)
overridevirtual

Draws random samples from the marginal distribution.

Parameters
nNumber of samples to generate.
Returns
std::vector<double> of size n containing iid draws.

Implements IMarginalDistribution.

Definition at line 12 of file SplitGaussianMarginal.cpp.

◆ std()

double SplitGaussianMarginal::std ( )
overridevirtual

Returns the standard deviation of the distribution.

Returns
Distribution standard deviation.

Implements IMarginalDistribution.

Definition at line 59 of file SplitGaussianMarginal.cpp.


The documentation for this class was generated from the following files: