(python)函数最小化,PyMC保留一个固定参数

(python)函数最小化,PyMC保留一个固定参数,python,pymc,minimization,Python,Pymc,Minimization,大家好,所有PYTHON用户(尤其是PyMC用户) 问题: 我想使用MCMC执行函数最小化。我的函数L(恰好是a-logGaussian)有N个变量。我想在一个变量上循环并保持它固定,在剩余的N-1个自由变量上采样L。其目的是在其多维参数空间中沿一个特定方向构建L的“轮廓”。因此,am对N-1自由参数的后验分布不感兴趣,而是对N-1参数的样本和函数L的相应值感兴趣 我的实施(示意图-无MWE): 我也试过了 J = Uniform('r', lower=15, upper=18, value=J

大家好,所有PYTHON用户(尤其是PyMC用户)

问题:
我想使用MCMC执行函数最小化。我的函数L(恰好是a-logGaussian)有N个变量。我想在一个变量上循环并保持它固定,在剩余的N-1个自由变量上采样L。其目的是在其多维参数空间中沿一个特定方向构建L的“轮廓”。因此,am对N-1自由参数的后验分布不感兴趣,而是对N-1参数的样本和函数L的相应值感兴趣

我的实施(示意图-无MWE):

我也试过了

J = Uniform('r', lower=15, upper=18, value=J_array, observed=True)
@deterministic
def L(J=J, a=a, b=b, c=c, r=r):
    return LL(J, a, b, c, r)
    
M = MCMC(L)

在所有情况下,
LL
都是一个类的实例,该类有一个
\uuuu调用\uuuu
方法,并且在所有情况下我都得到一个

TypeError: 'numpy.float64' object is not iterable
我对重复采样不感兴趣(因为我不关心后验概率)。
M=MCMC(loglike)
之后,我只想以马尔可夫方式为每个
J
抽取(比如)1000个变量值
a,b,c,r
,对L(J | a,b,c,r)进行采样。从中,我将提取最小L值及其相应的参数

更新 代码的正确形式为:

def model(J):
    a = Uniform('a', lower=0, upper=5)
    b = Uniform('b', lower=0, upper=5)
    c = Uniform('c', lower=0, upper=5)
    r = Uniform('r', lower=0, upper=5)
    
    @deterministic
    def loglike(J=J, a=a, b=b, c=c, r=r):
        return LL(a, b, J, r, c)
    
    return locals()
    
for J in J_array:
    M = MCMC(model(J))
这表明并非所有的
pymc
变量的父变量都必须是pymc分布变量

我仍然不知道这是否是通过MCMC采样实现函数最小化的最聪明的方法。我想听听不同意或只是有建议的读者的评论。
非常感谢所有用户

TypeError: 'numpy.float64' object is not iterable
def model(J):
    a = Uniform('a', lower=0, upper=5)
    b = Uniform('b', lower=0, upper=5)
    c = Uniform('c', lower=0, upper=5)
    r = Uniform('r', lower=0, upper=5)
    
    @deterministic
    def loglike(J=J, a=a, b=b, c=c, r=r):
        return LL(a, b, J, r, c)
    
    return locals()
    
for J in J_array:
    M = MCMC(model(J))