使用 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
请检查我的数学,在代码中所有这些权力都是通过 exp
和 ln
表达的。约定根据 wiki
我正在尝试从真实数据生成分布。我使用 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
请检查我的数学,在代码中所有这些权力都是通过 exp
和 ln
表达的。约定根据 wiki