2010-12-15 314 views
2

假設我有以下2個隨機變量:組合兩個正常隨機變量

X其中平均= 6和STDEV = 3.5
Y,其中平均= -42和STDEV = 5

我想根據前兩項創建一個新的隨機變量Z,並知道:X發生90%的時間,Y發生10%的時間。

這是很容易計算的Z平均:0.9 * 6 + 0.1 * -42 = 1.2

但是有可能產生在一個單一的功能對於z隨機值? 當然,我可以做類似的規定:

if (randIntBetween(1,10) > 1) 
    GenerateRandomNormalValue(6, 3.5); 
else 
    GenerateRandomNormalValue(-42, 5); 

但我真的想有一個單一的功能,將作爲一個概率密度函數對於這樣一個隨機變量(Z)是沒有必要的正常。

抱歉蹩腳的僞代碼

感謝您的幫助!

編輯:這裏將是一個具體的審訊:

比方說,我們從加5個Z.值consecutives的結果會是什麼與多家高於10結束的概率是多少?

+0

什麼是包裝你作爲一個函數提供的代碼的問題?它會生成兩個隨機數字,並很好地完成您的任務。你在找什麼? – unsym 2010-12-15 20:39:33

+0

嗯,我將有許多變量,如由Z這裏所代表的一個(正常變量的組合)。我找了代表他們的最好方式,因爲我會有這樣的變量一起,最終結合... – ibiza 2010-12-15 20:46:25

回答

4

但我真的很想有一個會爲這樣 一個隨機變量(Z)一 概率密度函數 單一的功能是沒有必要的 正常。

好吧,如果你想要的密度,這就是:

rho = 0.9 * density_of_x + 0.1 * density_of_y 

但是如果你不這樣做1你不能從這個密度採樣)計算其CDF(繁瑣,但並非不可行)2 )反轉它(你需要一個數值求解器)。或者你也可以做rejection sampling(或變體,例如,重要性抽樣)。這是昂貴的,並且很難得到正確的結果。

那麼你應該去的「if」語句(即調用發電機3次),除非你有很強的理由不(使用準隨機序列例如)。

+0

謝謝,請參閱我對該問題所作的評論,我最終必須結合使用變量正常變量......會改變你的答案嗎? – ibiza 2010-12-15 20:47:53

+0

@ibiza:根本沒有。 – 2010-12-15 20:48:24

+2

順便說一句,這個技術術語是「混合分佈」。你的分佈是兩個法線的混合。 – 2010-12-15 21:46:58

0

最直接和一般適用的解決方案是模擬問題:

運行的時候,你有1000000分段函數(僅高數),生成結果的直方圖(他們的分裂成箱,和你ñ劃分每個箱計數(在我的例子1,000,000),這將留下一個近似爲Z的PDF在每一個給定的垃圾桶。

+0

何必呢?這是一個簡單的解決方案(假設正態分佈)明確的問題。 – ja72 2010-12-15 20:54:26

+0

@jalexiou,這聽起來直截了當的決策理論教科書;雖然0.9/0.1 bernoulli試驗在這裏很簡單,但它可能在某種程度上被更復雜的條件所取代 - 已知的解決方案無法工作。 – Assaf 2010-12-15 22:45:56

0

很多這裏未知數,但本質上,你只希望將兩個(或更多)概率函數相加。

對於任何給定的概率函數,您可以通過計算概率曲線下的面積(積分),然後生成一個介於0和該面積之間的隨機數,來計算具有該密度的隨機數。然後沿着曲線移動,直到該區域等於您的隨機數並將其用作您的值。

這個過程可以推廣到任何函數(或兩個或多個函數的總和)。

: 如果你有一個分佈函數f(x),其範圍從0到1。您可以通過計算F(X)的從0到積分計算1基於分佈的隨機數,給你的曲線下面的區域,讓我們稱之爲A.

現在,你生成一個介於0和A之間的隨機數,我們稱之爲數字r。現在你需要找到一個值t,使得從0到t的f(x)的積分等於r。 t是你的隨機數。

該過程可用於任何概率密度函數f(x)。包括兩個(或更多)概率密度函數的總和。

我不知道你的函數是什麼樣子,所以不知道,如果你能來計算所有這一切分析解決方案,但糟糕的情況下,你可以使用數字技術來近似的效果。

+0

這看起來很有希望,但我很難理解它的本質......請介紹一下我的理解能力嗎? – ibiza 2010-12-15 20:43:07

+0

當然! (對不起) – aepryus 2010-12-15 20:54:05

+0

也許從http://en.wikipedia.org/wiki/Probability_density_function和http://en.wikipedia.org/wiki/Cumulative_distribution_function開始。我正在研究這個問題,並給出一個解決方案的數學基礎。我從來沒有嘗試過實施這樣的代碼,在這裏其他人似乎對這個問題有更直接的經驗。 (即亞歷山大) – aepryus 2010-12-15 21:13:27

2

如果一個隨機變量表示爲x =(平均值,STDEV),則下面的代數適用

number * x = (number*mean, number*stdev) 

x1 + x2 = (mean1+mean2, sqrt(stdev1^2+stdev2^2)) 

所以對於X =(MX,SX),Y =(我,SY)的情況下線性組合是

Z = w1*X + w2*Y = (w1*mx,w1*sx) + (w2*my,w2*sy) = 
    (w1*mx+w2*my, sqrt((w1*sx)^2+(w2*sy)^2)) = 
    (1.2, 3.19) 

鏈路:Normal Distribution外表雜項部分中,第1項

PS。對不起,這個奇怪的符號。新的標準偏差通過類似於Pythagorian定理的計算來計算。它是平方和的平方根。

+0

謝謝我會看一看,但我不確定在我的情況下,Z的標準偏差對我來說意義重大,因爲原始結果可能離平均值非常遠(或者緊挨着6或者 - 42)又名:我不希望Z是一個正態分佈的變量,代表另外兩個變量......因爲如果我沒有弄錯,X和Y的組合肯定不是正態分佈的? – ibiza 2010-12-15 20:59:37

+0

該OP不添加正態分佈,他只是選擇一個或另一個基於90%-10%的權重 – 2010-12-15 21:22:11

2

這是分配的形式:

ListPlot[BinCounts[Table[If[RandomReal[] < .9, 
    RandomReal[NormalDistribution[6, 3.5]], 
    RandomReal[NormalDistribution[-42, 5]]], {1000000}], {-60, 20, .1}], 
    PlotRange -> Full, DataRange -> {-60, 20}] 

alt text

這是不正常的,因爲您不添加普通變量,但只選擇一方或另一方以一定的概率。

編輯

這是曲線用於添加5個瓦爾與此分佈:

alt text

上部和下部峯代表單獨服用的分佈之一,中間峯帳戶用於混合。

+0

感謝您的美好視覺觸摸!這將是從Z中獲取的單個值的PDF。:)如果獲得PDF的最佳方式是讓Z表示5個連續的Z值? a.k.a:假設我們從Z中增加5個連續值的結果。以高於10的數字結束的概率是多少? – ibiza 2010-12-15 21:19:57

+0

@ibiza這個答案只是「直觀地」顯示分佈,因爲你已經至少有一個正確的答案來計算它(參見@亞歷山大的答案)。不過,我會詳細說明添加5個變種的圖表:)。 – 2010-12-15 21:26:40

+0

謝謝你的時間,這是非常有幫助的。所以基本上,沒有簡單的方法來計算這個函數(第二個圖表),我應該堅持if語句在我的代碼..? – ibiza 2010-12-15 21:35:06