1 #ifndef PROBABILITY_DISTRIBUTION_H 2 #define PROBABILITY_DISTRIBUTION_H 5 #include <KrisLibrary/math/vector.h> 6 #include <KrisLibrary/math/matrix.h> 17 virtual void GetParameters(
Vector& parameters)=0;
18 virtual void SetParameters(
const Vector& parameters)=0;
19 virtual Real PDF(Real value)=0;
20 virtual Real CDF(Real value)=0;
21 virtual bool IsDiscrete() {
return false; }
22 virtual Real Minimum() {
return -Inf; }
23 virtual Real Maximum() {
return Inf; }
24 virtual Real Mean()=0;
25 virtual Real StandardDeviation() {
return Sqrt(Variance()); }
26 virtual Real Variance() { FatalError(
"Variance not defined");
return 0; }
27 virtual Real Skewness() { FatalError(
"Skewness not defined");
return 0; }
28 virtual Real Kurtosis() { FatalError(
"Kurtosis not defined");
return 0; }
29 virtual Real Moment(
int moment) {
30 if(moment == 0)
return Mean();
31 else if(moment == 1)
return Variance();
32 else if(moment == 2)
return Skewness();
33 else if(moment == 3)
return Kurtosis();
34 else FatalError(
"Moment %d not defined",moment);
37 virtual Real
Sample() {
return 0; }
38 virtual bool CanSample()
const {
return false; }
44 virtual void GetParameters(
Vector& parameters)=0;
45 virtual void SetParameters(
const Vector& parameters)=0;
46 virtual int NumDimensions()=0;
47 virtual Real PDF(
const Vector& value)=0;
48 virtual Real CDF(
const Vector& value)=0;
49 virtual bool IsDiscrete() {
return false; }
50 virtual void Minimum(
Vector& bmin) { bmin.resize(NumDimensions(),-Inf); }
51 virtual void Maximum(
Vector& bmax) { bmax.resize(NumDimensions(),Inf); }
52 virtual void Mean(
Vector& mean)=0;
53 virtual void Covariance(
Matrix& var) { FatalError(
"Covariance not defined");}
55 virtual bool CanSample()
const {
return false; }
Common math typedefs, constants, functions.
Real Sample(const Interval &s)
Uniformly samples the given intervals.
Definition: sample.cpp:116
Definition: ProbabilityDistribution.h:14
Contains all definitions in the statistics directory.
Definition: BernoulliDistribution.h:6
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
Definition: ProbabilityDistribution.h:41