You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
874 B

# file for distribution-specific tests with new infrastructure (UnivariateDistribution)
import numpy as np
from numpy.testing import assert_allclose
from scipy import stats
class TestBinomial:
def test_gh23708_binomial_logcdf_method_complement(self):
# gh-23708 found that `logcdf` method='complement' was inaccurate in the tails
x = np.asarray([0., 18.])
X = stats.Binomial(n=np.asarray([18.]), p=np.asarray(0.71022842))
assert_allclose(X.logcdf(x, method='complement'), X.logcdf(x), rtol=1e-15)
assert_allclose(X.logccdf(x, method='complement'), X.logccdf(x), rtol=1e-15)
# going even deeper into the tails
X = stats.Binomial(n=100, p=0.5)
assert_allclose(X.logcdf(0, method='complement'), X.logpmf(0), rtol=1e-15)
assert_allclose(X.logccdf(99, method='complement'), X.logpmf(100), rtol=1e-15)