def drawBeta(k,s,w,size=1): """Draw beta from its distribution (Eq.9 Rasmussen 2000) using ARS Make it robust with an expanding range in case of failure""" nd = w.shape[0] # precompute some things for speed logdetw = slogdet(w)[1] temp = 0 for sj in s: sj = np.reshape(sj,(nd,nd)) temp += slogdet(sj)[1] temp -= np.trace(np.dot(w,sj)) lb = nd - 1.0 flag = True cnt = 0 while flag: xi = lb + np.logspace(-3-cnt,1+cnt,200) # update range if needed flag = False try: ars = ARS(logpbeta,logpbetaprime,xi=xi,lb=lb,ub=np.inf, \ k=k, s=s, w=w, nd=nd, logdetw=logdetw, temp=temp) except: cnt += 1 flag = True # draw beta but also pass random seed to ARS code return ars.draw(size,np.random.randint(MAXINT))
def drawBeta(k,s,w,size=1): """Draw beta from its distribution (Eq.9 Rasmussen 2000) using ARS Make it robust with an expanding range in case of failure""" nd = w.shape[0] # precompute some things for speed logdetw = slogdet(w)[1] temp = 0 for sj in s: sj = np.reshape(sj,(nd,nd)) temp += slogdet(sj)[1] temp -= np.trace(np.dot(w,sj)) lb = nd - 1.0 flag = True cnt = 0 while flag: xi = lb + np.logspace(-3-cnt,1+cnt,50) # update range if needed flag = False try: ars = ARS(logpbeta,logpbetaprime,xi=xi,lb=lb,ub=np.inf, \ k=k, s=s, w=w, nd=nd, logdetw=logdetw, temp=temp) except: cnt += 1 flag = True # draw beta but also pass random seed to ARS code return ars.draw(size,np.random.randint(MAXINT))
def drawAlpha(k,N,size=1): """Draw alpha from its distribution (Eq.15 Rasmussen 2000) using ARS Make it robust with an expanding range in case of failure""" flag = True cnt = 0 while flag: xi = np.logspace(-2-cnt,3+cnt,200) # update range if needed try: ars = ARS(logpalpha,logpalphaprime,xi=xi,lb=0, ub=np.inf, k=k, N=N) flag = False except: cnt += 1 # draw alpha but also pass random seed to ARS code return ars.draw(size,np.random.randint(MAXINT))
def drawAlpha(k,N,size=1): """Draw alpha from its distribution (Eq.15 Rasmussen 2000) using ARS Make it robust with an expanding range in case of failure""" flag = True cnt = 0 while flag: xi = np.logspace(-2-cnt,3+cnt,50) # update range if needed try: ars = ARS(logpalpha,logpalphaprime,xi=xi,lb=0, ub=np.inf, k=k, N=N) flag = False except: cnt += 1 # draw alpha but also pass random seed to ARS code return ars.draw(size,np.random.randint(MAXINT))