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 m1o 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.