Netlogo - 从 Beta-Pert 分布中抽样

Posted

技术标签:

【中文标题】Netlogo - 从 Beta-Pert 分布中抽样【英文标题】:Netlogo - Sampling from a Beta-Pert Distribtuion 【发布时间】:2015-08-28 17:13:51 【问题描述】:

我发布这个部分是为了回答一个问题,部分是为了让其他人以后可能会找到它并避免他们头疼。

我正在尝试按照Epix Analytics 中的公式在 NetLogo 中创建 beta-pert 分发版

我在 Beta 分发 wiki 页面上使用 gamma distbutiotn 的转换创建了一个 Beta(Alpha1, alpha2) 分发:

我创建的代码是:

to pert

 let mu ((a + 4 * b + c) / 6) 

 let alpha1 ((mu  - a ) * (2 * b - a - c)) / ((b - mu) * (c - a))

 let alpha2 (alpha1 * (c - mu)) / (mu - a)

 let x (random-gamma alpha1 1)

 let y (random-gamma alpha2 1)

 let beta-output  (x / (x + y))

 let output beta-output * (c - a) + a

 show output
end

我的问题是关于***页面从 Gamma 分布到 Beta 分布的转换。它有一个 theta 作为伽马分布的第二部分,但从未定义那是什么。我把它当作占位符,只要 X 和 Y 的 theta 相同,就不会影响结果。我玩过不同的 theta 值,分布没有明显变化。这是一个正确的假设吗?

【问题讨论】:

【参考方案1】:
to-report random-pert [#minval #likeval #maxval]
  ;use pert params to draw from a beta distribution
  if not (#minval <= #likeval and #likeval <= #maxval) [error "wrong argument ranking"]
  if (#minval = #likeval and #likeval = #maxval) [report #minval] ;;handle trivial inputs
  let pert-var 1. / 36
  let pert-mean (#maxval + 4 * #likeval - 5 * #minval) / (6 * (#maxval - #minval))
  let temp pert-mean * (1 - pert-mean) / pert-var
  let alpha1 pert-mean * (temp - 1)
  let alpha2 (1 - pert-mean) * (temp - 1)
  let x1 random-gamma alpha1 1
  let x2 random-gamma alpha2 1
  report (x1 / (x1 + x2)) * (#maxval - #minval) + #minval
end

【讨论】:

以上是关于Netlogo - 从 Beta-Pert 分布中抽样的主要内容,如果未能解决你的问题,请参考以下文章

在 NetLogo 中计算特定补丁的海龟航向

设置列表中所有代理的颜色 Netlogo

如何让海龟在 netlogo 中从世界边界反弹

NetLogo 列表和条件修改

使用 Minted 格式化 Netlogo 代码

NetLogo-如何将平衡的化学方程式放入模型中?