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

Random number generation with Log-logistic and Burr distributions

我正在尝试从真实数据生成分布。我使用 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 找不到解决方案或我使用不正确) .

非常感谢任何建议(我的博士论文需要基于真实数据进行模拟)。

先谢谢你

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 = α 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 表达的。约定根据 wiki