Estoy probando un modelo muy simple: ajustando un Normal donde supongo que sé la precisión, y solo quiero encontrar la media. El siguiente código parece ajustarse a la Normal correctamente. Pero después de ajustar, quiero muestrear del modelo, es decir, generar nuevos datos que sean similares a mi data
variable. Sé que puedo usar trace("mean")
para obtener muestras para la variable media. Pero, ¿cómo puedo obtener nuevas muestras del modelo en sí?
He mirado documentos, por ejemplo, http://pymc-devs.github.io/pymc/database.html#accessing-sampled-data . También he visto bastantes ejemplos, por ejemplo, los desastres mineros, y varios de los cuadernos de programación probabilística, y ninguno menciona esto. ¡Yo (más o menos un principiante de MCMC) esperaba que el muestreo del modelo ajustado fuera el punto central! ¿Qué me estoy perdiendo?
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")?