[SciPy-dev] Problem with F distribution, or with me? - ticket 422 might apply for discrete distributions

josef.pktd@gmai... josef.pktd@gmai...
Tue Aug 26 20:31:49 CDT 2008


On Tue, Aug 26, 2008 at 8:18 PM,  <josef.pktd@gmail.com> wrote:

> Can somebody run:
>
> stats.zipf.pmf(range(10),1.5)
> stats.zipf.cdf(10,1.5)
> stats.zipf.cdf(range(10),1.5)
>
> I get
>>>> stats.zipf.cdf(10,1.5)
> Traceback (most recent call last):
>  File "<stdin>", line 1, in ?
>  File "C:\Josef\_progs\Subversion\scipy_trunk\dist\Programs\Python24\Lib\site-p
> ackages\scipy\stats\distributions.py", line 3549, in cdf
>    place(output,cond,self._cdf(*goodargs))
>  File "C:\Josef\_progs\Subversion\scipy_trunk\dist\Programs\Python24\Lib\site-p
> ackages\scipy\stats\distributions.py", line 3458, in _cdf
>    return self._cdfvec(k,*args)
>  File "C:\Programs\Python24\Lib\site-packages\numpy\lib\function_base.py", line
>  1092, in __call__
>    raise ValueError, "mismatch between python function inputs"\
> ValueError: mismatch between python function inputs and received arguments
>
> but this might be, because I am running either an older version of
> scipy or from my own faulty (?) build from subversion.
> If the current version still has this error, then I think it is
> related to the generic calculation of the cdf,
> similar to ticket 422, changeset 3797 for the moment calculation.
>
> In my tests I get many value errors, but again I don't know whether it
> is my version/setup, whether the parameters are not ruled out but
> don't make sense, or whether there is actually a bug somewhere.
>
> Josef
>

in changeset 3797 this was added to the continuous random variable:
315	        self.generic_moment.nin = self.numargs+1 # Because of the
*args argument
316	        # of _mom0_sc, vectorize cannot count the number of
arguments correctly.
in current trunk these are lines 318 and 319

I don't understand the details of numpy and vectorize, but I think
that the same problem with the number
of arguments also applies to the generic calculation for the discrete
distribution, i.e. lines

3401 	            self._ppf = new.instancemethod(sgf(_drv_ppf,otypes='d'),
3402 	                                           self, rv_discrete)
3403 	            self._pmf = new.instancemethod(sgf(_drv_pmf,otypes='d'),
3404 	                                           self, rv_discrete)
3405 	            self._cdf = new.instancemethod(sgf(_drv_cdf,otypes='d'),
3406 	                                           self, rv_discrete)

since all _drv_??? methods also use the *args argument and the
exception message I get looks the same as in ticket 422.

Josef


More information about the Scipy-dev mailing list