def BPrvs(cl,cld,cm,n): ga=cl+cld-cm;gb=-cm try: a,b=gg2ab(ga,gb) except AssertionError:return np.ones(n)*np.nan,np.ones(n)*np.nan res=stats.betaprime.rvs(a,b,scale=1,size=n) res[res==0]=np.exp(-20) return np.log(res),res
def BErvs(cl,cld,cu,n): try: a,b=gg2ab(cl+cld,cu) except AssertionError: return np.ones(n)*np.nan,np.ones(n)*np.nan res=stats.beta.rvs(a,b,0,scale=10,size=n) res[res==10]=10-np.exp(-20) res[res==0]=np.exp(-20) res0=logit(res/10.) return res0,res
def BBpmf(np1,np2,cl,gb=-0.3): n=np2 try: a,b=gg2ab(cl,gb) except AssertionError: return np.nan*np.zeros(n),np.arange(n) res=[] for k in range(n): res.append(binom(n-1,k)*beta(k+a,n-k-1+b)/beta(a,b)) return res,np.arange(n)
def BBrvs(cl,cld,cn,n,cu=-0.3): if type(n) is int: rr=1;nn=n else: rr=n[1];nn=n[0] a,b=gg2ab(cl+cld,cu) res=stats.beta.rvs(a,b,0,1,size=(nn,rr)) res[res==1]=1-np.exp(-20) res[res==0]=np.exp(-20) res=np.random.binomial(cn-1,res) res0=(2*res+1)/2./float(cn) res0=logit(res0) return res0,res/(cn-1)
def BEpdf(x,np1,np2,cl): try: a,b=gg2ab(cl,np2) except AssertionError: return np.nan*np.zeros(x.size) return stats.beta.pdf(x,a,b,0,scale=1)
def BPpdf(x,np1,np2,cl): ga=cl-np2;gb=-np2 a,b=gg2ab(ga,gb) #except AssertionError: # return np.zeros(x.size)*np.nan return stats.betaprime.pdf(x,a,b,scale=1)