Mari kita asumsikan bahwa Anda ingin mengambil sampel di dalamnya
x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1
Ini tidak membuat perbedaan, karena titik sampel akan tetap berada di area yang Anda minta dengan probabilitas tinggi.
Sekarang Anda tinggal mengambil sampel titik dari simpleks . Dalam contoh 3d Anda mendapatkan simpleks (segitiga) 2d direalisasikan dalam 3d.
Cara memilih titik secara seragam secara acak dibahas dalam posting blog ini (lihat komentar).
Untuk masalah Anda, itu berarti Anda mengambil angka acak dari interval ( 0 , 1 ) , lalu Anda menambahkan 0 dan 1 untuk mendapatkan daftar n + 1 angka. Anda mengurutkan daftar dan kemudian Anda merekam perbedaan antara dua elemen berturut-turut. Ini memberi Anda daftar nomor n yang akan berjumlah hingga 1 . Apalagi pengambilan sampel ini seragam. Gagasan ini dapat ditemukan di Donald B. Rubin, The Bayesian bootstrap Ann. Statist. 9, 1981, 130-134.n−1(0,1)01n+1n1
Sebagai contoh ( ) Anda memiliki tiga angka acak maka Anda mendapatkan urutan yang diurutkan dan ini memberikan perbedaan , dan dengan membangun keempat angka ini berjumlah hingga 1.n=40.4 0.2 0.1
0 0.1 0.2 0.4 1
0.1 0.1 0.2 0.6
Pendekatan lain adalah sebagai berikut: sampel pertama dari hypercube (yaitu Anda lupa tentang x+y+z=1
) dan kemudian menormalkan titik sampel. Normalisasi adalah proyeksi dari silinderperangkat ke d - 1 -simpleks. Harus jelas secara intuitif bahwa titik-titik di pusat simpleks memiliki lebih banyak "titik-gambar-awal" daripada di luardd−1. Oleh karena itu, jika Anda mengambil sampel secara seragam dari hypercube, ini tidak akan memberi Anda sampel seragam dalam simpleks. Namun, jika Anda mengambil sampel dari hypercube dengan Distribusi Eksponensial yang sesuai, maka efek ini akan dibatalkan. Gambar ini memberi Anda gambaran bagaimana kedua metode akan sampel. Namun, saya lebih suka metode "pengurutan" karena bentuknya yang sederhana. Ini juga lebih mudah diimplementasikan.