def _kld(self, data, weights=None, normalize=False): assert((data >= 0).all() and (data <= self.n).all()) alphas,betas = self._get_abs(data, weights) result = -dist_fit.log_beta_binomial( data, self.n, alphas, betas ) if normalize: # evs = self.n*alphas/(alphas + betas) raise NotImplementedError('not sure how to normalize likelihood for discrete distribution') return result
def kld(self, succ, att): if att == 0: return 0. if succ > att: att = succ return -dist_fit.log_beta_binomial(succ, att, *self.ab)
def chi_sq(self, succ, att): # if att == 0: return 0. norm = dist_fit.log_beta_binomial(self.ev(att), att, *self.ab) return 2. * (self.kld(succ, att) + norm)