def ln_prob(self, val): """Returns the log prior probability of val. Parameters ---------- val: Union[float, int, array_like] Returns ------- Union[float, array_like]: Prior probability of val """ _ln_prob = xlogy(self.alpha - 1, val - self.minimum) + xlogy(self.beta - 1, self.maximum - val)\ - betaln(self.alpha, self.beta) - xlogy(self.alpha + self.beta - 1, self.maximum - self.minimum) # deal with the fact that if alpha or beta are < 1 you get infinities at 0 and 1 if isinstance(val, np.ndarray): _ln_prob_sub = -np.inf * np.ones(len(val)) idx = np.isfinite(_ln_prob) & (val >= self.minimum) & ( val <= self.maximum) _ln_prob_sub[idx] = _ln_prob[idx] return _ln_prob_sub else: if np.isfinite( _ln_prob) and val >= self.minimum and val <= self.maximum: return _ln_prob return -np.inf
def ln_prob(self, val): """Return the log prior probability of val Parameters ========== val: Union[float, int, array_like] Returns ======= float: log probability of val """ return xlogy(1, (val >= self.minimum) & (val <= self.maximum)) - xlogy(1, self.maximum - self.minimum)
def ln_prob(self, val): """Returns the log prior probability of val. Parameters ========== val: Union[float, int, array_like] Returns ======= Union[float, array_like]: Prior probability of val """ if isinstance(val, (float, int)): if val < self.minimum: _ln_prob = -np.inf else: _ln_prob = xlogy(self.k - 1, val) - val / self.theta - xlogy(self.k, self.theta) - gammaln(self.k) else: _ln_prob = -np.inf * np.ones(val.size) idx = (val >= self.minimum) _ln_prob[idx] = xlogy(self.k - 1, val[idx]) - val[idx] / self.theta\ - xlogy(self.k, self.theta) - gammaln(self.k) return _ln_prob