Sto provando un modello molto semplice: adattare una Normale dove presumo di conoscere la precisione e voglio solo trovare la media. Il codice seguente sembra adattarsi correttamente al normale. Ma dopo il montaggio, voglio campionare dal modello, ovvero generare nuovi dati che sono simili alla mia data
variabile. So che posso usare trace("mean")
per ottenere campioni per la variabile media. Ma come posso ottenere nuovi campioni dal modello stesso?
Ho esaminato i documenti, ad esempio http://pymc-devs.github.io/pymc/database.html#accessing-sampled-data . Ho anche preso in considerazione alcuni esempi, ad esempio le catastrofi minerarie, e diversi dai quaderni di programmazione probabilistica, e nessuno menziona questo. Io (più o meno un principiante MCMC) mi aspettavo che il campionamento dal modello montato fosse il punto! Cosa mi sto perdendo?
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")?