summaryrefslogtreecommitdiff
path: root/utils/gamma_poisson.h
diff options
context:
space:
mode:
authorChris Dyer <cdyer@cs.cmu.edu>2012-08-09 01:18:32 -0400
committerChris Dyer <cdyer@cs.cmu.edu>2012-08-09 01:18:32 -0400
commit2a9c9a414abc074ec4ea8a5494e8dd50e1f94d70 (patch)
treef0bab000a53595e2de5b138accac10b90322c6fe /utils/gamma_poisson.h
parentbc2992ba96cd7af83da8522bdeb6e5dd94a5a11b (diff)
gamma-poisson word length model
Diffstat (limited to 'utils/gamma_poisson.h')
-rw-r--r--utils/gamma_poisson.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/utils/gamma_poisson.h b/utils/gamma_poisson.h
new file mode 100644
index 00000000..fec763f6
--- /dev/null
+++ b/utils/gamma_poisson.h
@@ -0,0 +1,33 @@
+#ifndef _GAMMA_POISSON_H_
+#define _GAMMA_POISSON_H_
+
+#include <m.h>
+
+// http://en.wikipedia.org/wiki/Conjugate_prior
+struct GammaPoisson {
+ GammaPoisson(double shape, double rate) :
+ a(shape), b(rate), n(), marginal() {}
+
+ double prob(unsigned x) const {
+ return exp(Md::log_negative_binom(x, a + marginal, 1.0 - (b + n) / (1 + b + n)));
+ }
+
+ void increment(unsigned x) {
+ ++n;
+ marginal += x;
+ }
+
+ void decrement(unsigned x) {
+ --n;
+ marginal -= x;
+ }
+
+ double log_likelihood() const {
+ return 0;
+ }
+
+ double a, b;
+ int n, marginal;
+};
+
+#endif