拒絕采樣


高斯分布的PDF:

$f(x)= \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^{2}}{2\sigma^{2}}}$

其中$\mu$是期望,$\sigma^2$為標准方差,記為$X \sim \mathcal{N}(0,0.5)$

*****樣本容量無限增大,分組的組距無限縮小,那么頻率分布直方圖,就會無限接近於一條光滑曲線,即總體密度曲線PDF*************

如:

 

 

 


 

給定一個分布$p(z)$,對該分布進行拒絕采樣,首先定義個proposal distribution,定義為q(z), 這個分布是比較容易實現的,如高斯分布、均勻分布.

首先從這個簡單的分布采樣一些點出來,我們這里假設從一個高斯分布中采樣點,$\textit{X} \sim \mathcal{N}(1.4,1.2)$, 代碼實現:

 1 z = np.random.normal(loc = 1.4,scale = 1.2, size = size) // size = 1e7

做頻率直方圖:

 之后將采樣的點,帶入到q(z)中,得到一些采樣點對應的density,即$q(X_{i})$,相當於通過采樣的點,再反過來刻畫出PDF,做頻率直方圖:

qz = 1/(np.sqrt(2*np.pi)*sigma)*np.exp(-0.5*(z-1.4)**2/sigma**2)

 

 

之后以x軸對每個采樣點畫一條線,從0到這個采樣點對應的q(x)的值這個線進行均勻采樣,$a \sim Uniform(0,q(X_{i}))$,很明顯如果采樣點對應的p(x)越小,通過這樣得到的均勻分布的采樣點就越不可能

落在p(x)的下方,反之亦然:

k = 2.5 //k表示把整個分布抬高,使得整個proposal 分布能夠cover掉這個p(x)
u = np.random.uniform(low = 0, high = k*qz, size = size)
pz =  0.3*np.exp(-(z-0.3)**2) + 0.7* np.exp(-(z-2.)**2/0.3)

 

 

上面的M就是代碼中的k,結果就是如果得到的u小於對應的p(x)的值,則被接收,否則被拒絕。

****需要主要的是*******

1. 接受率=p(x)/Mq(x) M是來控制均勻分布的高度

2.簡單的分布q(x)總是覆蓋想要得到的分布嗎?我們可以將M設置為非常大的number,Mq(x)可以接收的點,就會很少,大多數的點都被拒絕了,接受率非常小,不夠高效, 所以q(x)的選擇非常重要.

3.p(x)一定要cover掉q(x)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM