Dalam sebuah artikel penelitian tentang analisis sensitivitas model persamaan diferensial biasa dari sistem dinamis, penulis memberikan distribusi parameter model sebagai distribusi Normal (rata-rata = 1e-4, std = 3e-5) terpotong ke kisaran [0,5e -4 1.5e-4]. Dia kemudian menggunakan sampel dari distribusi terpotong ini untuk simulasi model. Apa artinya memiliki distribusi terpotong dan sampel dari distribusi terpotong ini?
Saya dapat menemukan dua cara untuk melakukan ini:
- Sampel dari distribusi Normal tetapi abaikan semua nilai acak yang berada di luar rentang yang ditentukan sebelum simulasi.
- Entah bagaimana, dapatkan distribusi "Truncated Normal" khusus dan dapatkan sampel darinya.
Apakah ini pendekatan yang valid dan setara?
Saya percaya pada kasus pertama, jika ada yang merencanakan eksperimental cdf / pdf sampel, itu tidak akan terlihat seperti distribusi normal karena kurva tidak meluas ke .
qnorm
dalam loop R bukan ide yang baik.Metode ini benar, tetapi, seperti yang disebutkan oleh @ Xi'an dalam jawabannya, akan membutuhkan waktu yang lama ketika kisarannya kecil (lebih tepatnya, ketika ukurannya kecil di bawah distribusi normal).
Simulasikan distribusi terpotong dengan menggunakan sampling penting
Ini memberikan perkiraan fungsi kumulatif target. Kami dapat dengan cepat mendapatkan dan merencanakannya dengan
spatsat
paket:Metode lain: pengambilan sampel transformasi invers cepat
Olver dan Townsend mengembangkan metode pengambilan sampel untuk kelas luas distribusi berkelanjutan. Ini diimplementasikan di perpustakaan chebfun2 untuk Matlab serta perpustakaan ApproxFun untuk Julia . Baru-baru ini saya menemukan perpustakaan ini dan kedengarannya sangat menjanjikan (tidak hanya untuk pengambilan sampel acak). Pada dasarnya ini adalah metode inversi tetapi menggunakan perkiraan kuat dari cdf dan invers cdf. Input adalah fungsi kepadatan target hingga normalisasi.
Sampel hanya dihasilkan oleh kode berikut:
sumber