Learn R Programming

flexsurv (version 2.3.2)

qgeneric: Generic function to find quantiles of a distribution

Description

Generic function to find the quantiles of a distribution, given the equivalent probability distribution function.

Usage

qgeneric(pdist, p, matargs = NULL, scalarargs = NULL, ...)

Value

Vector of quantiles of the distribution at p.

Arguments

pdist

Probability distribution function, for example, pnorm for the normal distribution, which must be defined in the current workspace. This should accept and return vectorised parameters and values. It should also return the correct values for the entire real line, for example a positive distribution should have pdist(x)==0 for \(x<0\).

p

Vector of probabilities to find the quantiles for.

matargs

Character vector giving the elements of ... which represent vector parameters of the distribution. Empty by default. When vectorised, these will become matrices. This is used for the arguments gamma and knots in qsurvspline.

scalarargs

Character vector naming scalar arguments of the distribution function that cannot be vectorised. This is used for the arguments scale and timescale in qsurvspline.

...

The remaining arguments define parameters of the distribution pdist. These MUST be named explicitly.

This may also contain the standard arguments log.p (logical; default FALSE, if TRUE, probabilities p are given as log(p)), and lower.tail (logical; if TRUE (default), probabilities are P[X <= x] otherwise, P[X > x].).

If the distribution is bounded above or below, then this should contain arguments lbound and ubound respectively, and these will be returned if p is 0 or 1 respectively. Defaults to -Inf and Inf respectively.

Author

Christopher Jackson <chris.jackson@mrc-bsu.cam.ac.uk>

Details

This function is used by default for custom distributions for which a quantile function is not provided.

It works by finding the root of the equation \(h(q) = pdist(q) - p = 0\). Starting from the interval \((-1, 1)\), the interval width is expanded by 50% until \(h()\) is of opposite sign at either end. The root is then found using uniroot.

This assumes a suitably smooth, continuous distribution.

Examples

Run this code

qnorm(c(0.025, 0.975), 0, 1)
qgeneric(pnorm, c(0.025, 0.975), mean=0, sd=1) # must name the arguments

Run the code above in your browser using DataLab