(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 = 2
和 alpha = 3
模拟 1 型帕累托分布,您将使用公式:
= 2 * RAND()^(-1/3)
如果您打算在不同的发行版中经常做这类事情,您可能要考虑使用 R,它可以使用 REXcel add-in 从 Excel 直接调用。 R 有大量可以直接从中采样的内置分布(并且它还使用比 Excel 更好的底层随机数生成器)。
我正在尝试使用 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 = 2
和 alpha = 3
模拟 1 型帕累托分布,您将使用公式:
= 2 * RAND()^(-1/3)
如果您打算在不同的发行版中经常做这类事情,您可能要考虑使用 R,它可以使用 REXcel add-in 从 Excel 直接调用。 R 有大量可以直接从中采样的内置分布(并且它还使用比 Excel 更好的底层随机数生成器)。