Questa è forse una domanda stupida.Definizione di una distribuzione PyMC personalizzata
Sto cercando di adattare i dati a un PDF molto strano utilizzando la valutazione MCMC in PyMC. Per questo esempio voglio solo capire come adattarsi ad una normale distribuzione dove inserisco manualmente il normale PDF. Il mio codice è:
data = [];
for count in range(1000): data.append(random.gauss(-200,15));
mean = mc.Uniform('mean', lower=min(data), upper=max(data))
std_dev = mc.Uniform('std_dev', lower=0, upper=50)
# @mc.potential
# def density(x = data, mu = mean, sigma = std_dev):
# return (1./(sigma*np.sqrt(2*np.pi))*np.exp(-((x-mu)**2/(2*sigma**2))))
mc.Normal('process', mu=mean, tau=1./std_dev**2, value=data, observed=True)
model = mc.MCMC([mean,std_dev])
model.sample(iter=5000)
print "!"
print(model.stats()['mean']['mean'])
print(model.stats()['std_dev']['mean'])
Gli esempi che ho trovato tutti utilizzano qualcosa come mc.Normal, o mc.Poisson o roba del genere, ma voglio per adattarsi alla funzione di densità commentata.
Qualsiasi aiuto sarebbe apprezzato.
Brillante, è stato molto utile, grazie mille. – stellographer
@jcrudy. Mi imbatto nella tua risposta quando cerco di definire il mio semplice priore. Per evitare di inquinare questa domanda, ho iniziato il mio [qui] (http://stackoverflow.com/questions/23198247/custom-priors-in-pymc), e mi chiedevo se potessi far luce su di esso. Grazie. –