[R] workaround for numeric problems
Ott Toomet
otoomet at ut.ee
Sun Jul 2 12:00:10 CEST 2006
Dear R-people,
I have to compute
C - -(pnorm(B)*dnorm(B)*B + dnorm(B)^2)/pnorm(B)^2
This expression seems to be converging to -1 if B approaches to -Inf
(although I am unable to prove it). R has no problems until B equals
around -28 or less, where both numerator and denominator go to 0 and
you get NaN. A simple workaround I did was
C <- ifelse(B > -25,
-(pnorm(B)*dnorm(B)*B + dnorm(B)^2)/pnorm(B)^2,
-1)
It works well for me (32bit intel/linux platform). But what about
other processors/platforms/compilator options? Are there any better
ways for finding out at which values the numerical problems start?
Can one derive something from .Machine$double.eps (but what about the
precison of dnorm and other analytic functions)?
Thanks in advance,
Ott
More information about the R-help
mailing list