【发布时间】:2016-05-10 23:22:44
【问题描述】:
我有一个特定的密度函数,我想生成知道密度函数表达式的随机变量。
例如密度函数为:
df=function(x) { - ((-a1/a2)*exp((x-a3)/a2))/(1+exp((x-a3)/a2))^2 }
根据这个表达式,我想生成 1000 个具有相同分布的随机元素。
我知道我应该使用反向采样方法。为此,我使用我的 PDF 的 CDF 函数,计算如下:
cdf=function(x) { 1 - a1/(1+exp((x-a3)/a2))
这个想法是生成均匀分布的样本,然后将它们与我的 CDF 函数进行映射以获得逆映射。像这样的:
random.generator<-function(n) sapply(runif(n),cdf)
然后使用要生成的所需数量的随机变量调用它。
random.generator(1000)
这种方法正确吗?
【问题讨论】:
-
您需要计算或估计CDF的逆。
标签: r random probability-density