r语言 - 使用对数逻辑和毛刺分布生成随机数



我正在尝试从真实数据生成分布。我使用 R 包 tdistrplus 来获取发行版的参数。R包的发行版是:Pareto,Lognormal,Log-Logistic和Burr。但是,我在NetLogo中找不到这些发行版。我需要为他们编写一个函数。我已经在其他论坛中找到了帕累托和对数正态分布:

;; 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

但是,我找不到对数逻辑和伯尔分布完成的函数或随机数表达式,只有我不知道如何表示 X 的概率密度函数(Matchad 找不到解决方案或我使用不正确(。

我将不胜感激任何建议(基于真实数据进行模拟对于我的博士论文是必要的(。

提前谢谢你

Wrt log-logistics,反向 CDF 方法应该可以正常工作。遵循维基的惯例

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

我迅速研究了毛刺的采样 - 也可以通过反向 CDF 完成。关注维基

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 = α q1/β

毛刺

CDF(x | c, k( = 1 - (1 + xc(-k

反向 CDF 表示使用 样品x

x =CDF-1(r(,其中r是随机均匀 U(0,1(

(1 + xc(-k= r

(1 + xc( = (1/r(1/k

x = ((1/r(1/k - 1(1/c

请检查我的数学,在代码中,所有这些幂都是通过expln表示的。约定根据维基

最新更新