看板 Math 關於我們 聯絡資訊
我念一些數值分析的書,但這部份都只給結果,讓我感到很尷尬, 想請教以下想法是否可行。 均勻分佈 轉 指數分佈 1. 以機率分佈函數做反函式轉換 f(x,λ) = λexp(-λx) = p , for x>=0 -> exp(-λx) = p / λ -> -λx = ln (p / λ) -> x = -ln(p/λ) / λ 避免 ln(0) 發生問題, 故 p 為 (0,1] 之隨機亂數。 2. 以機率累計分佈函式做轉換 F(x,λ) = 1 - exp(-λx) = p', for x>=0 -> (一串推導後) -> x = -ln(1-p') / λ 避免 ln(1-p') = 0, 故 p' 為 [0,1) 之隨機亂數, 令 p = 1-p' = (0,1] 之隨機亂數,化簡成 x = -ln(p) / λ 以此方式推出來後,和我看過的轉換相似但不同 x = -λ * ln(p) 請問這裡是我推錯了嗎? 再請教上述哪種方法可行?或都不可行?或都可行? 若都可行的話,請教是否哪種較好? 均勻分佈 轉 常態分佈 sd : 標準差 , mean : 平均 我一樣是用反函式概念去做,由於累計機率函式用到 erf, 故挑用機率函式做反推,推出來後變成 temp = sqrt{ -2 * ln [ p * sqrt(2*PI*sd*sd) ] } x = +- sd * tmp + mean 要正要負再做一次亂數做決定。 但這個和我看到的差超多 (Box-Miller Method, 請問我該到哪查這方法的推導細節 ?) U , V : [0,1] 均勻亂數 x1 = sqrt(-2 ln(U) ) * cos(2*PI*V) * sd + mean x2 = sqrt(-2 ln(U) ) * sin(2*PI*V) * sd + mean 請教這裡用反函式方式是否合理? 目前似乎沒看到有人以 機率函式 方式做反推, 是我觀念有誤嗎? 謝謝各位先進不吝指教, 感激不盡。 -- If there is no tomorrow, I want to see u last time. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.161 ※ 編輯: EdisonX 來自: 180.177.76.161 (07/25 07:46)
yhliu :設 U~uniform(0,1), 令 X = F^{-1}(U), 則 X~F, 07/25 11:15
yhliu :其中F是機率的(累積)分布函數(distribution funct.) 07/25 11:16
yhliu :要的指數分布 d.f. 是 1-e^{-λx}, 則 F^{-1} 是 07/25 11:17
yhliu :X = -ln(1-U)/λ. 但用 X=-ln(U)/λ 亦可. 因除卻端 07/25 11:19
yhliu :點外, U~uniform(0,1) 則 1-U 亦然. 07/25 11:20
yhliu :若指數分布的 d.f. 寫成 1-e^{-x/λ}, 則 X=-λln(U) 07/25 11:21
yhliu :是所需亂數. 07/25 11:21
yhliu :常態分布的 d.f. 沒有 closed form, 更甭說其反函數. 07/25 11:22
yhliu :至於 Box-Miller method, U, V 是 i.i.d. U(0,1) 亂 07/25 11:23
yhliu :以 Box-Miller 公式轉換出來的兩個新變數的分布, 請 07/25 11:24
yhliu :利用雙變數轉換公式驗算一下即知. 07/25 11:24
EdisonX :謝謝 :) 07/25 18:54
EdisonX :請教,雙變數轉換是 ??? 07/25 19:00
sneak : 其中F是機率的(累積) https://muxiv.com 08/13 16:59
sneak : 常態分布的 d.f. https://daxiv.com 09/17 14:55