[Scipy-tickets] [SciPy] #1842: wrong value returned by scipy.stats.binom probability mass function when true probability is 1

SciPy Trac scipy-tickets@scipy....
Thu Feb 14 15:19:08 CST 2013


#1842: wrong value returned by scipy.stats.binom probability mass function when
true probability is 1
-------------------------+--------------------------------------------------
 Reporter:  leflage      |       Owner:  rgommers   
     Type:  defect       |      Status:  new        
 Priority:  normal       |   Milestone:  Unscheduled
Component:  scipy.stats  |     Version:  0.11.0     
 Keywords:               |  
-------------------------+--------------------------------------------------

Comment(by leflage):

 Hi josefpktd,

 I was able to deal with this bug in my own code by creating the class
 below.  It works for vectors/arrays, but uses np.where and probably isn't
 very efficient and probably doesn't adhere to scipy conventions.

 I looked at the source code for R to see if there was a better solution.
 It looks like they also use conditional statements to deal with degenerate
 cases.  I'm afraid I don't quite grasp your mask solution, and in light of
 that and my loose grasp on tricks that could be used to make this more
 efficient I don't think I should volunteer.

 {{{
 class fbin:
     def __init__(self, n, p):
         self.d = binom(n,p)
         self.n = n
         self.p = p
     def pmf(self, k):
         k = np.array(k)
         if self.p == 1 and self.n in k:
             z = np.zeros(len(k))
             z[np.where(k == self.n)] = 1.
             return z
         elif self.p == 0 and 0 in k:
             z = np.zeros(len(k))
             z[np.where(k == 0)] = 1.
             return z
         else:
             z = self.d.pmf(k)
             return z
 }}}

-- 
Ticket URL: <http://projects.scipy.org/scipy/ticket/1842#comment:3>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.


More information about the Scipy-tickets mailing list