[R] Computing a CDF or many quantiles

(Ted Harding) Ted.Harding at nessie.mcc.ac.uk
Wed Sep 10 00:28:53 CEST 2003


On 09-Sep-03 Kevin S. Van Horn wrote:
> Given f, a pdf over a finite interval, is there any existing R function
> that 
> can efficiently tabulate the cumulative distribution function for f, or
> produce all N+1 quantiles of the form i/N?  "Efficiently" here means
> better than doing repeated integrations for each point.

If that's all you want to do, then a very straightfoward approach should
be OK. I illustrate with a truncated normal distribution on [-1,1]:

  x <- (-1)+(0.001*(0:2000));pdf<-dnorm(x); pdf<-pdf/(sum(pdf)*0.001)
  CDF<-cumsum(pdf)*0.001
  plot(x,pdf,ylim=c(0,1),type="l");lines(x,CDF)

Quantiles:
  N=10;e<-CDF[1];
  for(i in (0:10)){
      j<-max(which(CDF<=i/N+e));print(c(x[j],CDF[j]))
  }
  [1] -1.0000000000  0.0003543119
  [1] -0.75000000    0.09992753
  [1] -0.5390000     0.1999932
  [1] -0.3500000     0.2999169
  [1] -0.1720000     0.4003052
  [1]  0.0000000     0.5002921
  [1]  0.1720000     0.6002703
  [1]  0.3490000     0.7000831
  [1]  0.5380000     0.8000068
  [1]  0.7490000     0.9000725
  [1]  1             1
(a bit approximate here owing to not adopting a slightly more subtle
 approach to the first step).

Tabulation should be extremely straightforward.

Is this what you mean?

Best wishes,
Ted.


--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 167 1972
Date: 09-Sep-03                                       Time: 23:28:53
------------------------------ XFMail ------------------------------




More information about the R-help mailing list