def poisson(self, x, mu):
"""
Poisson function taken from:
https://github.com/scipy/scipy/blob/master/scipy/stats/_discrete_distns.py
For license see documentation/BSDLicense_scipy.md
Author: Travis Oliphant 2002-2011 with contributions from
SciPy Developers 2004-2011
"""
if len(np.atleast_1d(x)) == 1:
check_val = x
else:
check_val = x[0]
if check_val > 1e18:
self.log.warning('The current value in the poissonian distribution '
'exceeds 1e18! Due to numerical imprecision a valid '
'functional output cannot be guaranteed any more!')
# According to the central limit theorem, a poissonian distribution becomes
# a gaussian distribution for large enough x. Since the numerical precision
# is limited to calculate the logarithmized poissonian and obtain from that
# the exponential value, a self defined cutoff is introduced and set to
# 1e12. Beyond that number a gaussian distribution is assumed, which is a
# completely valid assumption.
if check_val < 1e12:
return np.exp(xlogy(x, mu) - gammaln(x + 1) - mu)
else:
return np.exp(-((x - mu) ** 2) / (2 * mu)) / (np.sqrt(2 * np.pi * mu))
评论列表
文章目录