#ifndef DCAT_H_
#define DCAT_H_
#include <distributions/DistDiscrete.h>
/**
* @short Categorical distribution
* <pre>
* R ~ dcat(p[])
* f(r|p[]) = p[r] ; r in 1:dim(p)
* </pre>
*/
class DCat : public DistDiscrete {
public:
DCat();
~DCat();
double d(double x, std::vector<SArray const *> const ¶meters,
bool give_log) const;
double p(double x, std::vector<SArray const *> const ¶meters, bool lower,
bool give_log) const;
double q(double p, std::vector<SArray const *> const ¶meters, bool lower,
bool log_p) const;
double r(std::vector<SArray const *> const ¶meters) const;
double l(std::vector<SArray const *> const ¶meters) const;
double u(std::vector<SArray const *> const ¶meters) const;
double mean(std::vector<SArray const *> const ¶meters) const;
double var(std::vector<SArray const *> const ¶meters) const;
/**
* Checks that p is a vector of length at least 2
*/
bool checkParameterDim(std::vector<SArray const *> const ¶meters) const;
/**
* Checks that all elements of p lie in the interval (0,1)
* and sum to 1
*/
bool checkParameterValue(std::vector<SArray const *> const ¶meters) const;
};
#endif /* DCAT_H_ */
syntax highlighted by Code2HTML, v. 0.9.1