[R] Inverse fuction of ecdf
    Duncan Murdoch 
    murdoch at stats.uwo.ca
       
    Mon Jan 29 00:23:44 CET 2007
    
    
  
On 1/28/2007 5:41 PM, Geoffrey Zhu wrote:
> Hi Everyone,
> 
> I want to generate some random numbers according to some empirical
> distribution. Therefore I am looking for the inverse of an empirical
> cumulative distribution function. I haven't found any in R. Can anyone
> give a pointer?
sample() works fine if you have a sample to start from.  If you really 
need to start from an ecdf, you could generate x and prob args to 
sample() by looking inside the ecdf object.  For example:
x <- rbinom(100, 100, 0.2)
e <- ecdf(x)
Now either of these should give you what you want.
size <- 1000
sample(x, size, replace=TRUE)
or
vals <- get("x", environment(e))
probs <- diff(c(0, get("y", environment(e))))
sample(vals, size, replace=TRUE, prob=probs)
Duncan Murdoch
    
    
More information about the R-help
mailing list