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 ------------------------------