Calculate a quantile from a distribution function
cdf2quantile.RdNumerically calculate a quantile from a distribution function.
Arguments
- p
- a number in the interval (0,1). 
- cdf
- cumulative distribution function, a function. 
- interval
- interval in which to look for the root, see Details. 
- lower
- lower end point of the interval. 
- upper
- upper end point of the interval. 
- ...
- any further arguments to be passed to the root finding function and the cdf, see Details. 
Details
The quantile, \(q\), is computed numerically as the solution of the equation \(cdf(q)-p=0\).
Function uniroot is used to find the root.  To request higher
  precision, set argument tol.  Other arguments in ... are
  passed on to cdf.
uniroot needs an interval where to look for the root.
  There is a default one, which is extended automatically if it does not
  contain the quantile. This assumes that argument cdf is an
  increasing function (as it should be).
To override the default interval, use argument interval (a
  vector of two numbers) or lower and/or upper. This may
  be necessary if the support of the distribution is not the whole real
  line and cdf does not cope with values outside the support of
  the distribution.
Examples
cdf2quantile(0.95, pnorm)
#> [1] 1.644851
cdf2quantile(0.05, pexp)   # support [0,Inf) is no problem for
#> [1] 0.05129361
cdf2quantile(0.05, plnorm) # for built-in distributions.
#> [1] 0.1930405
## default predicision is about 4 digits after decimal point
cdf2quantile(0.95, pnorm, mean = 3, sd = 1)
#> [1] 4.644829
cdf2quantile(0.05, pnorm, mean = 3, sd = 1)
#> [1] 1.355143
qnorm(c(0.95, 0.05), mean = 3, sd = 1)
#> [1] 4.644854 1.355146
## request a higher precision:
cdf2quantile(0.05, pnorm, mean = 3, sd = 1, tol = 1e-8)
#> [1] 1.355146
cdf2quantile(0.05, pnorm, mean = 3, sd = 1, tol = 1e-12)
#> [1] 1.355146
## see also examples for plotpdf()