[SciPy-dev] ticket 422 applies for other methods: vectorize and *args bugs
josef.pktd@gmai...
josef.pktd@gmai...
Thu Aug 28 17:47:54 CDT 2008
I think I found more errors with vectorize (sdf) and *args in
scipy.stats.distributions:
When I try with scipy 0.6.0
print 'rice.cdf', stats.rice.cdf(5,1.5)
raise ValueError, "mismatch between python function inputs"\
ValueError: mismatch between python function inputs and received arguments
if I add in class rv_continuous
def _cdf(self, x, *args):
+ self.veccdf.nin = self.numargs+1 #JP
return self.veccdf(x,*args)
I also needed to add
def _cdf_single_call(self, x, *args):
+ import scipy.integrate #JP
return scipy.integrate.quad(self._pdf, self.a, x, args=args)[0]
then the error is gone:
>>> print 'rice.cdf', stats.rice.cdf(5,1.5)
rice.cdf 0.999557350428
in order to get rice.rvs(1.5) to work, I did also
def _ppf(self, q, *args):
+ self.vecfunc.nin = self.numargs+1 #JP
return self.vecfunc(q,*args)
def _isf(self, q, *args):
+ self.vecfunc.nin = self.numargs+1 #JP
return self.vecfunc(1.0-q,*args)
now,
print 'rice.cdf', stats.rice.cdf(5,1.5)
print 'rice.rvs',stats.rice.rvs([1.5])
works
but this does not
print 'rice.rvs',stats.rice.rvs([1.5])
print 'rice.cdf', stats.rice.cdf(5,1.5)
cdf needs to be called before rvs. So my changes are not in the right
position, the cdf needs to be initialized before, I can call rvs.
But somewhere along these lines, it should be possible to make the
generic methods function correctly.
This was with scipy 0.60, but I haven't seen any relevant changes in
the current trunk
Josef
for discrete distribution such as zipf, see my other email
More information about the Scipy-dev
mailing list