我现以以下方式说明我的前科是没有负面的:
def lnprior(theta):
sig,mu = theta
if 0.01 < sig < 2.0 and 0.01 < mu < 1.0:
return(0.0)
return(-np.inf)然后,我按照主持人网页上的食谱:
def lnprob(theta,lightcurve,noisecurve):
lp = lnprior(theta)
if not np.isfinite(lp):
return(-np.inf)
return(lp + lnlike(theta,lightcurve,noisecurve)) # lightcurve and noisecurve are np.arrays我不会以任何方式改变(至少是不知情的) mu in lnlike .
然后,当我使用fig = corner.corner(samples, labels=["$\sigma$", "$\mu$",'$c$'],color=sns.xkcd_rgb["amber"])生成一个角图,其中角是转角时,我仍然得到两个位于下两个象限的点。这是为什么?
以下是我对印度的定义:
def lnlike(theta,lightcurve,noisecurve):
sig = theta[0]
mu = theta[1]
lightcurve = adder(lightcurve,mu) #simply adding lightcurve + mu
x = binMaker(mu,lightcurve,noisecurve) # computing x values as a function of mu
y, yerr = detectionFrequency(lightcurve,noisecurve,mu) # a function which computes a real valued number based on f(x,mu,lightcurve,noisecurve)
return(np.sum((y-PDF(x,sig,np.log(mu)))**2/yerr))

发布于 2018-05-17 14:18:19
我也有这个问题,即使在以前的区域内初始化了步行者。一种(直截了当的)解决方案是简单地将if之前的if语句添加到lnlike函数中。
发布于 2020-03-28 14:49:28
要获得每个参数在其先验范围内的最佳匹配值,只需将先验范围放在b摩洛哥()中即可。
def lnprior(theta):
sig,mu = theta
if (0.01 < sig < 2.0 and 0.01 < mu < 1.0):
return(0.0)
return(-np.inf)希望这对你有用。请告诉我进一步的情况。
https://stackoverflow.com/questions/47002082
复制相似问题