Verfügt Stan (insbesondere Rstan) über integrierte Einrichtungen zur Erzeugung prädiktiver posteriorer Verteilungen?
Es ist nicht schwer, die Verteilung aus der Stan-Passform zu generieren, aber ich möchte das Rad lieber nicht neu erfinden.
Verfügt Stan (insbesondere Rstan) über integrierte Einrichtungen zur Erzeugung prädiktiver posteriorer Verteilungen?
Es ist nicht schwer, die Verteilung aus der Stan-Passform zu generieren, aber ich möchte das Rad lieber nicht neu erfinden.
Antworten:
Gemäß dem Stan-Benutzerhandbuch v2.2.0 (Seiten 361–362):
In Stan können posteriore Simulationen auf zwei Arten erzeugt werden. Der erste Ansatz besteht darin, die vorhergesagten Variablen als Parameter zu behandeln und dann ihre Verteilungen im Modellblock zu definieren. Der zweite Ansatz, der auch für diskrete Variablen funktioniert, besteht darin, replizierte Daten unter Verwendung von Zufallszahlengeneratoren im generierten Mengenblock zu generieren.
Ich benutze normalerweise letzteres.
Das Folgende ist keine gründliche Antwort, aber hoffentlich ist es besser als keine Antwort. In meinen eigenen Anwendungen wende ich posteriore Vorhersageprüfungen an, um Modellvorhersagen für ein einzelnes abhängiges Maß zu untersuchen, das aus einem linearen Modell generiert wurde. Dies ist in JAGS einfach, in Stan jedoch etwas undurchsichtiger.
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);
}
Es muss einen besseren Weg geben, also bitte jemand eine bessere Antwort posten. Der obige Code erzeugt jedoch N posteriore Vorhersageverteilungen, eine für jede Beobachtung. Ich mache das so, dass eine prädiktive Verteilung der Extrema gefunden werden kann, aber wenn Sie nur an der posterioren prädiktiven Größe interessiert sind y_tilde
, können Sie möglicherweise auf alle verzichten. Für große Datenmengen ist die obige Lösung offensichtlich zu platzintensiv.