Skip to contents

Creates a function that evaluates the cumulative distribution function of an approximation to a distribution obtained by interpolating and extrapolating from a set of quantiles of the distribution.

Usage

make_p_fn(
  ps,
  qs,
  interior_method = "spline_cdf",
  interior_args = list(),
  tail_dist = "norm",
  dup_tol = 1e-06,
  zero_tol = 1e-12
)

Arguments

ps

vector of probability levels

qs

vector of quantile values corresponding to ps

interior_method

method for interpolating the distribution on the interior of the provided qs. This package provides one method for this, "spline_cdf". The user may also provide a custom function; see the details for more.

interior_args

an optional named list of arguments that are passed on to the interior_method

tail_dist

name of parametric distribution for the tails

dup_tol

numeric tolerance for identifying duplicated values indicating a discrete component of the distribution. If there is a run of values where each consecutive pair is closer together than the tolerance, all are labeled as duplicates even if not all values in the run are within the tolerance.

zero_tol

numeric tolerance for identifying values in qs that are (approximately) zero.

Value

a function with arguments q and log.p that can be used to evaluate the approximate cumulative distribution function (or its log) at the points q.

Details

The default interior_method, "spline_cdf", represents the distribution as a sum of a discrete component at any points where there are duplicated qs for multiple different ps and a continuous component that is estimated by using a monotonic cubic spline that interpolates the provided (q, p) pairs as an estimate of the CDF.

Optionally, the user may provide another function that accepts arguments ps, qs, tail_dist, and fn_type (which will be either "d", "p", or "q"), and optionally additional named arguments to be specified via interior_args. This function should return a function with arguments x, log that evaluates the pdf or its logarithm.