2010-12-15 134 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