On 15-Mar-07 12:09:42, Eli Gurarie wrote: > Hello all, > > I am fishing for some suggestions on efficient ways to make qdist and > pdist type functions from an arbitrary distribution whose probability > density function I've defined myself. > > For example, let's say I have a distribution whose pdf is: > > dRN <- function(x,d,v,s) ># d, v, and s are parameters > return(d/x^2/sv/sqrt(2*pi)*exp(-(d-v*x)^2/2/(sv^2*x^2))) > > this is a legitimate distribution over the reals (though it has a > singularity at x=0) > [...] > It seems surprising that it would be so hard to invert a function that > is perfectly defined! > > Are there packages/functions/algorithms that allow one to manipulate > arbitrarily defined distributions?
Do not be surprised! The Normal distribution function itself, with pdf (1/(sv*sqrt(1*pi)))*exp(-((x - mu)^2)/(2*sv^2)), is perfectly well defined. Yet the literature of computation over decades has presented procedure after procedure for computing the cumulative fucntion, and its inverse, to desired precision. None of these is simple. Indeed, (to use your own word), the Normal distribution is a "nightmare" from this point of view. So being well-defined is no guarantee that computing its p and q values will be a simple or easy problem. And what kind of method is good for a particular distribution will depend strongly on what the distribution is (for instance, whether it has tails which tend rapidly to 0 like the Normal, whether there are good asymptotic formulae, etc.). In the case of the example you give above, the transformation from x to u = 1/x will translate it into a Normal distribution problem, after which you can use (circumspectly ... ) the R functions pnorm and qnorm (which are based on the best from the above literature) to deal with it. But you give it only as an example ... and you are asking for methods for a general user-defined distribution. For the reasons given above, a good general-purpose method is unlikely to exist. With best wishes, Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <[EMAIL PROTECTED]> Fax-to-email: +44 (0)870 094 0861 Date: 15-Mar-07 Time: 13:26:27 ------------------------------ XFMail ------------------------------ ______________________________________________ [email protected] 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.
