Há uma seção de quantidades geradas no final, que deve ser capaz de lidar com a simulação, mas a documentação (a partir da versão 1.3, mas a versão 2 deve sair em breve) não explica em detalhes como fazer isso. Você pode considerar pedir a lista de discussão.
Em Stan, simulações posteriores podem ser geradas de duas maneiras. A primeira abordagem é tratar as variáveis previstas como parâmetros e depois definir suas distribuições no bloco do modelo. A segunda abordagem, que também funciona para variáveis discretas, é gerar dados replicados usando geradores de números aleatórios no bloco de quantidades geradas.
O seguinte não é uma resposta completa, mas espero que seja melhor do que nenhuma resposta. Em minhas próprias aplicações, aplico verificações preditivas posteriores para examinar as previsões do modelo para uma única medida dependente gerada a partir de um modelo linear. Isso é simples no JAGS, mas um pouco mais opaco no 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);
}
Deve haver uma maneira melhor de fazer isso, para que alguém poste uma resposta melhor. Mas o código acima gera N distribuições preditivas posteriores, uma para cada observação. Faço isso para que seja possível encontrar uma distribuição preditiva de extremos, mas se você estiver interessado apenas na quantidade preditiva posterior, y_tildepoderá conseguir sem todas elas. Para conjuntos de dados grandes, a solução acima é obviamente muito ocupada em espaço.
Respostas:
De acordo com o Stan User manual v2.2.0 (páginas 361–362):
Eu costumo usar o último.
fonte
O seguinte não é uma resposta completa, mas espero que seja melhor do que nenhuma resposta. Em minhas próprias aplicações, aplico verificações preditivas posteriores para examinar as previsões do modelo para uma única medida dependente gerada a partir de um modelo linear. Isso é simples no JAGS, mas um pouco mais opaco no Stan.
Deve haver uma maneira melhor de fazer isso, para que alguém poste uma resposta melhor. Mas o código acima gera N distribuições preditivas posteriores, uma para cada observação. Faço isso para que seja possível encontrar uma distribuição preditiva de extremos, mas se você estiver interessado apenas na quantidade preditiva posterior,
y_tilde
poderá conseguir sem todas elas. Para conjuntos de dados grandes, a solução acima é obviamente muito ocupada em espaço.fonte