我正在尝试一个非常简单的模型:在假设我知道精度的情况下拟合法线,我只想找到均值。下面的代码似乎正确适合普通。但是在拟合之后,我想从模型中采样,即生成类似于我的data
变量的新数据。我知道我可以trace("mean")
用来获取均值变量的样本。但是如何从模型本身获取新样本?
我看过文档,例如http://pymc-devs.github.io/pymc/database.html#accessing-sampled-data。我还查看了很多示例,例如采矿灾难,以及概率编程笔记本中的一些示例,而没有一个提及。我(或多或少是MCMC初学者)期望从拟合模型中取样才是重点!我想念什么?
from pymc import *
data = np.array([-1, 0, 4, 0, 2, -2, 1, 0, 0, 2, 1, -3, -1, 0, 0, 1, 0, 1])
mean = Uniform("mean", -4, 4)
precision = 2.0**-2
obs = Normal("obs", mean, precision, value=data, observed=True)
model = Model( {"mean": mean, "obs": obs})
mcmc = MCMC(model)
mcmc.sample(10000, 1000, 1)
# I can get samples for the "mean" variable
mean_samples = mcmc.trace("mean")[:]
hist(mean_samples)
# but how can I do the equivalent of mcmc.trace("obs")?
正是我的问题!想知道是否在pymc3中简化了预测抽样...
—
Vladislavs Dovgalecs