(在Excel中)随机产生一个幂律分布
我正在尝试使用Excel模拟一个项目的许多不同的分布types。 现在,我产生了一个正态分布,平均值为35,标准差为3.33。 到现在为止还挺好。
我也想生成一些其他的分布types。
我试过的一个是对数正态分布。 为了得到这个,我使用下面的代码:
=(LOGNORM.INV(RAND(),LN(45^2/SQRT(45^2+3.33^2)),SQRT(LN((45^2+3.33^2)/4.5^2))
它产生了一些输出,但我会欢迎任何人的语法input。
我真正想做的是幂律分布。 据我所知,Excel没有内置函数来随机生成这些数据。 除了切换软件包之外,有没有人知道一个办法吗?
感谢您的任何帮助,您可以提供。
Ë
对于(typesI)帕累托分布,如果参数是最小值xm
和指数alpha
那么cdf由
p = 1 - (xm/x)^alpha
这给出概率p
,即随机variables具有<= x
的值。 这很容易反转,所以你可以使用反向采样生成随机variables,遵循这种分布:
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类帕累托分布,则可以使用以下公式:
= 2 * RAND()^(-1/3)
如果你打算用不同的发行版来做这种事情,你可能要考虑使用R,它可以使用REXcel插件从Excel直接调用。 R有大量的内置分布,它可以直接从样本中抽取(并且它也使用比Excel更好的底层随机数生成器)。