[SciPy-Dev] stats, distributions, design choices

Evgeni Burovski evgeny.burovskiy at gmail.com
Thu Jun 13 16:46:44 EDT 2013


Looking into the source of stats.distributions, I'm a bit puzzled by the
way incorrect distribution parameters are handled. Most likely, I'm missing
something very simple, so I'd appreciate if someone knowledgeable can
comment on these:

1. For incorrect arguments of a distribution, rvs() raises a ValueError, but
pdf(), pmf() and their relatives return a magic badarg value:

>>> from scipy.stats import norm
>>> norm._argcheck(0, -1)
False
>>> norm.pdf(1, loc=0, scale=-1)
nan
>>> norm.rvs(loc=0, scale=-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File
"/home/br/virtualenvs/scipy-dev/local/lib/python2.7/site-packages/scipy/stats/distributions.py",
line 617, in rvs
    raise ValueError("Domain error in arguments.")
ValueError: Domain error in arguments.

Is there the rationale behind this? I'd naively expect a pdf to raise an
error as well --- or is there a use case where the current behavior is
preferrable?


2. For frozen distributions, is there a reason not to check the arguments
at freezing time:
>>> from scipy.stats import norm
>>> n = norm(0, -1)
# ...long long time afterwards...
>>> n.pdf([1, 2, 3])
array([ nan,  nan,  nan])

Thanks,

Zhenya
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20130613/e079cd73/attachment.html>


More information about the SciPy-Dev mailing list