R

找到一種方法來模擬這個分佈的隨機數

  • February 6, 2019

我正在嘗試在 R 中編寫一個程序,該程序模擬具有累積分佈函數的分佈中的偽隨機數:

F(x)=1exp(axbp+1xp+1),x0

在哪裡 a,b>0,p(0,1)

我嘗試了逆變換採樣,但逆變換似乎無法解析解。如果您能提出解決此問題的方法,我會很高興

這個練習有一個簡單的(如果我可以補充的話,優雅的)解決方案:因為 1F(x) 看起來像兩個生存分佈的乘積: $$ (1-F(x))=\exp\left{-ax-\frac{b}{p+1}x^{p+1}\right}=\underbrace{\exp\left{-ax\right}}{1-F_1(x)}\underbrace{\exp\left{-\frac{b}{p+1}x^{p+1}\right}}{1-F_2(x)} $F$

X=\min{X_1,X_2}\qquad X_1\sim F_1,,X_2\sim F_2 $$ 在這種情況下 F1 是指數 E(a) 分佈和 F2 是個 1/(p+1) - 指數的冪 E(b/(p+1)) 分配。

相關的 R 代碼非常簡單

x=pmin(rexp(n,a),rexp(n,b/(p+1))^(1/(p+1))) #simulating an n-sample

它絕對比反pdf和accept-reject分辨率快得多:

> n=1e6
> system.time(results <- Vectorize(simulate,"prob")(runif(n)))
utilisateur     système      écoulé 
   89.060       0.072      89.124 
> system.time(x <- simuF(n,1,2,3))
utilisateur     système      écoulé 
    1.080       0.020       1.103 
> system.time(x <- pmin(rexp(n,a),rexp(n,b/(p+1))^(1/(p+1))))
utilisateur     système      écoulé 
    0.160       0.000       0.163 

毫不奇怪的完美契合:

在此處輸入圖像描述

引用自:https://stats.stackexchange.com/questions/391054