O stan faz posteriores preditivos?


9

Stan (em particular, rstan) possui instalações integradas para gerar distribuições posteriores preditivas?

Não é difícil gerar a distribuição do padrão, mas prefiro não reinventar a roda.


2
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.
John

Respostas:


4

De acordo com o Stan User manual v2.2.0 (páginas 361–362):

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.

Eu costumo usar o último.


3

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.