使用Log-logistic和Burr分布生成随机数

时间:2017-08-09 06:33:22

标签: r random netlogo distribution

我正在尝试从实际数据生成分布。我使用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>

我很感激任何建议(根据实际数据进行模拟对于我的博士论文是必要的)。

先谢谢你

1 个答案:

答案 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

请检查我的数学,并在代码中通过expln表达所有这些权力。公约根据维基