1

我正在尝试使用 pymc 从观察中学习潜在变量。一个简化的版本如下:

我想学习两个隐藏参数$\lambda_0, \lambda_1$,

而有两个分布 $X_0, X_1$ 分别使用这些参数:

$X_0 \sim Expon(\lambda_0)$, $X_1 \sim Expon(\lambda_1)$。

我没有对 $X_i$ 的观察。相反,我观察到这些变量的线性组合:$x_0^{(0)} + x_1^{(1)} + x_1^{(1)} = 6$, $x_0^{(1)} = 2$ .

我最初的方法是这样的,但我认为它不起作用:

import pymc

lambda0 = pymc.Uniform('lambda0', 0, 10)
lambda1 = pymc.Uniform('lambda1', 0, 10)
x00 = pymc.Exponential('x00', lambda0)
x01 = pymc.Exponential('x01', lambda0)
x10 = pymc.Exponential('x10', lambda1)
x11 = pymc.Exponential('x11', lambda1)
z = pymc.Normal('z', mu=[x00+x10+x11, x01], tau=1.0, value=[6, 2], observed=True)

model = pymc.Model([lambda0, lambda1, x00, x01, x10, x11, z])
mcmc = pm.MCMC(model)
mcmc.sample(10000)

你能帮我做这个玩具例子吗?

4

1 回答 1

0

在将它们用作参数之前,您应该创建指数变量的确定性。尝试这个:

mu = [x00+x10+x11, x01]
z = pymc.Normal('z', mu=mu, tau=1.0, value=[6, 2], observed=True)

此外,您不需要同时实例化 aModelMCMC对象。只是后者:

mcmc = pymc.MCMC([lambda0, lambda1, mu, z])
于 2013-11-21T23:20:28.440 回答