search for: icmf

Displaying 1 result from an estimated 1 matches for "icmf".

Did you mean: icm
2007 Sep 04
2
Efficient sampling from a discrete distribution in R
...'t bring back anything. So, here's my first attempt at a solution. I'm hoping someone here knows of a more efficient way. # Sample from a discrete distribution with given probability mass function rdiscrete = function(size, pmf) { stopifnot(length(pmf) > 1) cmf = cumsum(pmf) icmf = function(p) { min(which(p < cmf)) } ps = runif(size) sapply(ps, icmf) } test.rdiscrete = function(N = 10000) { err.tol = 6.0 / sqrt(N) xs = rdiscrete(N, c(0.5, 0.5)) err = abs(sum(xs == 1) / N - 0.5) stopifnot(err < err.tol) list(e = err, xs = xs) } Thanks, Issac