【问题标题】:(in excel) randomly generating a power law distribution(在 excel 中)随机生成幂律分布
【发布时间】:2017-05-02 18:54:24
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • “幂律分布”是什么意思?它似乎不对应于明确定义的分布,例如 beta 分布,而是似乎是一个分布族。换句话说——有不同的幂律分布。你问的是哪一种?
  • 您好约翰,感谢您的回复。我会说帕累托分布(类型 1)可能最适合我想要生成的东西。我基本上试图做的是捕捉长尾的效果,所以,从这个意义上说,幂律家族的任何成员都可能工作。虽然理想情况下我想要一个可能的分布函数而不是累积分布函数。

标签: excel random distribution power-law


【解决方案1】:

对于(类型 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 更好的底层随机数生成器)。

【讨论】:

  • 约翰,非常感谢您的评论。这非常有帮助。我从来没有尝试过R(现在一直想学习)。再次感谢。我非常感谢您抽出宝贵的时间。我今天会试试这个。
  • 很高兴为您提供帮助。如果答案对您有用,您可以随时将其设为“已接受”。
  • 我一直在玩你推荐的类型 1 幂律的构造。它们形成正确的形状,一切看起来都很好。然而,我注意到,对于模拟数据的方程结构,意味着较小的指数 (alpha) 会导致更大或更明显的分布。从数学上讲,我理解为什么,例如,因为 -1/0.5 比 -1/3 大,但是认为较小的 alpha 会导致更明显的分布有点违反直觉。您是否碰巧知道一个很好的资源来解释为什么会这样?谢谢!
  • 我对分布不是很熟悉,所以我对指数的含义缺乏直觉。也许这可以阐明这一点:en.wikipedia.org/wiki/Pareto_index(尽管这是专门针对经济应用的,但它也可能有助于非经济解释)。
  • 谢谢,约翰。我会看一下,看看我是否无法理解这里的含义。当我这样做时,我会告诉你。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 2011-05-15
  • 2017-12-28
  • 1970-01-01
相关资源
最近更新 更多