Menggambar dari distribusi Dirichlet

25

Katakanlah kita memiliki distribusi Dirichlet dengan parameter vektor -dimensional . Bagaimana saya bisa menggambar sampel ( vektor dimensi) dari distribusi ini? Saya membutuhkan (mungkin) penjelasan sederhana.Kα=[α1,α2,...,αK]K

pengguna1315305
sumber

Jawaban:

25

Pertama, gambar sampel acak independen dari distribusi Gamma masing-masing dengan kepadatanKy1,,yK

Gamma(αi,1)=yiαi1eyiΓ(αi),

dan kemudian atur

xi=yij=1Kyj.

Sekarang, akan mengikuti distribusi Dirichletx1,...,xK

The Wikipedia halaman pada distribusi Dirichlet memberitahu anda bagaimana untuk sampel dari distribusi Dirichlet.

Juga, di Rperpustakaan MCMCpackada fungsi untuk pengambilan sampel variabel acak dari distribusi Dirichlet.

Glen_b -Reinstate Monica
sumber
2
Implementasi fungsi untuk generasi acak dari Dirichlet dapat didanai juga di cran.r-project.org/web/packages/extraDistr
Tim
2

Metode sederhana (walaupun tidak tepat) terdiri dari menggunakan fakta bahwa menggambar distribusi Dirichlet setara dengan eksperimen guci Polya. (Menggambar dari satu set bola berwarna dan setiap kali Anda menggambar bola, Anda memasukkannya kembali ke dalam guci dengan bola kedua dengan warna yang sama)

Pertimbangkan parameter Dirichlet Anda sebagai distribusi yang tidak dinormalisasi di atas i.αi

Kemudian :

ulangi N kali

-> gambar i menggunakan distribusi multinomialαi

-> tambahkan 1 keαi

dan ulangi

Normalisasikan untuk mendapatkan distribusi Andaα

Jika saya tidak salah, metode itu tepat asimptotik. Tetapi karena N terbatas, Anda tidak akan pernah menarik beberapa distribusi dengan probabilitas sebelumnya yang sangat kecil (sedangkan Anda harus menggambar mereka dengan frekuensi yang sangat kecil). Saya kira itu mungkin memuaskan dalam kebanyakan kasus dengan N = K.10.

Arnaud Mégret
sumber
Saya menduga ini adalah cara np.random.dirichletyang diterapkan, karena memang menghasilkan nol tepat dalam vektor probabilitas sampel, meskipun vektor tersebut tidak termasuk dalam dukungan Dirichlet. Inilah yang membuat saya di sini.
Eli Korvigo