Learn R Programming

DPQ (version 0.5-3)

pnt: Non-central t Probability Distribution - Algorithms and Approximations

Description

Compute different approximations for the non-central t-Distribution cumulative probability distribution function.

Usage



pntR      (t, df, ncp, lower.tail = TRUE, log.p = FALSE,
           use.pnorm = (df > 4e5 ||
                        ncp^2 > 2*log(2)*(-.Machine$double.min.exp)),
                                          itrmax = 1000, errmax = 1e-12, verbose = TRUE)
pntR1     (t, df, ncp, lower.tail = TRUE, log.p = FALSE,
           use.pnorm = (df > 4e5 ||
                        ncp^2 > 2*log(2)*(-.Machine$double.min.exp)),
                                          itrmax = 1000, errmax = 1e-12, verbose = TRUE)

pntP94 (t, df, ncp, lower.tail = TRUE, log.p = FALSE, itrmax = 1000, errmax = 1e-12, verbose = TRUE) pntP94.1 (t, df, ncp, lower.tail = TRUE, log.p = FALSE, itrmax = 1000, errmax = 1e-12, verbose = TRUE)

pnt3150 (t, df, ncp, lower.tail = TRUE, log.p = FALSE, M = 1000, verbose = TRUE) pnt3150.1 (t, df, ncp, lower.tail = TRUE, log.p = FALSE, M = 1000, verbose = TRUE)

pntLrg (t, df, ncp, lower.tail = TRUE, log.p = FALSE)

pntJW39 (t, df, ncp, lower.tail = TRUE, log.p = FALSE) pntJW39.0 (t, df, ncp, lower.tail = TRUE, log.p = FALSE)

Value

a number for pntJKBf1() and .pntJKBch1().

a numeric vector of the same length as the maximum of the lengths of

x, df, ncp for pntJKBf() and .pntJKBch().

Arguments

t

vector of quantiles (called q in pt(..)).

df

degrees of freedom (\(> 0\), maybe non-integer). df = Inf is allowed.

ncp

non-centrality parameter \(\delta \ge 0\); If omitted, use the central t distribution.

log, log.p

logical; if TRUE, probabilities p are given as log(p).

lower.tail

logical; if TRUE (default), probabilities are \(P[X \le x]\), otherwise, \(P[X > x]\).

use.pnorm

logical indicating if the pnorm() approximation of Abramowitz and Stegun (26.7.10) should be used, which is available as pntLrg().

The default corresponds to R pt()'s own behaviour (which is most probably suboptimal).

itrmax

number of iterations / terms.

errmax

convergence bound for the iterations.

verbose

logical or integer determining the amount of diagnostic print out to the console.

M

positive integer specifying the number of terms to use in the series.

Author

Martin Maechler

Details

pntR1():

a pure R version of the (C level) code of R's own pt(), additionally giving more flexibility (via arguments use.pnorm, itrmax, errmax whose defaults here have been hard-coded in R's C code).

This implements an improved version of the AS 243 algorithm from Lenth(1989);

R's help on non-central pt() says:

This computes the lower tail only, so the upper tail suffers from cancellation and a warning will be given when this is likely to be significant.

and (in ‘Note:’)

The code for non-zero ncp is principally intended to be used for moderate values of ncp: it will not be highly accurate, especially in the tails, for large values.

pntR():

the Vectorize()d version of pntR1().

pntP94(), pntP94.1():

New versions of pntR1(), pntR(); using the Posten (1994) algorithm. pntP94() is the Vectorize()d version of pntP94.1().

pnt3150(), pnt3150.1():

Simple inefficient but hopefully correct version of pntP94..() This is really a direct implementation of formula (31.50), p.532 of Johnson, Kotz and Balakrishnan (1995)

pntLrg():

provides the pnorm() approximation (to the non-central \(t\)) from Abramowitz and Stegun (26.7.10), p.949; which should be employed only for large df and/or ncp.

pntJW39.0():

use the Jennett & Welch (1939) approximation see Johnson et al. (1995), p. 520, after (31.26a). This is still fast for huge ncp but has wrong asymptotic tail for \(|t| \to \infty\). Crucially needs \(b=\)b_chi(df).

pntJW39():

is an improved version of pntJW39.0(), using \(1-b =\)b_chi(df, one.minus=TRUE) to avoid cancellation when computing \(1 - b^2\).

%% \item{\code{pntChShP94()}:}{ .. } %% \item{\code{pntChShP94.1()}:}{ .. }

References

Johnson, N.L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions Vol~2, 2nd ed.; Wiley.
Chapter 31, Section 5 Distribution Function, p.514 ff

Lenth, R. V. (1989). Algorithm AS 243 --- Cumulative distribution function of the non-central \(t\) distribution, Applied Statistics 38, 185--189.

Abramowitz, M. and Stegun, I. A. (1972) Handbook of Mathematical Functions. New York: Dover.
Formula (26.7.10), p.949

See Also

pt, for R's version of non-central t probabilities.

Examples

Run this code
tt <- seq(0, 10, len = 21)
ncp <- seq(0, 6, len = 31)
dt3R   <- outer(tt, ncp, pt, , df = 3)
dt3JKB <- outer(tt, ncp, pntR, df = 3)# currently verbose
stopifnot(all.equal(dt3R, dt3JKB, tolerance = 4e-15))# 64-bit Lnx: 2.78e-16

Run the code above in your browser using DataLab