私は非常に単純なモデルを試しています。精度がわかっていると想定し、平均を求めたいだけの場合に法線をフィッティングします。以下のコードは、正常に正しく適合しているようです。しかし、フィッティング後、モデルからサンプリングしたい、つまり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