【问题标题】:R draw a random number from some distribution [closed]R从某个分布中抽取一个随机数[关闭]
【发布时间】:2014-11-16 22:30:22
【问题描述】:

假设我知道一个分布的 pdf,比如 f(x)。在 R 中,如何从这个分布中抽取一个随机数。谢谢。

【问题讨论】:

  • 对于经常遇到的发行版(例如 Normal),存在以“r”开头的命令(例如 rnorm())从该发行版中提取。有关更多信息,请参阅here。另请注意,存在为其他发行版提供类似命令的软件包。
  • 这不是一个众所周知的发行版
  • 我不知道为什么这个问题被否决了,这是一个非常有效的问题
  • rejection sampling 是下面@ECII 的逆变换采样示例的替代方案。
  • thisthisthisthis

标签: r random sampling


【解决方案1】:

有几种方法。其中之一是 Inverse transform sampling 。如果您知道任何分布的 PDF(x),则可以计算 CDF(x)(积分)。 CDF 始终为 [0,1]。你是这样工作的:

  1. 生成一个随机数u[0,1]。
  2. 求解x的CDF(x)=u
  3. x 是所需分布的随机数
  4. 重复。

更多信息和R代码见这里http://blog.quantitations.com/tutorial/2012/11/20/sampling-from-an-arbitrary-density/

【讨论】:

    【解决方案2】:

    对于大多数发行版,您都有(runif 或 rbeta)之类的函数,我们称它为 vanilla。 当您的分布以某种方式与普通分布相关联时,实际上您的 f(x) 图形可以完全位于普通分布图形之下,您可以使用接受-拒绝方法。

    http://www.inference.phy.cam.ac.uk/tcs27/talks/sampling.html#rejs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多