나는 매우 간단한 모델을 시도하고 있습니다. 정밀도를 알고 있다고 가정하는 법선을 피팅하고 평균을 찾고 싶습니다. 아래 코드는 Normal에 올바르게 맞는 것 같습니다. 그러나 피팅 후 모델에서 샘플링하고 싶습니다. 예를 들어 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")?