【问题标题】:Julia, function to replicate "rbinom()" in RJulia,在 R 中复制“rbinom()”的函数
【发布时间】:2021-05-01 12:20:47
【问题描述】:

我已经挖掘并搜索了但没有找到一个例子。我确信 Julia 有一个强大的功能(在基数中?)以给定的概率生成随机二项式(伯努利?)“成功”。我找不到它或弄清楚如何在 Julia 中做相当于:

> rbinom(20,1,0.3)
 [1] 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0

谢谢。 J

【问题讨论】:

  • 一种方法就是写rand(20) .< 0.3
  • 对于输入参数的其他值,例如第二个参数 >1

标签: random julia binomial-cdf bernoulli-numbers


【解决方案1】:

您可以为此使用 Distributions 和 rand 函数。任何分发都可以传递给rand。复制你想要的:

julia> using Distributions

julia> p = Binomial(1, 0.3)   # first arg is number of trials, second is probability of success
Binomial{Float64}(n=1, p=0.3)

julia> rand(p, 20)
20-element Array{Int64,1}:
 0
 1
 1
 0
 1
 0
 0
 1
 0
 1
 1
 1
 0
 0
 1
 0
 1
 0
 0
 1

【讨论】:

  • Julia 是一种比 R 更通用的语言,据我所知,R 基本上是一种统计语言。因此,功能在很大程度上保留在库中。它根本不会损害性能。这是一个深思熟虑的设计选择,在过去的几年里,很多东西都从 Base 中移出。我仍然不会说它非常基础,Base 库有很多内置功能,对某些人来说太多了。
  • 顺便说一句,rand 位于 Base 中,您需要导入的只是二项分布本身。
  • 添加包会增加编译时间。但这也意味着您可以在不需要它们时节省编译时间,而如果它们包含在 Base 中就无法做到这一点。运行时不受影响。
  • 我发现这种方法非常优雅,而不是为来自不同分布的随机抽样提供几十个不同的名称..
  • 是的,对于任何分布,p,您只需使用rand(p)pdf(p)cdf(p)quantile(p) 等,而不需要挖掘每个函数的名称.这一切都非常可组合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2021-02-26
  • 2021-07-18
  • 2021-04-12
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多