Skip to content

Commit

Permalink
add test for modes (#613)
Browse files Browse the repository at this point in the history
  • Loading branch information
aloctavodia authored Jan 3, 2025
1 parent 9c19ea1 commit b31cb6b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 0 deletions.
3 changes: 3 additions & 0 deletions preliz/distributions/asymmetric_laplace.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@ def median(self):
def mean(self):
return (1 / self.kappa - self.kappa) * self.b + self.mu

def mode(self):
return self.mu

def var(self):
return ((1 / self.kappa) ** 2 + self.kappa**2) * self.b**2

Expand Down
7 changes: 7 additions & 0 deletions preliz/distributions/betabinomial.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,13 @@ def entropy(self):
def mean(self):
return self.n * self.alpha / (self.alpha + self.beta)

def mode(self):
return np.clip(
np.floor((self.n + 1) * ((self.alpha - 1) / (self.alpha + self.beta - 2))).astype(int),
0,
self.n,
)

def median(self):
return self.ppf(0.5)

Expand Down
3 changes: 3 additions & 0 deletions preliz/distributions/categorical.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ def entropy(self):
def mean(self):
return NotImplemented

def mode(self):
return self.p.argmax()

def median(self):
return NotImplemented

Expand Down
8 changes: 8 additions & 0 deletions preliz/tests/test_scipy.py
Original file line number Diff line number Diff line change
Expand Up @@ -325,3 +325,11 @@ def test_match_scipy(p_dist, sp_dist, p_params, sp_params):
assert_almost_equal(actual_median, expected_median, decimal=6)
else:
assert_almost_equal(actual_median, expected_median)

finite_expected_pdf = np.where(np.isfinite(expected_pdf), expected_pdf, -np.inf)
expected_mode = extended_vals[np.argmax(finite_expected_pdf)]
try:
actual_mode = preliz_dist.mode()
assert_almost_equal(actual_mode, expected_mode, decimal=0)
except NotImplementedError:
pass

0 comments on commit b31cb6b

Please sign in to comment.