Stan (in particolare, Iran) ha strutture integrate per generare distribuzioni posteriori predittive?
Non è difficile generare la distribuzione dall'innesto standard, ma preferirei non reinventare la ruota.
Stan (in particolare, Iran) ha strutture integrate per generare distribuzioni posteriori predittive?
Non è difficile generare la distribuzione dall'innesto standard, ma preferirei non reinventare la ruota.
Risposte:
Secondo il manuale utente Stan v2.2.0 (pagine 361–362):
A Stan, le simulazioni posteriori possono essere generate in due modi. Il primo approccio consiste nel trattare le variabili previste come parametri e quindi definire le loro distribuzioni nel blocco del modello. Il secondo approccio, che funziona anche con variabili discrete, è generare dati replicati usando generatori di numeri casuali nel blocco quantità generato.
Di solito uso quest'ultimo.
Quella che segue non è una risposta completa, ma si spera sia meglio di nessuna risposta. Nelle mie applicazioni applico controlli predittivi posteriori per esaminare le previsioni del modello per una singola misura dipendente che è stata generata da un modello lineare. Questo è semplice in JAGS, ma un po 'più opaco in Stan.
data{
int<lower=1> N; // no. rows
real x[N]; // predictor
real y[N]; // dependent variable
}
parameters{
real alpha; // int.
real beta; // slope
real<lower=0> sigma_e; // resid. var.
real y_tilde[N]; // post. pred.
}
model{
real mu[N];
for(i in 1:N){
mu[i] <- alpha + beta*x[i];
}
y ~ normal(mu,sigma_e); //lik
y_tilde ~ normal(mu,sigma_e);
alpha ~ normal(0,5);
beta ~ normal(0,5);
sigma_e ~ cauchy(0,5);
}
generated quantities{
real minimum;
real maximum;
minimum <- min(y_tilde);
maximum <- max(y_tilde);
}
Ci deve essere un modo migliore per farlo, quindi qualcuno per favore pubblica una risposta migliore. Ma il codice precedente genera N distribuzioni predittive posteriori, una per ogni osservazione. Faccio questo in modo che sia possibile trovare una distribuzione predittiva di extrema, ma se sei interessato solo alla quantità predittiva posteriore y_tilde
potresti essere in grado di farne a meno. Per i set di dati di grandi dimensioni, la soluzione di cui sopra è ovviamente troppo dispendiosa in termini di spazio.