|
RandLib 2.0.0
Probability distributions, fitting, and heavy-tail tools for C++20
|
The PoissonRand class
Poisson distribution.
More...
#include <poisson.hpp>


Public Member Functions | |
| PoissonRand (double rate=1.0) | |
| std::string | Name () const override |
| Support | SupportType () const override |
| IntType | MinValue () const override |
| IntType | MaxValue () const override |
| void | SetRate (double rate) |
| double | GetRate () const noexcept |
| double | SufficientStatistic (IntType x) const override |
| double | SourceParameters () const override |
| double | SourceToNatural (double sourceParameters) const override |
| double | NaturalParameters () const override |
| double | LogNormalizer (double theta) const override |
| double | LogNormalizerGradient (double theta) const override |
| double | CarrierMeasure (IntType x) const override |
| double | CrossEntropyAdjusted (double parameters) const override |
| double | EntropyAdjusted () const override |
| double | logP (const IntType &k) const override |
| double | F (const IntType &k) const override |
| double | S (const IntType &k) const override |
| template<std::uniform_random_bit_generator G> | |
| IntType | operator() (G &g) const |
| long double | Mean () const override |
| long double | Variance () const override |
| IntType | Median () const override |
| IntType | Mode () const override |
| Mode is the value, which has the largest probability to happen, or, in the case of continuous distribution, has the largest value of density function. | |
| long double | Skewness () const override |
| long double | ExcessKurtosis () const override |
| void | Fit (std::span< const IntType > sample) |
| fit rate λ via maximum-likelihood method | |
| void | Fit (std::span< const IntType > sample, DoublePair &confidenceInterval, double significanceLevel) |
| Fit. | |
| GammaRand | FitBayes (std::span< const IntType > sample, const GammaDistribution<> &priorDistribution, bool MAP=false) |
| fit rate λ via Bayes estimation | |
Public Member Functions inherited from randlib::DiscreteDistribution< IntType > | |
| virtual | ~DiscreteDistribution () |
| virtual double | P (const IntType &k) const |
| void | ProbabilityMassFunction (std::span< const IntType > x, std::span< double > y) const |
| fill vector y with P(x) | |
| void | LogProbabilityMassFunction (std::span< const IntType > x, std::span< double > y) const |
| fill vector y with logP(x) | |
| double | Hazard (const IntType &x) const override |
| double | LikelihoodFunction (std::span< const IntType > sample) const override |
| double | LogLikelihoodFunction (std::span< const IntType > sample) const override |
| bool | PearsonChiSquaredTest (std::span< const IntType > orderStatistic, double alpha, int lowerBoundary, int upperBoundary, size_t numberOfEstimatedParameters=0) const |
| bool | PearsonChiSquaredTest (std::span< const IntType > orderStatistic, double alpha, size_t numberOfEstimatedParameters=0) const |
Public Member Functions inherited from randlib::UnivariateDistribution< IntType > | |
| virtual | ~UnivariateDistribution () |
| bool | isLeftBounded () const |
| bool | isRightBounded () const |
| IntType | Quantile (double p) const |
| IntType | Quantile1m (double p) const |
| void | QuantileFunction (std::span< const double > p, std::span< IntType > y) const |
| void | QuantileFunction1m (std::span< const double > p, std::span< IntType > y) const |
| std::complex< double > | CF (double t) const |
| void | CharacteristicFunction (std::span< const double > t, std::span< std::complex< double > > y) const |
| void | HazardFunction (std::span< const IntType > x, std::span< double > y) const |
| virtual long double | Kurtosis () const |
| virtual long double | SecondMoment () const |
| virtual long double | ThirdMoment () const |
| virtual long double | FourthMoment () const |
Public Member Functions inherited from randlib::ProbabilityDistribution< T > | |
| virtual | ~ProbabilityDistribution ()=default |
| virtual double | F (const T &x) const =0 |
| void | CumulativeDistributionFunction (std::span< const T > x, std::span< double > y) const |
| virtual double | S (const T &x) const |
| void | SurvivalFunction (std::span< const T > x, std::span< double > y) const |
| template<std::uniform_random_bit_generator G> | |
| T | operator() (G &g) const |
| Draws a variate with the given engine through the virtual interface. | |
| T | Variate () const |
| Uses the engine of this object, so it is not thread-safe for one object; use operator() with one engine per thread instead. | |
| void | Sample (std::span< T > outputData) const |
| Fills the output with variates drawn with the engine of this object. | |
| template<std::uniform_random_bit_generator G> | |
| void | Sample (G &g, std::span< T > outputData) const |
| Fills the output with variates drawn with the given engine. | |
| void | Reseed (std::uint64_t seed) |
Public Member Functions inherited from randlib::ExponentialFamily< IntType, double > | |
| ExponentialFamily () | |
| virtual | ~ExponentialFamily () |
| double | ProbabilityMeasure (IntType x) const |
| double | LogProbabilityMeasure (IntType x) const |
| double | KullbackLeiblerDivergence (double parameters) const |
| virtual double | CrossEntropyAdjusted (double parameters) const |
Static Public Member Functions | |
| template<std::uniform_random_bit_generator G> | |
| static IntType | Variate (double rate, G &g) |
Static Public Member Functions inherited from randlib::UnivariateDistribution< IntType > | |
| static long double | GetSampleSum (std::span< const IntType > sample) |
| static long double | GetSampleMean (std::span< const IntType > sample) |
| static long double | GetSampleLogMean (std::span< const IntType > sample) |
| static long double | GetSampleVariance (std::span< const IntType > sample, double mean) |
| static long double | GetSampleLogVariance (std::span< const IntType > sample, double logMean) |
| static LongDoublePair | GetSampleMeanAndVariance (std::span< const IntType > sample) |
| static LongDoublePair | GetSampleLogMeanAndVariance (std::span< const IntType > sample) |
| static std::tuple< long double, long double, long double, long double > | GetSampleStatistics (std::span< const IntType > sample) |
Additional Inherited Members | |
Public Types inherited from randlib::ProbabilityDistribution< T > | |
| using | value_type = T |
Protected Member Functions inherited from randlib::DiscreteDistribution< IntType > | |
| DiscreteDistribution () | |
| IntType | quantileImpl (double p, IntType initValue) const override |
| IntType | quantileImpl (double p) const override |
| IntType | quantileImpl1m (double p, IntType initValue) const override |
| IntType | quantileImpl1m (double p) const override |
| long double | ExpectedValue (const std::function< double(IntType)> &funPtr, IntType minPoint, IntType maxPoint) const override |
Protected Member Functions inherited from randlib::UnivariateDistribution< IntType > | |
| UnivariateDistribution () | |
Protected Member Functions inherited from randlib::ProbabilityDistribution< T > | |
| std::string | toStringWithPrecision (const double a_value, const int n=6) const |
| ProbabilityDistribution ()=default | |
| DefaultEngine & | engine () const |
| virtual void | sample (detail::EngineRef g, std::span< T > outputData) const |
| Fills the output with variate(g); distributions with a faster bulk algorithm override it. | |
| fit_error | fitError (FitErrorCode code, const std::string &explanation) const |
Static Protected Member Functions inherited from randlib::UnivariateDistribution< IntType > | |
| static bool | allElementsAreNotGreaterThan (IntType value, std::span< const IntType > sample) |
| static bool | allElementsAreNotSmallerThan (IntType value, std::span< const IntType > sample) |
| static bool | allElementsAreNonNegative (std::span< const IntType > sample) |
| static bool | allElementsArePositive (std::span< const IntType > sample) |
Static Protected Attributes inherited from randlib::ProbabilityDistribution< T > | |
| static constexpr size_t | MAX_ITER_REJECTION = detail::MAX_ITER_REJECTION |
| MAX_ITER_REJECTION upper boundary for maximum amount of iterations in rejection methods one thousand should be enough to be sure there is a bug (or rejection method is too slow to be used) | |
| static constexpr char | POSITIVITY_VIOLATION [] = "All elements should be positive" |
| static constexpr char | NON_NEGATIVITY_VIOLATION [] = "All elements should be non-negative" |
| static constexpr char | UPPER_LIMIT_VIOLATION [] = "No element should be greater than " |
| static constexpr char | LOWER_LIMIT_VIOLATION [] = "No element should be smaller than " |
The PoissonRand class
Poisson distribution.
P(X = k) = λ^k * exp(-λ) / k!
Notation: X ~ Po(λ)
|
explicit |
|
overridevirtual |
Implements randlib::ExponentialFamily< IntType, double >.
|
override |
|
overridevirtual |
Reimplemented from randlib::ExponentialFamily< IntType, double >.
|
overridevirtual |
var is finite, so is mu
Reimplemented from randlib::UnivariateDistribution< IntType >.
|
override |
| void randlib::PoissonRand< IntType >::Fit | ( | std::span< const IntType > | sample | ) |
fit rate λ via maximum-likelihood method
| sample |
| void randlib::PoissonRand< IntType >::Fit | ( | std::span< const IntType > | sample, |
| DoublePair & | confidenceInterval, | ||
| double | significanceLevel | ||
| ) |
Fit.
| sample | |
| confidenceInterval | |
| significanceLevel |
| GammaRand randlib::PoissonRand< IntType >::FitBayes | ( | std::span< const IntType > | sample, |
| const GammaDistribution<> & | priorDistribution, | ||
| bool | MAP = false |
||
| ) |
fit rate λ via Bayes estimation
| sample | |
| priorDistribution | |
| MAP | if true, use MAP estimator |
|
inlinenoexcept |
|
overridevirtual |
Implements randlib::ExponentialFamily< IntType, double >.
|
overridevirtual |
Implements randlib::ExponentialFamily< IntType, double >.
|
overridevirtual |
| x |
saddle-point form; k log λ - λ - log(k!) cancels catastrophically for large k
Implements randlib::DiscreteDistribution< IntType >.
|
inlineoverridevirtual |
Implements randlib::ProbabilityDistribution< T >.
|
overridevirtual |
Implements randlib::UnivariateDistribution< IntType >.
|
overridevirtual |
this value is approximate
Reimplemented from randlib::UnivariateDistribution< IntType >.
|
inlineoverridevirtual |
Implements randlib::ProbabilityDistribution< T >.
|
overridevirtual |
Mode is the value, which has the largest probability to happen, or, in the case of continuous distribution, has the largest value of density function.
Works only for unimodal distributions
Reimplemented from randlib::DiscreteDistribution< IntType >.
|
overridevirtual |
Implements randlib::ProbabilityDistribution< T >.
|
overridevirtual |
Reimplemented from randlib::ExponentialFamily< IntType, double >.
| IntType randlib::PoissonRand< IntType >::operator() | ( | G & | g | ) | const |
|
override |
| void randlib::PoissonRand< IntType >::SetRate | ( | double | rate | ) |
|
overridevirtual |
var is finite, so is mu
Reimplemented from randlib::UnivariateDistribution< IntType >.
|
overridevirtual |
Implements randlib::ExponentialFamily< IntType, double >.
|
overridevirtual |
Implements randlib::ExponentialFamily< IntType, double >.
|
overridevirtual |
Implements randlib::ExponentialFamily< IntType, double >.
|
inlineoverridevirtual |
Implements randlib::UnivariateDistribution< IntType >.
|
overridevirtual |
Implements randlib::UnivariateDistribution< IntType >.
|
static |