我想为参数定义一个指数先验,如下所示
因此我在pymc中定义了它
@pm.stochastic
def MASS(value=math.pow(10,15), rate = math.pow(10,15)):
"""mass is a stochastic parameter with exponential distribution.p(M)~exp(-M/10^15)"""
return pm.exponential_like(value, rate)
@pm.potential
def MASS_bound(MASS=MASS):
if ((MASS >= math.pow(10,13)) and (MASS < math.pow(10,16))):
return 0.0
else:
return -np.inf
我也希望它满足以下约束
但是当我运行我的 MCMC 代码时发生的事情MASS
变化非常缓慢,而我希望它在 和 之间以这三个数量级更快地1e+13
变化1e16
。我如何定义我的先验以便在参数空间中进行相当大的更改?