# Getting high precision values from qnorm in the tail

2 messages
Open this post in threaded view
|
Report Content as Inappropriate

## Getting high precision values from qnorm in the tail

 Hello All I am looking for high precision values for the normal distribution in the tail,(1e-10 and 1 - 1e-10) as the R package that I am using sets any number which is out of this range to these values and then calls the qnorm and qt function. What I have noticed is that the qnorm implementation in R is not symmetric when looking at the tails. This is quite surprising to me, as it is well known that this distribution is symmetric, and I have seen implementations in other languages that are symmetric. I have checked the qt function and it is also not symmetric in the tails. Here are the results from the qnorm function: x       qnorm(x)                qnorm(1-x)              qnorm(1-x) + qnorm(x) 1e-2    -2.3263478740408408     2.3263478740408408      0.0 (i.e < machine epsilon) 1e-3    -3.0902323061678132     3.0902323061678132      0.0 (i.e < machine epsilon) 1e-4    -3.71901648545568       3.7190164854557084  2.8421709430404007e-14 1e-5    -4.2648907939228256     4.2648907939238399  1.014299755297543e-12 1e-10   -6.3613409024040557     6.3613408896974208  -1.2706634855419452e-08 It is quite clear that at a value of x close to 0 or 1, this function breaks down. Yes, in "normal" use this isn't a problem, but I am looking at fringe cases and multiplying small probabilities by very large values, in which case the error (1e-08) becomes a large value. Note: I have tried this with 1-x and with entering the actual number 0.00001 and 0.99999 and the accuracy issue is still there. The questions Firstly, is this a known problem with the qnorm and qt implementations? I could not find anything in the documentation, the algorithm is supposed to be accurate 16 digits for p values from 10^-314 as described in the Algorithm AS 241 paper. Quote from R doc for qnorm: "Wichura, M. J. (1988) Algorithm AS 241: The percentage points of the normal distribution. Applied Statistics, 37, 477–484. which provides precise results up to about 16 digits." If the R code implements the 7 digit version, why does it claim 16 digits? Or is it "accurate" but the original algorithm is not symmetric and wrong? If R does implement both versions of Algorithm AS 241 can I turn the 16 digit version on? Or, is there a more accurate version of qnorm in R? Or, another solution to my problem where I need high precision in the tails for quantile functions. On a side note, I also have this issue with the qt distribution, at a similar level of precision, it is not symmetric, nor precise, but I have not investigated it yet. Also, I've posted this question on stack overflow: http://stackoverflow.com/questions/43362644/getting-high-precision-values-from-qnorm-in-the-tailR version: >version platform       x86_64-w64-mingw32 arch           x86_64 os             mingw32 system         x86_64, mingw32 status major          3 minor          3.2 year           2016 month          10 day            31 svn rev        71607 language       R version.string R version 3.3.2 (2016-10-31) nickname       Sincere Pumpkin Patch Kind regards Sheldon Maze         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel