2

假设我有以下 2 个随机变量:

X 其中平均值 = 6 和标准偏差 = 3.5
Y 其中平均值 = -42 和标准偏差 = 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)。

对糟糕的伪代码感到抱歉

谢谢你的帮助!

编辑:这将是一个具体的审讯:

假设我们从 Z 中添加 5 个连续值的结果。以大于 10 的数字结尾的概率是多少?

4

5 回答 5

4

但我真的很想有一个函数作为概率密度函数来处理这样一个不必要的随机变量(Z)。

好的,如果你想要密度,这里是:

rho = 0.9 * density_of_x + 0.1 * density_of_y

但是如果你不这样做,你就不能从这个密度中采样 1)计算它的 CDF(繁琐,但并非不可行) 2)反转它(你需要一个数值求解器)。或者您可以进行拒绝抽样(或变体,例如重要性抽样)。这是昂贵的,而且很难做到正确。

因此,您应该使用“if”语句(即调用生成器 3 次),除非您有非常充分的理由不这样做(例如使用准随机序列)。

于 2010-12-15T20:45:13.253 回答
2

如果随机变量表示为 x=(mean,stdev),则适用以下代数

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

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

所以对于 X = (mx,sx), Y= (my,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 )

链接:正态分布查找杂项部分,第 1 项。

PS。对不起,奇怪的符号。新的标准偏差是通过类似于勾股定理的东西来计算的。它是平方和的平方根。

于 2010-12-15T20:44:58.170 回答
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}]

替代文字

这不是正常的,因为您没有添加正常变量,而只是以一定的概率选择一个或另一个。

编辑

这是添加五个具有此分布的变量的曲线:

替代文字

上峰和下峰代表单独采用其中一种分布,中峰代表混合。

于 2010-12-15T21:13:36.167 回答
0

最直接和最普遍适用的解决方案是模拟问题:

运行分段函数 1,000,000 次(只是很多次),生成结果的直方图(通过将它们分成箱,并将每个箱的计数除以 N(在我的示例中为 1,000,000)。这将使您在每个给定的 bin 处具有 Z 的 PDF的近似值

于 2010-12-15T20:37:53.480 回答
0

这里有很多未知数,但本质上您只是希望将两个(或更多)概率函数相加。

对于任何给定的概率函数,您可以通过计算概率曲线下的面积(积分)然后生成一个介于 0 和该面积之间的随机数来计算具有该密度的随机数。然后沿着曲线移动,直到面积等于您的随机数并将其用作您的值。

然后可以将该过程推广到任何函数(或两个或多个函数的总和)。

详细说明:如果您有一个分布函数 f(x),其范围从 0 到 1。您可以通过计算 f(x) 从 0 到 1 的积分来计算基于分布的随机数,从而为您提供曲线下的面积,我们称它为A。

现在,您生成一个介于 0 和 A 之间的随机数,我们称该数字为 r。现在你需要找到一个值 t,使得 f(x) 从 0 到 t 的积分等于 r。t 是你的随机数。

此过程可用于任何概率密度函数 f(x)。包括两个(或更多)概率密度函数的总和。

我不确定你的函数是什么样子的,所以不确定你是否能够为所有这些计算分析解决方案,但更糟糕的情况是,你可以使用数值技术来近似效果。

于 2010-12-15T20:38:46.537 回答