def remove_value(self, shared, value): self.count -= 1 self.sum -= int(value) self.log_prod -= log(factorial(value))
def add_value(self, shared, value): self.count += 1 self.sum += int(value) self.log_prod += log(factorial(value))
def add_repeated_value(self, shared, value, count): self.count += count self.sum += int(count * value) self.log_prod += count * log(factorial(value))
def score_value(self, shared, value): post = shared.plus_group(self) return gammaln(post.alpha + value) - gammaln(post.alpha) \ + post.alpha * log(post.inv_beta) \ - (post.alpha + value) * log(1. + post.inv_beta) \ - log(factorial(value))