首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emcee -为什么在先前空间之外的值

emcee -为什么在先前空间之外的值
EN

Stack Overflow用户
提问于 2017-10-29 15:41:45
回答 2查看 495关注 0票数 0

我现以以下方式说明我的前科是没有负面的:

代码语言:javascript
复制
def lnprior(theta):
    sig,mu  = theta
    if 0.01 < sig < 2.0 and 0.01 < mu < 1.0:
        return(0.0)
    return(-np.inf)

然后,我按照主持人网页上的食谱:

代码语言:javascript
复制
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"])生成一个角图,其中角是转角时,我仍然得到两个位于下两个象限的点。这是为什么?

以下是我对印度的定义:

代码语言:javascript
复制
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))

EN

回答 2

Stack Overflow用户

发布于 2018-05-17 14:18:19

我也有这个问题,即使在以前的区域内初始化了步行者。一种(直截了当的)解决方案是简单地将if之前的if语句添加到lnlike函数中。

票数 0
EN

Stack Overflow用户

发布于 2020-03-28 14:49:28

要获得每个参数在其先验范围内的最佳匹配值,只需将先验范围放在b摩洛哥()中即可。

代码语言:javascript
复制
def lnprior(theta):
sig,mu  = theta
if (0.01 < sig < 2.0 and 0.01 < mu < 1.0):
    return(0.0)
return(-np.inf)

希望这对你有用。请告诉我进一步的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47002082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档