当PYMC3中的观测值是RV的非标准随机函数时,如何建模

时间:2018-07-03 15:26:54

标签: pymc3

假设X1是从泊松分布中提取的,而X2是从X1的非标准分布中提取的。给定X1和参数theta,我们有一个返回X2的函数。

一个非常简化的示例如下:

def f(n, theta):
    ret = 0
    for i in range(n):
        if np.random.rand()<theta:
            ret += 1
    return ret

trials = 500
theta = 0.35

X1 = []
X2 = []
for i in range(trials):
    x1 = np.random.poisson(20)
    x2 = f(x1, theta)

    X1.append(x1)
    X2.append(x2)

X1 = np.array(X1)
X2 = np.array(X2)

我想找到给定数据的lambda的后验分布。如何使用pymc3对其建模。函数f()不是标准发行版,相当复杂。因此,我没有logp可以使用DensityDist。我也不能使用theano.compile.as_op,因为当观察到f()的输出时,我无法弄清楚如何将其合并到模型中。谁能指导我?

0 个答案:

没有答案