1 #ifndef NPSTAT_GAUSSIANMIXTURE1D_HH_
2 #define NPSTAT_GAUSSIANMIXTURE1D_HH_
38 const std::vector<GaussianMixtureEntry>&
entries);
49 inline unsigned nentries()
const {
return entries_.size();}
53 {
return entries_.at(n);}
56 inline const std::vector<GaussianMixtureEntry>&
entries()
const
80 unsigned long npoints)
const;
84 double* mise = 0)
const;
88 virtual inline gs::ClassId
classId()
const {
return gs::ClassId(*
this);}
89 virtual bool write(std::ostream& os)
const;
92 static inline const char* classname() {
return "npstat::GaussianMixture1D";}
93 static inline unsigned version() {
return 1;}
102 class GaussianMISEFunctor;
103 friend class GaussianMISEFunctor;
105 class GaussianMISEFunctor :
public Functor1<long double,double>
109 const unsigned maxPolyDegree,
110 const unsigned long npoints)
111 : mix_(mix), npt_(npoints), polyDeg_(maxPolyDegree) {}
112 inline virtual ~GaussianMISEFunctor() {}
114 inline long double operator()(
const double& bandwidth)
const
115 {
return mix_.gmise(bandwidth, polyDeg_, npt_);}
119 const unsigned long npt_;
120 const unsigned polyDeg_;
126 const std::vector<double>& params);
127 inline static int nParameters() {
return -1;}
130 void copyNonzeroEntries(
const GaussianMixtureEntry* ientries,
132 double unscaledDensity(
double x)
const;
133 double unscaledCdf(
double x)
const;
134 double unscaledExceedance(
double x)
const;
135 double unscaledQuantile(
double x)
const;
136 double unscaledMean()
const;
137 double unscaledStdev()
const;
139 long double U(
long double h,
unsigned s,
unsigned q)
const;
140 long double gmise(
long double h,
unsigned deg,
unsigned long n)
const;
142 std::vector<GaussianMixtureEntry> entries_;
143 std::vector<double> weightCdf_;
144 std::vector<Gauss1D> distros_;
145 mutable std::vector<long double> polyterms_;
146 mutable std::vector<std::pair<long double,long double> > uterms_;
A number of useful 1-d continuous statistical distributions.
A helper class for constructing one-dimensional Gaussian mixtures.
Definition: AbsDistribution1D.hh:165
double scale() const
Definition: AbsDistribution1D.hh:183
AbsScalableDistribution1D(const double location, const double scale)
Definition: AbsDistribution1D.hh:168
double location() const
Definition: AbsDistribution1D.hh:180
Definition: Distributions1D.hh:316
Definition: GaussianMixture1D.hh:23
virtual unsigned random(AbsRandomGenerator &g, double *r) const
double gaussianMISE(unsigned maxPolyDegree, double bandwidth, unsigned long npoints) const
virtual GaussianMixture1D * clone() const
Definition: GaussianMixture1D.hh:45
unsigned nentries() const
Definition: GaussianMixture1D.hh:49
double miseOptimalBw(unsigned maxPolyDegree, unsigned long npoints, double *mise=0) const
const GaussianMixtureEntry & entry(const unsigned n) const
Definition: GaussianMixture1D.hh:52
GaussianMixture1D(const Gauss1D &gauss)
virtual gs::ClassId classId() const
Definition: GaussianMixture1D.hh:88
virtual bool isEqual(const AbsDistribution1D &r) const
GaussianMixture1D(double location, double scale, const GaussianMixtureEntry *entries, unsigned nEntries)
const std::vector< GaussianMixtureEntry > & entries() const
Definition: GaussianMixture1D.hh:56
Definition: GaussianMixtureEntry.hh:23
Definition: Distribution1DFactory.hh:35
Definition: AbsArrayProjector.hh:14
Definition: AbsDistribution1D.hh:31
Definition: AbsRandomGenerator.hh:27
Definition: SimpleFunctors.hh:58