Metode ini sangat sederhana, jadi saya akan menjelaskannya dengan kata-kata sederhana. Pertama, ambil fungsi distribusi kumulatif dari beberapa distribusi yang ingin Anda sampel. Fungsi ini mengambil input beberapa nilai x dan memberi tahu Anda berapa probabilitas memperoleh X ≤ x . BegituFXxX≤ x
FX( x ) = Pr ( X≤ x ) = p
kebalikan dari fungsi fungsi tersebut, akan mengambil p sebagai input dan mengembalikan x . Perhatikan bahwa p 's secara seragam terdistribusi - ini dapat digunakan untuk pengambilan sampel dari setiap F X jika Anda tahu F - 1 X . Metode ini disebut inverse transform sampling . Idenya sangat sederhana: mudah untuk mengambil sampel nilai secara seragam dari U ( 0 , 1 ) , jadi jika Anda ingin sampel dari beberapa F X , ambil saja nilai u ∼F- 1XhalxhalFXF- 1XU( 0 , 1 )FX dan lewati kamu melalui F - 1 X untuk mendapatkan x 'su ∼ U( 0 , 1 )kamuF- 1Xx
F- 1X( u ) = x
atau dalam R (untuk distribusi normal)
U <- runif(1e6)
X <- qnorm(U)
Untuk memvisualisasikannya lihat CDF di bawah ini, secara umum, kami memikirkan distribusi dalam hal melihat sumbu untuk probabilitas nilai dari x- sumbu. Dengan metode pengambilan sampel ini kami melakukan yang sebaliknya dan mulai dengan "probabilitas" dan menggunakannya untuk memilih nilai yang terkait dengannya. Dengan distribusi diskrit, Anda memperlakukan U sebagai garis dari 0 hingga 1 dan menetapkan nilai berdasarkan di mana beberapa titik u terletak pada garis ini (mis. 0 jika 0 ≤ u < 0,5 atau 1 jika 0,5 ≤ u ≤ 1 untuk pengambilan sampel dari ByxU01kamu00 ≤ u < 0,510,5 ≤ u ≤ 1 ).B e r n o u l l i (0,5)
Sayangnya, ini tidak selalu mungkin karena tidak setiap fungsi memiliki kebalikannya, misalnya Anda tidak dapat menggunakan metode ini dengan distribusi bivariat. Itu juga tidak harus menjadi metode yang paling efisien dalam semua situasi, dalam banyak kasus algoritma yang lebih baik ada.
Anda juga bertanya apa distribusi . Karena F - 1 X adalah kebalikan dari F X , maka F X ( F - 1 X ( u ) ) = u dan F - 1 X ( F X ( x ) ) = x , jadi ya, nilai yang diperoleh dengan menggunakan metode tersebut memiliki distribusi yang sama seperti X . Anda dapat memeriksanya dengan simulasi sederhanaF- 1X( kamu )F- 1XFXFX( F- 1X( u ) ) = uF- 1X( FX( x ) ) = xX
U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)