假设我有一组我怀疑来自同一分布的数字.
set.seed(20130613)
x <- rcauchy(10)
Run Code Online (Sandbox Code Playgroud)
我想要一个从同一个未知分布中随机生成数字的函数.我想到的一种方法是创建一个density对象,然后从中获取CDF并获取随机统一变量的逆CDF (参见Wikipedia).
den <- density(x)
#' Generate n random numbers from density() object
#'
#' @param n The total random numbers to generate
#' @param den The density object from which to generate random numbers
rden <- function(n, den)
{
diffs <- diff(den$x)
# Making sure we have equal increments
stopifnot(all(abs(diff(den$x) - mean(diff(den$x))) < 1e-9))
total <- sum(den$y)
den$y <- den$y / total
ydistr <- cumsum(den$y)
yunif <- runif(n)
indices <- sapply(yunif, …Run Code Online (Sandbox Code Playgroud)