1 #ifndef NPSTAT_COPULAS_HH_
2 #define NPSTAT_COPULAS_HH_
21 class NMCombinationSequencer;
32 void unitMap(
const double* rnd,
unsigned bufLen,
double* x)
const;
37 virtual inline gs::ClassId
classId()
const {
return gs::ClassId(*
this);}
38 virtual bool write(std::ostream& os)
const;
40 static inline const char* classname() {
return "npstat::GaussianCopula";}
41 static inline unsigned version() {
return 1;}
42 static GaussianCopula* read(
const gs::ClassId&
id, std::istream& in);
45 virtual inline bool isEqual(
const AbsDistributionND& ri)
const
47 const GaussianCopula& o =
static_cast<const GaussianCopula&
>(ri);
48 return norm_ == o.norm_ && form_ == o.form_ &&
53 inline explicit GaussianCopula(
unsigned nDim)
54 : AbsDistributionND(nDim) {}
57 Matrix<double> sqrCov_;
59 mutable std::vector<double> buf_;
93 void unitMap(
const double* rnd,
unsigned bufLen,
double* x)
const;
97 virtual inline gs::ClassId
classId()
const {
return gs::ClassId(*
this);}
98 virtual bool write(std::ostream& os)
const;
100 static inline const char* classname() {
return "npstat::FGMCopula";}
101 static inline unsigned version() {
return 1;}
102 static FGMCopula* read(
const gs::ClassId&
id, std::istream& in);
105 virtual inline bool isEqual(
const AbsDistributionND& ri)
const
108 return cornerValues_ == o.cornerValues_;
112 inline explicit FGMCopula(
unsigned nDim) : AbsDistributionND(nDim) {}
114 static double interpolate(
const double* corners,
115 const double* x,
unsigned dim);
116 static double density0(NMCombinationSequencer* sequencers,
117 const double* par,
const double* x,
120 std::vector<double> cornerValues_;
132 void unitMap(
const double* rnd,
unsigned bufLen,
double* x)
const;
134 inline double nDegreesOfFreedom()
const {
return nDoF_;}
138 virtual inline gs::ClassId
classId()
const {
return gs::ClassId(*
this);}
139 virtual bool write(std::ostream& os)
const;
141 static inline const char* classname() {
return "npstat::TCopula";}
142 static inline unsigned version() {
return 1;}
143 static TCopula* read(
const gs::ClassId&
id, std::istream& in);
146 virtual inline bool isEqual(
const AbsDistributionND& ri)
const
148 const TCopula& o =
static_cast<const TCopula&
>(ri);
149 return nDoF_ == o.nDoF_ && norm_ == o.norm_ && form_ == o.form_ &&
150 sqrCov_ == o.sqrCov_ && power_ == o.power_;
154 inline TCopula(
unsigned nDim,
double ndof)
155 : AbsDistributionND(nDim), t_(0.0, 1.0, ndof) {}
157 Matrix<double> form_;
158 Matrix<double> sqrCov_;
163 mutable std::vector<double> buf_;
Interface definition for multivariate continuous statistical distributions.
A number of useful 1-d continuous statistical distributions.
Definition: AbsDistributionND.hh:26
unsigned dim() const
Definition: AbsDistributionND.hh:51
Definition: Copulas.hh:77
FGMCopula(unsigned dim, const double *params, unsigned nParams)
virtual gs::ClassId classId() const
Definition: Copulas.hh:97
void unitMap(const double *rnd, unsigned bufLen, double *x) const
double density(const double *x, unsigned dim) const
bool mappedByQuantiles() const
Definition: Copulas.hh:94
virtual FGMCopula * clone() const
Definition: Copulas.hh:96
Definition: Copulas.hh:26
bool mappedByQuantiles() const
Definition: Copulas.hh:33
double density(const double *x, unsigned dim) const
virtual gs::ClassId classId() const
Definition: Copulas.hh:37
virtual GaussianCopula * clone() const
Definition: Copulas.hh:35
void unitMap(const double *rnd, unsigned bufLen, double *x) const
Definition: Copulas.hh:126
void unitMap(const double *rnd, unsigned bufLen, double *x) const
virtual gs::ClassId classId() const
Definition: Copulas.hh:138
double density(const double *x, unsigned dim) const
bool mappedByQuantiles() const
Definition: Copulas.hh:133
virtual TCopula * clone() const
Definition: Copulas.hh:136
Definition: AbsArrayProjector.hh:14