Pemeriksaan prediktif posterior setelah inferensi ABC untuk beberapa parameter

8

Saya relatif baru dalam statistik Bayesian jadi harap bersikap lembut.

Saya baru saja melakukan Perkiraan Bayesian Computation (ABC) untuk inferensi model multi-parameter. Sekarang saya mencari untuk melakukan pemeriksaan prediktif posterior pada parameter yang telah disimpulkan.

Apa yang ingin saya ketahui adalah bahwa, ketika pengambilan sampel dari posterior untuk menghasilkan statistik ringkasan untuk pemeriksaan prediktif posterior, apakah saya mengambil sampel secara independen dari posisi marginal untuk setiap parameter, atau apakah saya seharusnya sampel nilai parameter bersama-sama (yaitu sampel dari kombinasi parameter tepat yang memunculkan statistik ringkasan yang diterima).

Model ini mengandung banyak parameter (lebih dari 6) dan saya tertarik dengan marginal posteriors untuk setiap parameter. Saya harap pertanyaan ini masuk akal.

David
sumber

Jawaban:

8

Pertanyaan bagus untuk pendatang baru !!!

Algoritma ABC Anda memberi Anda sampel θ1,,θMdari distribusi ABC-posterior. Untuk setiap komponen vektorθ, dengan demikian Anda mendapatkan sampel ukuran Mdari posterior-marjinal ABC. Misalnya di sini adalah contoh mainan tentang mean-variance normal posterior, ketika menggunakan median dan mad sebagai ringkasan:

#normal data with 100 observations 
x=rnorm(100)
#observed summaries
sumx=c(median(x),mad(x))

#normal x gamma prior
priori=function(N){
  return(cbind(rnorm(N,sd=10),1/sqrt(rgamma(N,shape=2,scale=5))))
  }

ABC=function(N){

  prior=priori(N)  #reference table

  #pseudo-data
  summ=matrix(0,N,2)
  for (i in 1:N){
    xi=rnorm(100)*prior[i,2]+prior[i,1]
    summ[i,]=c(median(xi),mad(xi)) #summaries
    }

  #normalisation factor for the distance
  mads=c(mad(summ[,1]),mad(summ[,2]))

  #distance
  dist=(abs(sumx[1]-summ[,1])/mads[1])+(abs(sumx[2]-summ[,2])/mads[2])

  #selection
  posterior=prior[dist<quantile(dist,.05),]

  return(posterior)
  }

Jika Anda merencanakan

res=ABC(10^5);hist(res[,1])

Anda akan mendapatkan posterior-ABC marginal untuk rata-rata normal.

Namun, jika Anda ingin melakukan pemeriksaan prediktif posterior, Anda tidak dapat membuat satu komponen posterior Anda sekaligus untuk mendapatkan data semu dan ringkasan yang sesuai. Anda perlu kedua mean dan varians untuk mendapatkan sampel normal baru! Jadi kode R saya kemudian

postsample=res[sample(1:length(res[,1]),10^3),]

untuk mengambil sampel dari ABC-posterior dan pseudo-data kemudian akan dihasilkan seperti sebelumnya:

  #pseudo-data
  summ=matrix(0,M,2)
  for (i in 1:M){
    xi=rnorm(100)*postsample[i,2]+postsample[i,1]
    summ[i,]=c(median(xi),mad(xi)) #summaries
    }
Xi'an
sumber
1
Terima kasih banyak atas jawabannya. Contoh script R Anda benar-benar membuatnya jelas bagi saya. Setelah saya memposting pertanyaan itu saya berpikir lebih hati-hati tentang apa yang saya tanyakan dan saya beringsut ke arah kesimpulan yang Anda berikan, jadi sangat bagus untuk memiliki Anda mengkonfirmasi untuk saya :-)
David
1
@ Xi'an: Selesai. Terima kasih. Saya masih baru di situs ini!
David
(Juga baru untuk masalah dan ABC, saya mungkin benar-benar di luar lingkup) Dari jawaban @ Xi'an, tidak terlalu jelas bagi saya apa Madalah. Saya kira itu seharusnya jumlah pemeriksaan posterior yang ingin Anda jalankan, bukan? dan jika saya benar maka itu tidak terkait denganM di thetaMtentukan di bagian pertama, yang merupakan jumlah partikel yang dipilih oleh ABC kan? Ini membawa saya ke pertanyaan lain: dalam jawaban Anda @ Xi'an, Anda sampel103partikel dari posisi luar. Menjalankan kode Anda, ABC mengembalikan saya 5×103partikel Apakah ada aturan untuk memilih berapa banyak posterior yang harus diperiksa?
Simon C.
Hai Robert, jika Anda bisa menjawabnya, itu akan sangat dihargai: stats.stackexchange.com/questions/468189/…
Bayesian Newbie