2012-06-21 32 views
1

我試圖從兩個對數正態分佈產生隨機值對 - 捕獲的是,其中一個必須小於另一個。例如:僞隨機對數正態值

a1 <- log(47.31) 
b1 <- sqrt(2*log(50.84/47.31)) 
a2 <- log(47.31) 
b2 <- sqrt(2*log(59.34/47.31)) 

x1 <- rlnorm(1,a1,b1) 
x2 <- rlnorm(1,a2,b2) 

我需要一些方法來確保x1 < x2。有沒有什麼光滑的方法來做到這一點?

回答

1

嗯,是的,沒有。最簡單的方法是檢查條件是否滿足,如果不滿足,則重新生成隨機數。但是這樣做的結果是你的變量不再以你開始的統計分佈爲特徵:濾波過程偏向x1低和x2高。但是,如果你對此感到滿意,那麼只需循環,直到滿足所需的條件...理論上這可能需要無數次迭代,但我認爲你不是那麼不幸:)。

如果兩個分佈是相同的,它更簡單:只是交換他們,如果X1> X2

+0

帽子的就是我所擔心的(我認爲他們是不相等的!)。我一直在使用一個循環,但這一步正處於仿真階段,所以超過60000次迭代變得非常慢。謝謝,雖然:) – user1445246

+0

是的 - 希望兩個分佈是這樣的,x1 x1。 – djconnel

+0

實際上,你可以做得更好......如果你通過分析確定x1的累積概率分佈,那麼你可以先選擇x1,然後用它的原始概率分佈選擇x2,直到x2> x1 ...或者通過分析確定條件給定x1 ...的x2的概率分佈,但這些可能是非正常的。通常,讓計算機運行一段時間比花費太多時間進行容易出錯的微積分更好! – djconnel