假设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()
的输出时,我无法弄清楚如何将其合并到模型中。谁能指导我?