Стэн делает прогностические постеры?

9

Есть ли в stan (в частности, rstan) встроенные средства для генерации прогнозирующих апостериорных распределений?

Нетрудно сгенерировать распределение из соответствия stan, но я бы не стал изобретать велосипед.

скоро
источник
2
В конце есть секция сгенерированных количеств, которая, как предполагается, способна обрабатывать моделирование, но документация (по состоянию на версию 1.3, но версия 2 должна скоро выйти) не объясняет в деталях, как этого добиться. Вы могли бы рассмотреть вопрос о списке рассылки.
Джон

Ответы:

4

Согласно Руководству пользователя Stan v2.2.0 (стр. 361–362):

В Stan последующее моделирование может быть сгенерировано двумя способами. Первый подход состоит в том, чтобы рассматривать предсказанные переменные как параметры, а затем определять их распределения в блоке модели. Второй подход, который также работает для дискретных переменных, заключается в генерации реплицированных данных с использованием генераторов случайных чисел в блоке генерируемых количеств.

Я обычно использую последнее.

Авраам
источник
3

Следующее не является полным ответом, но, надеюсь, это лучше, чем отсутствие ответа. В моих собственных приложениях я применяю апостериорные прогностические проверки для проверки прогнозирования модели для единственной зависимой меры, которая была сгенерирована из линейной модели. Это просто в JAGS, но несколько более непрозрачно в 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);
}

Там должен быть лучший способ сделать это, поэтому кто-то, пожалуйста, опубликуйте лучший ответ. Но приведенный выше код генерирует N апостериорных предсказательных распределений, по одному на каждое наблюдение. Я делаю это так, чтобы можно было найти прогнозирующее распределение экстремумов, но если вас интересует только задняя прогнозирующая величина, y_tildeвы можете обойтись без всех них. Для больших наборов данных вышеуказанное решение, очевидно, слишком много места.

RNG
источник