Dato che sono un ingegnere del software che cerca di imparare più statistiche, dovrai perdonarmi prima ancora di iniziare, questo è un territorio davvero nuovo ...
Ho imparato PyMC e ho lavorato su alcuni esempi davvero (davvero) semplici. Un problema per cui non riesco a lavorare (e non riesco a trovare alcun esempio correlato) è quello di adattare un modello ai dati generati da due distribuzioni normali.
Supponiamo di avere 1000 valori; 500 generati da a Normal(mean=100, stddev=20)
e altri 500 generati da a Normal(mean=200, stddev=20)
.
Se voglio adattare un modello a loro, cioè determinare i due mezzi e la singola deviazione standard, usando PyMC. So che è qualcosa sulla falsariga di ...
mean1 = Uniform('mean1', lower=0.0, upper=200.0)
mean2 = Uniform('mean2', lower=0.0, upper=200.0)
precision = Gamma('precision', alpha=0.1, beta=0.1)
data = read_data_from_file_or_whatever()
@deterministic(plot=False)
def mean(m1=mean1, m2=mean2):
# but what goes here?
process = Normal('process', mu=mean, tau=precision, value=data, observed=True)
cioè, il processo di generazione è normale, ma mu è uno dei due valori. Semplicemente non so come rappresentare la "decisione" tra se un valore viene m1
o m2
.
Forse sto solo prendendo completamente l'approccio sbagliato per modellare questo? Qualcuno può indicarmi un esempio? Riesco a leggere BUG e JAGS, quindi tutto è ok davvero.