Apakah stan bisa melakukan hal-hal yang bersifat prediktif?

9

Apakah stan (khususnya, rstan) memiliki fasilitas bawaan untuk menghasilkan distribusi posterior prediktif?

Tidak sulit untuk menghasilkan distribusi dari stan fit, tetapi saya lebih suka tidak menemukan kembali roda.

Segera
sumber
2
Ada bagian jumlah yang dihasilkan pada akhir yang seharusnya dapat menangani simulasi, tetapi dokumentasi (pada ver. 1.3, tetapi ver. 2 harus segera keluar) tidak menjelaskan secara rinci bagaimana untuk mencapai ini. Anda mungkin mempertimbangkan untuk meminta milis.
Yohanes

Jawaban:

4

Menurut panduan Pengguna Stan v2.2.0 (halaman 361–362 ):

Di Stan, simulasi posterior dapat dihasilkan dengan dua cara. Pendekatan pertama adalah memperlakukan variabel yang diprediksi sebagai parameter dan kemudian menentukan distribusinya dalam blok model. Pendekatan kedua, yang juga berfungsi untuk variabel diskrit, adalah menghasilkan data yang direplikasi menggunakan generator bilangan acak dalam blok kuantitas yang dihasilkan.

Saya biasanya menggunakan yang terakhir.

Avraham
sumber
3

Berikut ini bukan jawaban yang menyeluruh, tapi mudah-mudahan ini lebih baik daripada tidak ada jawaban. Dalam aplikasi saya sendiri, saya menerapkan pemeriksaan prediktif posterior untuk memeriksa prediksi model untuk ukuran dependen tunggal yang telah dihasilkan dari model linier. Ini sederhana di JAGS, tetapi agak lebih buram di 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);
}

Pasti ada cara yang lebih baik untuk melakukan ini, jadi tolong kirimkan jawaban yang lebih baik. Tetapi kode di atas menghasilkan distribusi prediksi N posterior, satu untuk setiap pengamatan. Saya melakukan ini sehingga distribusi prediksi ekstrem dapat ditemukan, tetapi jika Anda hanya tertarik pada kuantitas prediksi posterior y_tildeAnda mungkin dapat melakukannya tanpa semuanya. Untuk kumpulan data besar, solusi di atas jelas terlalu intensif-ruang.

RNG
sumber