我正在尝试使用R从自定义pdf生成随机样本。我的pdf是:
我生成了统一的样本,然后尝试将其转换为我的自定义发行版。我通过找到分布的cdf()并将其设置为统一样本()并求解。
为了生成与上述分布的随机样本,得到均匀的样品和求解X在3
我实现了它,R
但没有得到预期的分布。谁能指出我的理解上的缺陷?
nsamples <- 1000;
x <- runif(nsamples);
f <- function(x, u) {
return(3/2*(x-x^3/3) - u);
}
z <- c();
for (i in 1:nsamples) {
# find the root within (0,1)
r <- uniroot(f, c(0,1), tol = 0.0001, u = x[i])$root;
z <- c(z, r);
}
1
必须是编码错误。我不使用R,所以我无法说出确切的错误-但我只是对您的解决方案进行了编码(请注意三次多项式的中间根,该根始终在0到1之间),并且我在样本和预期的分布之间达成了良好的协议。您的寻根器可能有问题吗?您得到的样品怎么了?
—
jpillow 2011年
我尝试了您的代码(顺便说一句,效率不是很高),并且确实获得了预期的分发。
—
Aniko
@jpillow和@Aniko我的错。当我使用
—
阿南德(Anand
nsamples <- 1e6
它的时候很合适。
@Anand一种方式是观察到,允许直接计算X来讲ü。
—
ub
@Anand en.wikipedia.org/wiki/...
—
whuber