【发布时间】:2016-02-03 16:43:22
【问题描述】:
我的问题与我之前的问题有关Generate random variables from a distribution function using inverse sampling 现在我想使用逆采样从分布函数生成随机变量,但采样应该是有条件的。 例如,如果我的 cdf 的倒数是:
invcdf <- function(y) a2 * log(a1/y - 1) + a3
我使用逆采样生成 10 个 rv 如下:
invcdf(runif(10))
现在,问题是我希望生成的值大于或小于某个值。 我应该如何在随机生成器中引入这个条件?
当我使用它来获得大于 500 的值时:
invcdf(runif(10,500,1e6))
我收到此错误消息: 警告信息: 在 log((a0/y) - 1) 中:产生了 NaN
我已经尝试重复该过程,直到获得满足我的约束的值,但它没有效率!
repeat{
x=invcdf(runif(1))
if(x>100){
break
}
【问题讨论】:
-
为什么这只是
y的功能?a1、a2和a3不应该也是输入吗?它们在哪里定义? -
@Gregor a1、a2 和 a3 是我根据我的数据集估计的参数
标签: r conditional-statements sampling