Ich versuche ein sehr einfaches Modell: Anpassen eines Normalen, bei dem ich davon ausgehe, dass ich die Präzision kenne und nur den Mittelwert ermitteln möchte. Der folgende Code scheint korrekt zum Normal zu passen. Aber nach dem Anpassen möchte ich aus dem Modell eine Stichprobe erstellen, dh neue Daten generieren, die meiner data
Variablen ähnlich sind. Ich weiß, dass ich trace("mean")
Stichproben für die mittlere Variable erhalten kann. Aber wie kann ich neue Muster vom Modell selbst erhalten?
Ich habe mir Dokumente angesehen, z . B. http://pymc-devs.github.io/pymc/database.html#accessing-sampled-data . Ich habe mir auch einige Beispiele angesehen, z. B. die Bergbaukatastrophen und einige aus den Notizbüchern zur probabilistischen Programmierung, und keine erwähnt dies. Ich (mehr oder weniger ein MCMC-Anfänger) hatte erwartet, dass die Probenahme aus dem angepassten Modell der springende Punkt war! Was vermisse ich?
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")?