从(任意)连续概率分布模拟

For*_*ner 2 random r distribution

例如,对于在实线上定义的归一化概率密度函数

p(x) = (2/pi) * (1/(exp(x)+exp(-x))
Run Code Online (Sandbox Code Playgroud)

(这只是一个例子;解决方案应该适用于我们可以定义的任何连续PDF)R中是否有包来模拟分布?我知道R的内置模拟器适用于许多发行版.

我可以在一组分位数上数值计算逆累积分布函数,将它们存储在一个表中,并使用该表从均匀变量映射到所需分布的变量.是否已经有一个包这样做?

jlh*_*ard 6

这是使用distr专为此设计的包的一种方式.

library(distr)
p    <- function(x) (2/pi) * (1/(exp(x)+exp(-x)))  # probability density function
dist <-AbscontDistribution(d=p)  # signature for a dist with pdf ~ p
rdist <- r(dist)                 # function to create random variates from p

set.seed(1)                      # for reproduceable example
X <- rdist(1000)                 # sample from X ~ p
x <- seq(-10,10, .01)
hist(X, freq=F, breaks=50, xlim=c(-5,5))
lines(x,p(x),lty=2, col="red")
Run Code Online (Sandbox Code Playgroud)

你当然也可以使用评论中任何一个链接中描述的方法来做到这一点.