我正在尝试使用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没有内置函数来随机生成这些数据。除了切换软件包之外,有没有人知道这样做的方法?
感谢您提供的任何帮助。
电子
答案 0 :(得分:1)
对于(类型I)Pareto分布,如果参数是最小值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 = 2
和alpha = 3
模拟类型1 Pareto分布,您将使用以下公式:
= 2 * RAND()^(-1/3)
如果您要使用不同的发行版进行大量此类操作,您可能需要考虑使用R,可以使用REXcel add-in直接从Excel调用。 R有很多内置的发行版,它可以直接从中采样(并且它还使用比Excel更好的基础随机数发生器)。