(in excel) 随机生成幂律分布

(in excel) randomly generating a power law distribution

我正在尝试使用 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 没有随机生成此数据的内置函数。除了切换软件包之外,有谁知道这样做的方法吗?

感谢您提供的任何帮助。

E

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

给出
p = 1 - (xm/x)^alpha

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

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

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

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

如果您打算在不同的发行版中经常做这类事情,您可能要考虑使用 R,它可以使用 REXcel add-in 从 Excel 直接调用。 R 有大量可以直接从中采样的内置分布(并且它还使用比 Excel 更好的底层随机数生成器)。