Approximation to the inverse normal distribution function.
qnorm.ap*
approximate the normal quantile function. They
compute x
such that P(x) = Prob(X <= x) = p
.
qnorm.app3(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qnorm.app4(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qnorm.ap16(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
p |
vector of probabilities. |
mean |
vector of means. |
sd |
vector of standard deviations. |
log.p |
logical; if TRUE, probabilities p are given as log(p). |
lower.tail |
logical; if TRUE (default), probabilities are P(X <= x), otherwise, P(X > x). |
qnorm.ap*
gives the quantile function for the different approximations.
If p <= 0
or p >= 1
, then NA will be returned.
If p
is very close to 1, a serious loss of significance may be
incurred in forming c := 1 - p
, resulting in p = 0
. In
this case c
should be derived, if possible, directly (i.e. not
by subtracting p
from 1) and evaluate
qnorm(p,...,lower.tail=B)
as qnorm(c,...,lower.tail = (B==FALSE))
.
qnorm.ap16
is the approximation used in qnorm
. The others have an absolute error < 10^{-3} and 10^{-4}.
Christian W. Hoffmann <christian@echoffmann.ch>
qnorm.app3
and qnorm.app4
: Abramowitz and Segun, Dover,
1968, formulae 26.2.22 and 26.2.23,
qnorm.ap16
: Wichura, M. J., 1988. Algorithm AS 241: The Percentage Points of the
Normal Distribution. Applied Statistics 37, 477-484.
prec <- function(x,y,z=y) max(abs((x-y)/z)) # relative precision x2 <- -0.6744897501960817; p2 <- 0.25 x0 <- -3.090232306167814; p0 <- 0.001 xm <- -9.262340089798408; pm <- 1.0e-20 x <- c((-100:0)/10,x2,x0,xm) p <- pnorm(x) x3 <- qnorm.app3(p) x4 <- qnorm.app4(p) x1 <- qnorm.ap16(p) # Check relative precision of approximations prec(x,x3,1) # 0.002817442 prec(x,x4,1) # 0.0004435874 prec(x,x1,1) # 0.1571311 why so bad ? prec(x,qnorm(p),1) # 1.776357e-15 # Special values prec(qnorm.app3(p2),x2) # 0.004089976 prec(qnorm.app3(p0),x0) # 0.0007736497 prec(qnorm.app3(pm),xm) # 7.29796e-06 prec(qnorm.app4(p2),x2) # 0.0004456853 prec(qnorm.app4(p0),x0) # 9.381806e-05 prec(qnorm.app4(pm),xm) # 4.151165e-05 prec(qnorm.ap16(p2),x2) # 0 prec(qnorm.ap16(p0),x0) # 2.874148e-16 prec(qnorm.ap16(pm),xm) # 0.01211545
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.