¿Stan (en particular, rstan) tiene instalaciones incorporadas para generar distribuciones posteriores predictivas?
No es difícil generar la distribución desde el ajuste estándar, pero prefiero no reinventar la rueda.
¿Stan (en particular, rstan) tiene instalaciones incorporadas para generar distribuciones posteriores predictivas?
No es difícil generar la distribución desde el ajuste estándar, pero prefiero no reinventar la rueda.
Respuestas:
De acuerdo con el Manual del usuario de Stan v2.2.0 (páginas 361–362):
En Stan, las simulaciones posteriores se pueden generar de dos maneras. El primer enfoque es tratar las variables predichas como parámetros y luego definir sus distribuciones en el bloque modelo. El segundo enfoque, que también funciona para variables discretas, es generar datos replicados utilizando generadores de números aleatorios en el bloque de cantidades generadas.
Usualmente uso el último.
La siguiente no es una respuesta exhaustiva, pero espero que sea mejor que ninguna respuesta. En mis propias aplicaciones, aplico verificaciones predictivas posteriores para examinar las predicciones del modelo para una sola medida dependiente que se ha generado a partir de un modelo lineal. Esto es simple en JAGS, pero algo más opaco en 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);
}
Debe haber una mejor manera de hacer esto, así que alguien publique una mejor respuesta. Pero el código anterior genera N distribuciones predictivas posteriores, una para cada observación. Hago esto para que se pueda encontrar una distribución predictiva de los extremos, pero si solo le interesa la cantidad predictiva posterior y_tilde
, puede prescindir de todos ellos. Para grandes conjuntos de datos, la solución anterior obviamente requiere demasiado espacio.