我正在尝试从实际数据生成分布。我使用R包tdistrplus来获取分布的参数。 R包的分布是:Pareto,Lognormal,Log-Logistic和Burr。但是,我在NetLogo中找不到这些发行版。我需要为它们编写一个函数。我已经在其他论坛中找到了Pareto和Lognormal分布:
;; Pareto distribution (Pareto from R package: tdistrplus)
to-report random-pareto [alpha mm]
report mm / ( random-float 1 ^ (1 / alpha) )
end
;; lognormal distribution (lnorm from R package: tdistrplus)
to-report log-normal [mu sigma]
let beta ln (1 + ((sigma ^ 2) / (mu ^ 2)))
let x exp (random-normal (ln (mu) – (beta / 2)) sqrt beta)
report x
end
但是,我找不到Log-logistic和Burr分布完成的函数或随机数表达式,只有概率密度函数,我不知道如何表达X(Matchad无法找到解决方案,或者我错误地使用它)。 / p>
我很感激任何建议(根据实际数据进行模拟对于我的博士论文是必要的)。
先谢谢你
答案 0 :(得分:2)
Wrt log-logistics,逆CDF方法应该可以正常工作。遵循wiki
的惯例to-report random-loglogistics [alpha beta]
let r random-float 1
let q r/(1-r)
let x alpha exp (ln (q) / beta)
report x
end
我很快调查了Burr的样本 - 也可以通过逆CDF来完成。关注wiki
to-report random-burr [c k]
let r random-float 1
let q exp ( - ln(r) / k) - 1
let x exp ( ln(q) / c )
report x
end
更新
我的NetLogo曾经使用过很久了,所以让我们写一些公式,你可以重写代码。
<强>登入物流强>
CDF(x |α,β)=(x /α)β /(1 +(x /α)β)
反向CDF表示使用
的样本x
x = CDF -1 (r),其中r
是随机均匀U(0,1)
因此,(x /α)β = q = r /(1-r), x =αq 1 /β
<强>伯尔强>
CDF(x | c,k)= 1 - (1 + x c ) -k
反向CDF表示使用
的样本x
x = CDF -1 (r),其中r
是随机均匀U(0,1)
(1 + x c ) -k = r
(1 + x c )=(1 / r) 1 / k
x =((1 / r) 1 / k - 1) 1 / c
请检查我的数学,并在代码中通过exp
和ln
表达所有这些权力。公约根据维基