PYMC具有父类作为类属性的确定性变量

时间:2016-02-18 00:23:51

标签: python python-2.7 pymc

我正在尝试创建一个如下所示的PYMC确定性变量。

@pymc.deterministic
def tau(s = sigma):
    return 1.0/(s**2)

但是,在我的例子中,模型参数(PYMC随机变量)被定义为类属性。因此,sigma只能通过类方法访问(通过self.sigma)。试图使这个类方法像下面的

@pymc.deterministic
def tau(self, s = None):
    sigma = self.sigma
    return 1.0/(sigma**2)

抛出错误(显然)。

  

ValueError:确定性tau:没有为以下标签提供父级:self

如何创建PYMC确定性变量,其父项是类的属性?

P.S。不确定是否重要,但我使用的是PYMC 2.x

1 个答案:

答案 0 :(得分:1)

感谢this温和相关的问题,我能够找到一种方法来将类属性捕获为PYMC确定性变量的父项。解决方案是使用PYMC的Lambda类,它将Python lambda函数转换为确定性实例。这似乎是一种相当干净的方式。

self.tau = pymc.Lambda('tau', lambda s = self.sigma: 1.0/(s**2))