Thanks, Bill & Duncan. Actually I tried values which are inside the defined region. please find below the extracted script
> xnew<-rlnorm(seq(0,4000000,10000), meanlog=9.7280055, sdlog=2.0443945) > f <- ecdf(xnew) > y <- f(x) > y1<-f(2000000) ## finding y for a given xnew value of 2000000 > y1 [1] 0.9950125 ## It works. > inv_ecdf <- function(f){ + xnew <- environment(f)$xnew + y <- environment(f)$y + approxfun(y, xnew) + } ## Interpolation to find xnew for a known y value. > g <- inv_ecdf(f) > g(0.9950125) [1] NA > g(0.99) ## It doesn't [1] NA > g(0.5) [1] NA ## again > g(0.2) [1] NA ## and again I am stuck here. Any help is appreciated. Mano. On Fri, Nov 1, 2013 at 2:48 AM, William Dunlap <wdun...@tibco.com> wrote: > > it gives 'NA' (for whatever y value). > > What 'y' values were you using? inf_f maps probabilities (in [0,1]) to > values in the range of the orginal data, x, but it will have problems for > a probability below 1/length(x) because the original data didn't tell > you anything about the ecdf in that region. > > > X <- c(101, 103, 107, 111) > > f <- ecdf(X) > > inv_f <- inv_ecdf(f) > > inv_f(seq(0, 1, by=1/8)) > [1] NA NA 101 102 103 105 107 109 111 > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > > > > -----Original Message----- > > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] > On Behalf > > Of Manoranjan Muthusamy > > Sent: Thursday, October 31, 2013 6:18 PM > > To: Rui Barradas > > Cc: r-help@r-project.org > > Subject: Re: [R] Extracting values from a ecdf (empirical cumulative > distribution function) > > curve > > > > Thank you, Barradas. It works when finding y, but when I tried to find x > > using interpolation for a known y it gives 'NA' (for whatever y value). I > > couldn't find out the reason. Any help is really appreciated. > > > > Thanks, > > Mano > > > > > > On Thu, Oct 31, 2013 at 10:53 PM, Rui Barradas <ruipbarra...@sapo.pt> > wrote: > > > > > Hello, > > > > > > As for the problem of finding y given the ecdf and x, it's very easy, > just > > > use the ecdf: > > > > > > f <- ecdf(rnorm(100)) > > > > > > x <- rnorm(10) > > > y <- f(x) > > > > > > If you want to get the x corresponding to given y, use linear > > > interpolation. > > > > > > inv_ecdf <- function(f){ > > > x <- environment(f)$x > > > y <- environment(f)$y > > > approxfun(y, x) > > > } > > > > > > g <- inv_ecdf(f) > > > g(0.5) > > > > > > > > > Hope this helps, > > > > > > Rui Barradas > > > > > > Em 31-10-2013 12:25, Manoranjan Muthusamy escreveu: > > > > > >> Hi R users, > > >> > > >> I am a new user, still learning basics of R. Is there anyway to > extract y > > >> (or x) value for a known x (or y) value from ecdf (empirical > cumulative > > >> distribution function) curve? > > >> > > >> Thanks in advance. > > >> Mano. > > >> > > >> [[alternative HTML version deleted]] > > >> > > >> ______________________________**________________ > > >> R-help@r-project.org mailing list > > >> https://stat.ethz.ch/mailman/**listinfo/r- > > help<https://stat.ethz.ch/mailman/listinfo/r-help> > > >> PLEASE do read the posting guide http://www.R-project.org/** > > >> posting-guide.html <http://www.R-project.org/posting-guide.html> > > >> and provide commented, minimal, self-contained, reproducible code. > > >> > > >> > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.