[SciPy-dev] Sad sad sad... Was: Warning about remaining issues in stats.distributions ?
Yaroslav Halchenko
lists at onerussian.com
Thu Mar 12 22:41:53 EDT 2009
heh heh... very sad to see that the warning was simply ignored and 0.7.0
still has this issue on exactly the same command (hence advice to include
it to unittests was ignored as well):
>>> print scipy.__version__
0.7.0
>>> scipy.stats.rdist(1.32, 0, 1).cdf(-1.0+numpy.finfo(float).eps)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/scipy/stats/distributions.py", line 117, in cdf
return self.dist.cdf(x,*self.args,**self.kwds)
File "/usr/lib/python2.5/site-packages/scipy/stats/distributions.py", line 625, in cdf
place(output,cond,self._cdf(*goodargs))
File "/usr/lib/python2.5/site-packages/scipy/stats/distributions.py", line 528, in _cdf
return self.veccdf(x,*args)
File "/usr/lib/python2.5/site-packages/numpy/lib/function_base.py", line 1886, in __call__
_res = array(self.ufunc(*newargs),copy=False,
File "/usr/lib/python2.5/site-packages/scipy/stats/distributions.py", line 525, in _cdf_single_call
return scipy.integrate.quad(self._pdf, self.a, x, args=args)[0]
File "/usr/lib/python2.5/site-packages/scipy/integrate/quadpack.py", line 185, in quad
retval = _quad(func,a,b,args,full_output,epsabs,epsrel,limit,points)
File "/usr/lib/python2.5/site-packages/scipy/integrate/quadpack.py", line 249, in _quad
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
File "/usr/lib/python2.5/site-packages/scipy/stats/distributions.py", line 3046, in _pdf
return pow((1.0-x*x),c/2.0-1) / special.beta(0.5,c/2.0)
ZeroDivisionError: 0.0 cannot be raised to a negative power
and my workaround doesn't work any more so I need to look for another
one.
On Tue, 09 Dec 2008, Yaroslav Halchenko wrote:
> > * distributions that have problems for some range of parameters
> so a good (imho) piece to add to unittests for the 'issues' to be fixed:
> scipy.stats.rdist(1.32, 0, 1).cdf(-1.0+numpy.finfo(float).eps)
> (tried on the SVN trunk to verify that it fails... discover the reason on
> your own ;-))
> For myself I resolved it with
> __eps = N.sqrt(N.finfo(float).eps)
> rdist = rdist_gen(a=-1.0+__eps, b=1.0-__eps, ....
> but I am not sure if that is the cleanest way... and may be some other
> distributions would need such tweakery to make them more stable.
--
.-.
=------------------------------ /v\ ----------------------------=
Keep in touch // \\ (yoh@|www.)onerussian.com
Yaroslav Halchenko /( )\ ICQ#: 60653192
Linux User ^^-^^ [175555]
More information about the SciPy-Dev
mailing list