[Rd] pt inaccurate when x is close to 0 (PR#9945)

jerry.lewis at biogenidec.com jerry.lewis at biogenidec.com
Fri Feb 15 16:20:07 CET 2008


While I agree that the reported results from Mathematica have only 10-13 
correct digits, that does not mean that pt() in R is any better for these 
calculations.  For instance the following three calculations are 
mathematically equivalent, but pt() disagrees at the 13th figure in R 
v2.6.2
  pt(1e-4,13)
  pf(1e-8,1,13)/2+0.5
  pbeta(1/(1+13/1e-8),.5,6.5)/2+0.5
Using 1/(1+n/x^2) and reversing the shape parameters avoids the accuracy 
loss that Thomas Lumley was concerned about.

The following reference values for pt(1e-4,1:100) were computed in Maple 
to 400 figures and then rounded to 17.  To 17 figures, there was no 
difference in the results whether I used the exact value of 10^(-4) or the 
exact binary double precision approximation of 7378697629483821*2^(-66). 
Compared to these reference values, log relative errors (LRE, essentially 
the number of correct figures) for pt ranged from 10.7 to 13.4, while
  pf(1e-8,1,df)/2+0.5
and
  pbeta(1/(1+df/1e-8),.5,df/2)/2+0.5
agreed exactly with Maple, except for 21 and 90 df, where the LRE was 
15.65.  Clearly it would be quite easy to improve pt() for small values of 
x.


Jerry W. Lewis
Lead Statistician
Biogen Idec
Cambridge, MA  USA


z<-c(0.50003183098851228, 0.50003535533897094, 0.50003675525961311, 
0.50003749999992188, 0.50003796066890633, 0.50003827327715657, 
0.50003849914500990, 0.50003866990202363, 0.50003880349081531, 
0.50003891083832527, 0.50003899897563476, 0.50003907263045176, 
0.50003913509812855, 0.50003918874550927, 0.50003923531621426, 
0.50003927612297732, 0.50003931217293135, 0.50003934425160310, 
0.50003937298066018, 0.50003939885850220, 0.50003942228935944, 
0.50003944360452316, 0.50003946307808180, 0.50003948093875281, 
0.50003949737889518, 0.50003951256145633, 0.50003952662538506, 
0.50003953968989187, 0.50003955185783298, 0.50003956321842127, 
0.50003957384941549, 0.50003958381890103, 0.50003959318674852, 
0.50003960200581637, 0.50003961032294799, 0.50003961817980360, 
0.50003962561355779, 0.50003963265748728, 0.50003963934146876, 
0.50003964569240221, 0.50003965173457262, 0.50003965748996017, 
0.50003966297850729, 0.50003966821834945, 0.50003967322601522, 
0.50003967801660046, 0.50003968260392016, 0.50003968700064152, 
0.50003969121840071, 0.50003969526790563, 0.50003969915902671, 
0.50003970290087718, 0.50003970650188431, 0.50003970996985278, 
0.50003971331202108, 0.50003971653511200, 0.50003971964537768, 
0.50003972264864014, 0.50003972555032763, 0.50003972835550734, 
0.50003973106891495, 0.50003973369498129, 0.50003973623785651, 
0.50003973870143192, 0.50003974108935987, 0.50003974340507184, 
0.50003974565179484, 0.50003974783256646, 0.50003974995024854, 
0.50003975200753972, 0.50003975400698688, 0.50003975595099569, 
0.50003975784184024, 0.50003975968167193, 0.50003976147252762, 
0.50003976321633717, 0.50003976491493036, 0.50003976657004330, 
0.50003976818332434, 0.50003976975633955, 0.50003977129057782, 
0.50003977278745549, 0.50003977424832079, 0.50003977567445783, 
0.50003977706709040, 0.50003977842738546, 0.50003977975645637, 
0.50003978105536601, 0.50003978232512953, 0.50003978356671702, 
0.50003978478105603, 0.50003978596903380, 0.50003978713149950, 
0.50003978826926618, 0.50003978938311274, 0.50003979047378564, 
0.50003979154200064, 0.50003979258844427, 0.50003979361377541, 
0.50003979461862660)
	[[alternative HTML version deleted]]



More information about the R-devel mailing list