Produces quantiles corresponding to the given probabilities with configurable distribution parameters.
## S3 method for class 'Distribution'quantile(x, probs = seq(0,1,0.25), with_params = list(),..., .start =0)
Arguments
x: A Distribution.
probs: Quantiles to compute.
with_params: Optional list of distribution parameters. Note that if x$has_capability("quantile") is false, with_params is assumed to contain only one set of parameters.
...: ignored
.start: Starting value if quantiles are computed numerically. Must be within the support of x.
Returns
The quantiles of x corresponding to probs with parameters with_params.
Details
If x$has_capability("quantile") is true, this returns the same as x$quantile(probs, with_params = with_params). In this case, with_params may contain separate sets of parameters for each quantile to be determined.
Otherwise, a numerical estimation of the quantiles is done using the density and probability function. This method assumes with_params to cantain only one set of parameters. The strategy uses two steps:
Find the smallest and largest quantiles in probs using a newton method starting from .start.
Find the remaining quantiles with bisection using stats::uniroot().
Examples
# With quantiles availabledist <- dist_normal(sd =1)qqs <- quantile(dist, probs = rep(0.5,3), with_params = list(mean =1:3))stopifnot(all.equal(qqs,1:3))# Without quantiles availabledist <- dist_erlangmix(shapes = list(1,2,3), scale =1.0)my_probs <- c(0,0.01,0.25,0.5,0.75,1)qqs <- quantile( dist, probs = my_probs, with_params = list(probs = list(0.5,0.3,0.2)), .start =2)all.equal(dist$probability(qqs, with_params = list(probs = list(0.5,0.3,0.2))), my_probs)# Careful: Numerical estimation of extreme quantiles can result in out-of-bounds values.# The correct 0-quantile would be 0 in this case, but it was estimated < 0.qqs[1L]