小编Lyd*_*die的帖子

使用反向采样从分布函数生成随机变量

我有一个特定的密度函数,我想知道密度函数的表达式的随机变量.

例如,密度函数是:

df=function(x) { - ((-a1/a2)*exp((x-a3)/a2))/(1+exp((x-a3)/a2))^2 }
Run Code Online (Sandbox Code Playgroud)

从这个表达式我想生成1000个具有相同分布的随机元素.

我知道我应该使用逆抽样方法.为此,我使用我的PDF的CDF功能,计算如下:

cdf=function(x) { 1 - a1/(1+exp((x-a3)/a2))
Run Code Online (Sandbox Code Playgroud)

我们的想法是生成均匀分布的样本,然后使用我的CDF函数映射它们以获得逆映射.像这样的东西:

random.generator<-function(n) sapply(runif(n),cdf) 
Run Code Online (Sandbox Code Playgroud)

然后用所需数量的随机变量调用它来生成.

random.generator(1000) 
Run Code Online (Sandbox Code Playgroud)

这种方法是否正确?

random r probability-density

7
推荐指数
1
解决办法
2444
查看次数

标签 统计

probability-density ×1

r ×1

random ×1