Bagaimana saya bisa mengambil sampel secara efisien dari distribusi berikut?
Jika tidak terlalu besar maka penolakan sampel mungkin merupakan pendekatan terbaik, tetapi saya tidak yakin bagaimana untuk melanjutkan ketika besar. Mungkin ada beberapa perkiraan asimptotik yang bisa diterapkan?k
random-generation
beta-distribution
truncation
pengguna1502040
sumber
sumber
Jawaban:
Cara paling sederhana, dan yang paling secara umum, yang berlaku untuk setiap distribusi terpotong (dapat juga digeneralisasi untuk pemotongan di kedua sisi), adalah dengan menggunakan invers transformasi sampel . Jika adalah distribusi bunga kumulatif, maka atur dan ambilp 0 = F ( k )F p0=F(k)
di mana adalah sampel dari terpotong kiri pada . Fungsi kuantil akan memetakan probabilitas untuk sampel dari . Karena kami mengambil nilai hanya dari "area" yang cocok dengan nilai distribusi beta dari wilayah yang tidak terpotong, Anda hanya akan mengambil sampel nilai-nilai itu.F k F - 1 F UX F k F−1 F U
Metode ini diilustrasikan pada gambar di bawah ini di mana area terpotong ditandai oleh persegi panjang abu-abu, titik merah diambil dari distribusi dan kemudian ditransformasikan ke sampel.B ( 2 , 8 )U(p0,1) B(2,8)
sumber
scipy.special.betainc
untuk kebalikannya dan di R adapbeta
.qbeta
untuk fungsi kuantil dalam R.)Jawaban @ Tim menunjukkan bagaimana inverse transform sampling dapat diadaptasi untuk distribusi terpotong, membebaskan run-time dependensi pada ambang batas . Efisiensi lebih lanjut dapat diperoleh dengan menghindari evaluasi numerik yang mahal dari fungsi beta quantile & menggunakan sampel inverse transform sebagai bagian dari sampel penolakan.k
Fungsi kepadatan distribusi beta dengan parameter bentuk & terpotong dua kali lipat pada (untuk sedikit lebih umum)α β k1<k2
Ambil bagian kepadatan yang meningkat secara monoton antara & : untuk itu log-cekung, sehingga Anda dapat menyelimutinya dengan fungsi eksponensial yang digambar dengan garis singgung untuk titik di sepanjang itu:xL xU α,β>1
Temukan dengan mengatur gradien kepadatan log samaλ
Amplop terbaik untuk sampel penolakan adalah yang memiliki area terkecil di bawahnya. Area ini adalah Mengganti ekspresi dalam untuk & , & dropping faktor konstan memberi
Menulis turunan dibiarkan sebagai latihan untuk pembaca atau komputer mereka. Algoritma pencari akar apa pun kemudian dapat digunakan untuk menemukan yang . xdQdQdx x dQdx=0
Hal yang sama berlaku, mutatis mutandis, untuk mengurangi kepadatan bagian secara monoton. Jadi distribusi beta terpotong dapat terselubung dengan rapi oleh dua fungsi eksponensial, katakanlah, satu dari ke mode & satu dari mode ke , siap untuk pengambilan sampel penolakan. (Untuk variabel acak seragam dipotong , memiliki terpotong eksponensial distribusi dengan parameter tingkat .)k 2 U - log ( 1 - U )k1 k2 U λ−log(1−U)λ λ
Keindahan dari pendekatan ini adalah bahwa semua kerja keras sudah diatur. Setelah fungsi amplop ditetapkan, konstanta normalisasi untuk kepadatan beta terpotong dihitung, yang tersisa adalah menghasilkan varian acak yang seragam, & melakukan padanya beberapa operasi aritmetika sederhana, log & kekuatan, & perbandingan. Mengencangkan fungsi amplop — dengan garis horizontal atau kurva yang lebih eksponensial — tentu saja dapat mengurangi jumlah penolakan.
sumber