スタンは予測的事後を行いますか?


9

stan(特にrstan)には、予測事後分布を生成する組み込みの機能がありますか?

スタンフィットから分布を生成することは難しくありませんが、ホイールを再発明したくありません。


2
シミュレーションを処理できるはずの生成された量のセクションが最後にありますが、ドキュメント(ver 1.3以降、ver 2はまもなくリリースされる予定です)では、これを達成する方法について詳しく説明されていません。メーリングリストに質問することを検討してください。
ジョン

回答:


4

よると、スタンユーザーマニュアルバージョン2.2.0(ページ361から362まで):

スタンでは、事後シミュレーションは2つの方法で生成できます。最初のアプローチは、予測された変数をパラメーターとして扱い、モデルブロックでそれらの分布を定義することです。離散変数に対しても機能する2番目のアプローチは、生成された数量ブロックで乱数ジェネレーターを使用して複製データを生成することです。

私は通常後者を使用します。


3

以下は完全な答えではありませんが、うまくいけば、答えがないよりはましです。私自身のアプリケーションでは、事後予測チェックを適用して、線形モデルから生成された単一の従属メジャーのモデル予測を調べます。これはJAGSでは単純ですが、スタンではやや不透明です。

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);
}

これを行うにはもっと良い方法があるに違いないので、誰かがより良い答えを投稿してください。ただし、上記のコードは、観測ごとに1つ、N個の事後予測分布を生成します。これを行うのは、極値の予測分布を見つけるy_tildeことができるようにするためですが、事後予測量のみに関心がある場合は、それらすべてを使用しなくても実行できる可能性があります。大きなデータセットの場合、上記のソリューションは明らかにスペースを使いすぎます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.