1

我正在尝试使用 Excel 为项目模拟多种不同的分布类型。现在,我生成了一个平均值为 35、标准差为 3.33 的正态分布。到目前为止,一切都很好。

我还想生成一些其他分布类型。

我尝试过的一个是对数正态。为此,我使用以下代码:

=(LOGNORM.INV(RAND(),LN(45^2/SQRT(45^2+3.33^2)),SQRT(LN((45^2+3.33^2)/4.5^2))

它产生一些输出,但我欢迎任何人对语法的输入。

我真正想做的是幂律分布。据我所知,Excel 没有内置函数来随机生成这些数据。除了切换软件包之外,有谁知道这样做的方法?

感谢您的任何帮助,您可以提供。

4

1 回答 1

2

对于(I 型)帕累托分布,如果参数是最小值xm和指数alpha,则 cdf 由下式给出

p = 1 - (xm/x)^alpha

这给出了p随机变量取值 <=的概率x。这很容易反转,因此您可以使用反向采样来生成遵循该分布的随机变量:

x = xm/(1-p)^(1/alpha) = xm*(1-p)^(-1/alpha)

如果p在 [0,1] 上是均匀的,那么 也是如此1-p,所以在上面你可以用它RAND()来模拟 1/p。xm = 2因此,在 Excel 中,如果您想用和模拟 1 型帕累托分布alpha = 3,您可以使用以下公式:

= 2 * RAND()^(-1/3)

如果您要使用不同的发行版做很多此类事情,您可能需要考虑使用 R,它可以使用REXcel 插件直接从 Excel 中调用。R 有大量的内置分布,它可以直接从中采样(而且它还使用比 Excel 更好的底层随机数生成器)。

于 2017-05-05T13:54:42.467 回答