Compute different approximations for the non-central t-Distribution cumulative probability distribution function.
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)
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()
.
vector of quantiles (called q
in pt(..)
).
degrees of freedom (\(> 0\), maybe non-integer). df
= Inf
is allowed.
non-centrality parameter \(\delta \ge 0\); If omitted, use the central t distribution.
logical; if TRUE, probabilities p are given as log(p).
logical; if TRUE (default), probabilities are \(P[X \le x]\), otherwise, \(P[X > x]\).
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).
number of iterations / terms.
convergence bound for the iterations.
logical
or integer determining the amount of
diagnostic print out to the console.
positive integer specifying the number of terms to use in the series.
Martin Maechler
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);
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.
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()}:}{ .. }
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
pt
, for R's version of non-central t probabilities.
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