Netlogo - Beta-Pert Distribtuion的抽样

时间:2015-06-12 15:55:53

标签: distribution netlogo gamma-distribution beta-distribution

我发布此部分内容以便回答某个问题并将其部分解决,以便其他人可能会在以后找到并为他们解决问题。

我正在尝试按照Epix Analytics

中的公式在NetLogo中创建beta-pert分布

enter image description here

我在Beta发布维基页面上使用gamma distbutiotn的转换创建了Beta(Alpha1,alpha2)发行版:

enter image description here

我创建的代码是:

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值,但分布没有明显的变化。这是正确的假设吗?

1 个答案:

答案 0 :(得分: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