def ztnb_cdf(y, mu, alpha): r = 1.0/alpha if y <= 0: raise Exception('y must be larger than 0.') p = mu/(mu+r+0.0) F_ztnb = ( 1 - special.btdtr(y+1, r, p) - np.power(1-p, r) ) / (1-np.power(1-p,r)) return F_ztnb