Skip to content
Prev 48426 / 63424 Next

infelicity in dlnorm, plnorm

In theory, dlnorm(x, ...) == dnorm(log(x), ...)/x, x>0.


Unfortunately, when sd=0, dlnorm and plnorm return NaN, while dnorm 
returns (if(x != mean)0 else Inf) and pnorm returns (if(x<mean)0 else 
1). [A numerical optimization, maxLik{maxLik}, reported the NaNs for me.]


help('dlnorm') says, "dlnorm is calculated from the definition (in 
?Details?). [pqr]lnorm are based on the relationship to the normal." 
This seems not completely accurate, because plnorm(2, 1, 0) returns NaN, 
while pnorm(log(2), 1, 0) returns 0.


Obviously, this is not very important. However, I felt a need to report it.


Thanks for all you do to make R the great product it is.


Spencer Graves


 > dlnorm(2, 1, 0)
[1] NaN
Warning message:
In dlnorm(2, 1, 0) : NaNs produced
 > dnorm(log(2), 1, 0)/2
[1] 0
 >
 > dlnorm(2, 1, 1)
[1] 0.1902978
 > dnorm(log(2), 1, 1)/2
[1] 0.1902978
 >
 > dlnorm(exp(1), 1, 0)
[1] NaN
Warning message:
In dlnorm(exp(1), 1, 0) : NaNs produced
 > dnorm(1, 1, 0)/exp(1)
[1] Inf
 >
 > sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base